深度学习之图像识别:核心技术与案例实战》 ——2 深度学习优化基础

网友投稿 559 2022-05-29

第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的代码易懂、好理解、高效、实用、上手简单,比较成熟和完善,实现基础算法方便快捷,适合工业快速应用与部署。

《深度学习之图像识别:核心技术与案例实战》 ——2 深度学习优化基础

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驱动。

图像识别 图像识别服务 Image 图像识别服务

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Chrome 快捷键 整理版
下一篇:【干货分享】使用Redis的用户要请往这瞅瞅,小心数据泄漏!
相关文章