Caffe
究竟Caffe是什么呢?
Caffe是由Berkeley Vision and Learning Center(BVLC)建立的深度学习框架。它是模块化的,速度极快。而且被应用于学术界和产业界的start-of-the-art应用程序中。
优点:
速度快。Google Protocol Buffer数据标准为Caffe提升了效率。
学术论文采用此模型较多。不确定是不是最多,但接触到的不少论文都与Caffe有关(R-CNN,DSN,最近还有人用Caffe实现LSTM)
缺点:
曾更新过重要函数接口。有人反映,偶尔会出现接口变换的情况,自己很久前写的代码可能过了一段时间就不能和新版本很好地兼容了。(现在更新速度放缓,接口逐步趋于稳定,感谢 评论区王峰的建议)
对于某些研究方向来说的人并不适合。这个需要对Caffe的结构有一定了解,(后面提到)。
--from:https://www.zhihu.com/question/27982282/answer/39350629
你可以在一个空白文档里定义你的模型架构和解决方案,建立一个JSON文件类型的.prototxt配置文件。Caffe二进制文件提取这些.prototxt文件并培训你的网络。Caffe完成培训之后,你可以把你的网络和经过分类的新图像通过Caffe二进制文件,更好的就直接通过Python或MATLAB的API。
Caffe github上的Wiki Development · BVLC/caffe Wiki · GitHub已经有了教程了,而且这是最接近latest Caffe的源码结构的教程,你在网上搜到的Blog很多是有点过时的,因为Caffe最近又重构了代码。你可以跟着它的指导去添加自己的层。
代码GitHub网址:
GitHub - BUPTLdy/Caffe_Code_Analysis: Caffe_Code_Analysis
--from:https://www.zhihu.com/question/27982282/answer/80242005
Theano
Theano 在深度学习框架中是祖师级的存在。它的开发始于 2007,早期开发者包括传奇人物 Yoshua Bengio 和 Ian Goodfellow。
Theano是一个Python库,是一个擅长处理多维数组的库(这方面它类似于 NumPy)。 Theano通过与numpy的紧密集成,透明地使用GPU来完成这些工作。
但随着这些年的发展,大量基于 Theano 的开源深度学习库被开发出来,包括 Keras, Lasagne 和 Blocks。这些更高层级的 wrapper API,能大幅减少开发时间以及过程中的麻烦。顺便说一句,Theano 是一整套生态系统,别只用它裸奔,然后抱怨不好用。
优点:
Python + NumPy 的组合
使用计算图
RNN 与计算图兼容良好
有 Keras 和 Lasagne 这样高层的库
不少开发者反映,它的学习门槛比Tensorflow 低
缺点:
本身很底层
比 Torch 臃肿
不支持分布式
有的错误信息没什么用
大模型的编译时间有时要很久
对事先训练过的模型支持不足
用的人越来越少
TensorFlow
TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。TensorFlow 最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。
--from:TensorFlow中文社区
推荐学习资源:
可以学一下斯坦福新开的课程,cs20si,http://web.stanford.edu/class/cs20si/index.html
国内可以看b站的视频,CS 20SI: Tensorflow for Deep Learning Research
通过这个课程,能够对tensorflow有个全面的了解,从最基本的计算图开始,到如何结构化模型,了解最新的seq2seq,neural style等前沿算法的实现。
Lasagne
Lasagen是一个基于Theano的轻量级的神经网络库。其实就是对Theano库的上层封装,使其用起来更简单,但是相应的灵活性下降。这里的关键词是轻量级的,也就意味着它不是一个像Keras一样围绕着Theano的重包装的库。虽然这会导致你的代码更加繁琐,但它会把你从各种限制中解脱出来,同时还可以让您根据Theano进行模块化的构建。
Lasagne设计的六个原则是简洁、透明、模块化、实用、聚焦和专注。
官网地址:http://lasagne.readthedocs.io/en/latest/index.html
Keras
Keras是一个最低限度的、模块化的神经网络库,可以使用Theano或TensorFlow作为后端。Keras最主要的用户体验是,从构思到产生结果将会是一个非常迅速的过程。
在Keras中架构网络设计是十分轻松自然的。它包括一些state-of-the-art中针对优化(Adam,RMSProp)、标准化(BatchNorm)和激活层(PReLU,ELU,LeakyReLU)最新的算法。
Keras也非常注重卷积神经网络,这也是非常有价值的。
更重要的是,你既可以轻松地构建基于序列的网络(其中输入线性流经网络)又可以创建基于图形的网络(输入可以“跳过”某些层直接和后面对接)。这使得创建像GoogLeNet和SqueezeNet这样复杂的网络结构变得容易得多。
Keras不支持多GPU环境中并行地训练网络。
如果我想尽快地训练网络,那么我可能会使用mxnet。但是如果我需要调整超参数,我就会用Keras设置四个独立的实验(分别在我的Titan X GPUs上运行)并评估结果。
mxnet
mxnet也是深度学习Python库无(重点也是训练图像分类网络)。虽然在mxnet中站立一个网络可能需要较多的代码,但它会提供给你惊人数量的语言绑定(C ++、Python、R、JavaScript等)。
Mxnet库真正出色的是分布式计算,它支持在多个CPU / GPU机训练你的网络,甚至可以在AWS、Azure以及YARN集群。
它确实需要更多的代码来设立一个实验并在mxnet上运行(与Keras相比),但如果你需要跨多个GPU或系统分配训练,推荐mxnet。