《深度学习之图像识别:核心技术与案例实战》 ——2 深度学习优化基础
第2章 深度学习优化基础
在第1章中初步介绍了神经网络的发展历史,基于BP的全连接神经网络的优缺点及卷积神经网络(CNN)的基本结构。卷积神经网络可用于一维时间序列的处理,也可以用于二维(如图像)序列的处理,相比于普通的神经网络,CNN将传统的矩阵乘法改为卷积运算,也是其名字的由来。
本章将从以下两个方面展开介绍。
* 2.1节将介绍深度学习的几种主流开源框架的特点及其性能对比。
* 2.2节将介绍深度学习中的优化方法,如正则化等可以防止过拟,是一种有助于提高算法泛化能力的方法。
本章旨在让大家对深度卷积神经网络有一个较为全面的认识,以便为后续章节的学习打下基础。
2.1 深度学习主流开源框架
所谓工欲善其事,必先利其器。深度学习的快速发展及在工业界和学术界的迅速流行离不开3个要素:数据、硬件和框架。
深度学习框架是深度学习的工具,简单来说就是库,例如Caffe、TensorFlow等。深度学习框架的出现,降低了深度学习入门的门槛,开发者不需要进行底层的编码,可以在高层进行配置。目前已有大量深度学习框架被推出,免费提供给开发者学习、使用。
本节将对当前的深度学习开源框架做概述性的介绍,首先给出几种常用框架的参数对比。
如表2.1所示为当前常用框架的几类使用数据对比,如框架的发布时间与维护机构,框架的底层语言及所支持的语言接口等。
没有什么框架是完美的,不同的框架适用的领域也不完全一致,所以如何选择合适的框架也是一个需要探索的过程。总体而言,深度学习框架提供的深度学习组件对于通用的算法非常容易上手。
表2.1 深度学习主流框架参数对比
2.1.1 Caffe简介
Caffe是基于C++语言及CUDA开发的框架,支持MATLAB、Python接口和命令行,可直接在GPU与CPU中进行切换,训练效率有保障,在工业中应用较为广泛。
在Caffe中,网络层通过C++定义,网络配置使用Protobuf定义,可以较方便地进行深度网络的训练与测试。Caffe官方提供了大量实例,它的训练过程、梯度下降算法等模块都已被封装,开发者学习prototxt语法后,基本能自己构造深度卷积神经网络。Caffe的代码易懂、好理解、高效、实用、上手简单,比较成熟和完善,实现基础算法方便快捷,适合工业快速应用与部署。
Caffe通过blob以四维数组的方式存储和传递数据。blob提供了一个统一的内存接口,用于批量图像(或其他数据)的操作与参数更新。Models是以Google Protocol Buffers的方式存储在磁盘上,大型数据存储在LevelDB数据库中。
同时,Caffe还提供了一套完整的层类型。一个层(Layer)是一个神经网络层的本质,它采用一个或多个blob作为输入,并产生一个或多个blob作为输出。Caffe保留所有的有向无环层图,确保正确地进行前向传播和反向传播,Caffe是一个典型的端到端的机器学习系统。每一个Caffe网络都开始于数据层,结束于损失函数层。通过一个单一的开关,使其网络运行在CPU或GPU上。
Caffe相对于Tensorflow等使用pip一键安装的方式来说,编译安装稍微麻烦一些,但其实很简单,我们以Ubuntu 16.04为例,官网的安装脚本足够用了,它有一些依赖库。装完之后,去Git上复制代码(网址为https://github.com/BVLC/caffe),修改Makefile.config就可以进行编译安装了。对于GPU,还需要安装CUDA及NVIDIA驱动。
- 点赞
- 收藏
- 关注作者
评论(0)