目录
2 深度学习框架
深度学习框架可以让你事半功倍,那如何选择一个适合自己的学习框架呢?
2.1 深度学习框架介绍
这里就拿学习Java来举例吧,Java的SSM框架和SSH框架只需要我们进行简单那的配置就可以自动生成代码,避免代码的重复编写,提高了我们的开发效率,深度学习框架也类似,下面就来介绍流行的几个深度学习框架
1)Tensorflow
这个框架是Google 开源的框架,C++ 语言开发,使用数据流图的形式进行计算,图中的节点代表数学运算,图中的线条代表多维数组的交互,对于它的历史,当初是由研究人员和Google 员工针对机器学习和深度神经网络开发的,目前可以适用于任何领域。第三方抽象库有Keras,Tflearn、tfslim、TensorLayer
(1)优点
- 部署灵活,可以部署在一个或者多个CPU、GPU上,或者适用API的移动设备上
- 因为是Google 这样的大公司出品,所以更新和维护频繁
- 有Python和C++ 的接口,扩展性好
- 教程完善,适合新手学习
- 是深度学习框架的鼻祖,很多论文复现使用的就是这个框架
(2)缺点
- 每个计算流必须构建成图,没有符号循环,这样使得一些计算变得困难;
- 没有三维卷积,因此无法做视频识别;
- 即便已经比原有版本(0.5)快了58倍,但执行性能仍然不及它的竞争者。
有关更加详细的框架优缺点可以看这个更加详细的描述
2)Caffe
是有加州大学伯克利进行开发和维护的,这个框架因为ImageNet比赛被很多人使用,因为他对卷积网络支持性好。使用比赛中的网络模型就要使用Caffe,但是只有C++ 接口,不够灵活,内存占用多,目前caffe2已经开源了并修复了一些问题。
3)Theano
如何要处理深度学习中大量神经网络算法,这个框架是首选,核心是数学表达式的编译器。
4) Torch
PyTorch 的前身就是Torch ,这个框架的特别之处就是使用小众语言Lua开发的,但是PyTorch相对其来说更加灵活,支持动态图,也提供了python接口。
5)MXNet
亚马逊的官方框架,之前是几个人由于对技术的热爱开发的,有很好的分布式支持,我想也这是亚马逊使用这个框架的主要原因,性能好,占用内存低,这对比Caffe就是很大的优点了,支持多种语言,前面的几个框架都是只支持Python和C++ 语言,MXNet框架不仅支持主流的python,还有R、matlab、Scala、JavaScript等。
但是因为MXNet的教程不够完善,这也是为啥Tensorflow流行起来的原因,这样就导致很多人不去使用这个框架,论文和比赛使用这个框架的人很少。
2.2 PyTorch介绍
2.2.1 什么是PyTorch
要说这个语言的最大优点就是支持动态神经网络,就连Tensorflow也不支持这个,同时PyTorch是由python编写,可以实现GPU加速。为了更好的理解,PyTorch就是GPU支持的numpy,拥有自动求导功能,已经被Facebook、Twitter、等机构采用。
2.2.2 为什么要使用PyTorch
这时候你一定有疑问了,为什么不使用当下最流行的深度学习框架Tensorflow呢?这里就列举学习PyTorch的必要性
1)学习多一个框架,以备不时之需
2)使用Tensorflow和Caffe是命令式的编程语言,而且是静态的,必须构建一个神经网络,如果想改变网络结构就要从头开始。PyTorch上面我们讲过可以快速求导
3)容易Debug,快速找到错误
4)代码简单易懂,更加简洁直观。
2.3 配置PyTorch的深度学习环境
2.3.1 操作系统选择
Mac或者Linux,Linux 最好使用Ubuntu.,从2018年4月起,官方开始支持windows版本的了
2.3.2 开发环境的安装
对于python 来说,最头疼的问题是不同版本环境管理和包管理,这里使用Anacanda将软件包打包。
对 Anacanda进行简单的介绍
1)是python发行版
2)支持linux,Mac,Windows
3)提供了包与环境管理的功能
4)可以很方便的解决多版本python并存、切换以及各种第三方包安装的问题