[深度学习基础] 斯坦福CS231n李飞飞计算机视觉Lecture 12笔记

Lecture 12 Software Packages

本章节介绍深度学习的常用框架,包括Caffe,TensorFlow,Pytorch等。

Caffe

Caffe是一个清晰而高效的深度学习框架,本节介绍caffe的优势、架构,网络定义、各层定义,Caffe的安装与配置。

Caffe是一个清晰而高效的深度学习框架,其作者是博士毕业于UC Berkeley的 贾扬清,目前在Google工作。

Caffe是纯粹的C++/CUDA架构,支持命令行、Python和MATLAB接口;可以在CPU和GPU直接无缝切换。

Caffe包含四个模块:blob,layer,net与solver模块,其中blob为存储数据包含图像与标签的数组,layer定义了层的信息,net为对layer的整合,最后的solver模块是更新权重:
在这里插入图片描述
caffe的优缺点:

  1. 上手快:模型与相应优化都是以文本形式而非代码形式给出。 Caffe给出了模型的定义、最优化设置以及预训练的权重,方便立即上手。
  2. 速度快:能够运行最棒的模型与海量的数据。 Caffe与cuDNN结合使用,测试AlexNet模型,在K40上处理每张图片只需要1.17ms.
  3. 模块化:方便扩展到新的任务和设置上。 可以使用Caffe提供的各层类型来定义自己的模型。
  4. 开放性:公开的代码和参考模型用于再现。
  5. 在更改层时需要使用C++来编写,比较麻烦

Pytorch

Pytorch对比于其他网络模型最大的好处就是非常易于理解,具体点来讲, PyTorch是一个Python包,是Torch在Python上的衍生,原先的Torch是用Lua语言写的,虽然效率高,但是普及度不够,社区不够大,改成Python后,受众范围广泛了许多。并且有FaceBook这样的巨头支持,发展前景还是很好的~

PyTorch支持动态计算图,能够提供线上操作,这在定义网络上操作更简单,静态图需要一个个操作声明,而动态图可以调用各种函数。并且因为是动态图,在改变网络的某一层或者改变一些变量,例如动态修改学习率,对模型做fine-tune操作,都更简单方便。PyTorch非常适合调用新模型,用于设计自己的架构,测试新想法~

Pytorch有如下的优点:

  1. debug方便:因为动态图的原因,代码一行一行执行,哪里出问题就点哪里,不用像静态图那样,需要考虑到全局哪里会出问题,调bug很痛苦
  2. 快速转换: tensor和numpy相互转换方便
  3. 程序包小且速度快: PyTorch使用了Intel MKL and NVIDIA (CuDNN, NCCL)加速计算过程,程序核心中张量是用C来实现的。同时PyTorch编写了一个定制的GPU内存管理器,帮助最大效率使用内存
  4. 程序简洁: PyTorch不是Python绑定C++框架的,而是直接内嵌到Python上的,这允许用户直接使用numpy/scipy等工具包,完全符合Python的思想(简单方便)
  5. 易扩展: PyTorch提供一套API用于用于定制layer操作。如果想用C/C++实现layer,也可使用cffi。

这里有一个很好的知乎问题,对pytorch上手很有帮助:https://www.zhihu.com/question/55720139

Theano

Theano是一个高效定义,优化,估算处理多维数组的数学表达式Python库。它具有以下这些特征:

  1. 是Numpy库的紧密整合:在Theano编译中使用numpy.ndarray
  2. 操作GPU:数据的紧凑性计算比CPU的效率高
  3. 高效的象征性差异:Theano一个或者多个输入时使用派生函数
  4. 高效、稳定优化
  5. 动态C代码产生:评估表达式的快速
  6. 大范围的单元测试和自我证实:检查和判断很多类型的错误,容错性好

其实Theano库已经停止更新很久了,这里是一个Theano库的介绍,这里就不多说了:https://blog.csdn.net/jiang_xinxing/article/details/78685603

TensorFlow

TensorFlow被誉为深度学习最好框架,TensorFlow是Google在2015年11月份开源的人工智能系统(Github项目地址),是之前所开发的深度学习基础架构DistBelief的改进版本,该系统可以被用于语音识别、图片识别等多个领域。

官网上对TensorFlow的介绍是,一个使用数据流图(data flow graphs)技术来进行数值计算的开源软件库。数据流图中的节点,代表数值运算;节点节点之间的边,代表多维数据(tensors)之间的某种联系。你可以在多种设备(含有CPU或GPU)上通过简单的API调用来使用该系统的功能。TensorFlow是由Google Brain团队的研发人员负责的项目。
在这里插入图片描述
这里就不介绍具体的框架了,我认为需要结合具体的项目,与具体的内容才能讲明白框架的意义,等之后具体接触项目再来总结。

PyTorch更有利于研究人员、爱好者、小规模项目等快速搞出原型。而TensorFlow更适合大规模部署,特别是需要跨平台和嵌入式部署时。

小结

大体上了解几个框架的意义与来源以及适用情况,需要结合项目具体分析。

资料来源:

  1. 斯坦福CS231n李飞飞计算机视觉视频课程:https://study.163.com/course/courseMain.htm?courseId=1003223001
  2. CS231n官方笔记授权翻译总集篇:https://zhuanlan.zhihu.com/p/21930884
  3. CS231n官方PPT:http://vision.stanford.edu/teaching/cs231n/syllabus.html
  4. Caffe 深度学习框架上手教程:https://www.csdn.net/article/2015-01-22/2823663
  5. PyTorch实战:Chapter-1(PyTorch介绍和入门):https://blog.csdn.net/u011974639/article/details/79623215
  6. Theano深度学习库介绍:https://blog.csdn.net/jiang_xinxing/article/details/78685603
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值