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

举报
华章计算机 发表于 2020/02/23 11:45:38 2020/02/23
【摘要】 本节书摘来自华章计算机《深度学习之图像识别:核心技术与案例实战》 —— 书中第2章,第2.1.1节,作者是言有三   。

第2章  深度学习优化基础

  在第1章中初步介绍了神经网络的发展历史,基于BP的全连接神经网络的优缺点及卷积神经网络(CNN)的基本结构。卷积神经网络可用于一维时间序列的处理,也可以用于二维(如图像)序列的处理,相比于普通的神经网络,CNN将传统的矩阵乘法改为卷积运算,也是其名字的由来。

  本章将从以下两个方面展开介绍。

* 2.1节将介绍深度学习的几种主流开源框架的特点及其性能对比。

* 2.2节将介绍深度学习中的优化方法,如正则化等可以防止过拟,是一种有助于提高算法泛化能力的方法。

  本章旨在让大家对深度卷积神经网络有一个较为全面的认识,以便为后续章节的学习打下基础。

2.1  深度学习主流开源框架

  所谓工欲善其事,必先利其器。深度学习的快速发展及在工业界和学术界的迅速流行离不开3个要素:数据、硬件和框架。

  深度学习框架是深度学习的工具,简单来说就是库,例如Caffe、TensorFlow等。深度学习框架的出现,降低了深度学习入门的门槛,开发者不需要进行底层的编码,可以在高层进行配置。目前已有大量深度学习框架被推出,免费提供给开发者学习、使用。

  本节将对当前的深度学习开源框架做概述性的介绍,首先给出几种常用框架的参数对比。

  如表2.1所示为当前常用框架的几类使用数据对比,如框架的发布时间与维护机构,框架的底层语言及所支持的语言接口等。

  没有什么框架是完美的,不同的框架适用的领域也不完全一致,所以如何选择合适的框架也是一个需要探索的过程。总体而言,深度学习框架提供的深度学习组件对于通用的算法非常容易上手。

表2.1  深度学习主流框架参数对比

image.png

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


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。