Theano https://github.com/Theano/Theano
描述: Theano 是一个python库, 容许你定义, 优化而且有效地评估涉及到多维数组的数学表达式. 它与GPUs一块儿工做, 而且在符号微分方面表现优秀.
文档: http://deeplearning.net/software/theano/
概述: Theano是数值计算的主力, 它支持了许多咱们列表当中的其余的深度学习框架. Theano由 frederic bastien 建立, 这是蒙特利尔大学机器学习研究所背后的一个很是优秀的研究团队. 它的API水平较低, 而且为了写出效率高的Theano, 你须要对隐藏在其余框架幕后的算法至关的熟悉. 若是你有首丰富的学术机器学习知识, 正在寻找你的模型的精细的控制方法, 或者想要实现一个新奇的或者不一样寻常的模型, Theano是你的首选库. 总而言之, 为了灵活性, Theano牺牲了易用性.
优势: 灵活, 正确使用时的高性能
缺点: 较高的学习难度, 低水平的API, 编译复杂的符号图可能很慢html
Lasagne https://github.com/Lasagne/Lasagne
描述:在Theano上创建和训练神经网络的轻量级库
文档:http://lasagne.readthedocs.org/
概述:由于Theano致力于成为符号数学中最早且最好的库,Lasagne提供了在Theano 顶部的抽象,这使得它更适合于深度学习。它主要由当前DeepMind研究科学家Sander Dieleman编写并维护。Lasagne并不是是根据符号变量之间的函数关系来指定网络模型,而 是容许用户在层级思考,为用户提供了例如「Conv2DLayer」和「DropoutLayer」的构建 块。Lasagne在牺牲了不多的灵活性的同时,提供了丰富的公共组件来帮助图层定义、图 层初始化、模型正则化、模型监控和模型训练。
优势:仍旧很是灵活, 比Theano更局级的抽象, 文档和代码中包含了各类Pasta Puns
缺点:社区小python
Blocks https://github.com/mila-udem/blocks
描述:用于构建和训练神经网络的Theano框架
文档:http://blocks.reackhedocs.io/en/latest/
概述:与Lasagne相似,Blocks是在Theano顶部添加一个抽象层使深度学习模型比编写 原始的Theano更清晰、更简单、定义更加标准化。它是由蒙特利尔大学机器学习研究所 (MILA)编写,其中一些人为搭建Theano和第一个神经网络定义的高级接口(已经淘汰 的PyLearn2)贡献了本身的_份力量。比起Lasagne,Blocks灵活一点,代价是入门台阶较高,想要高效的使用它有不小的难度。除此以外,Blocks对递归神经网络架构 (recurrent neural network architectures)有很好的支持,因此若是你有兴趣探索这种 类型的模型,它值得一看。除了 TensorFlow,对于许多咱们已经部署在indico产品中的 API,Blocks是其首选库。
优势:仍旧很是灵活, 比Theano更高级的抽象, 易于测试
缺点:较高的学习难度, 更小的社区git
TensorFlow https://github.com/tensorflow/tensorflow
描述:使用数据流图进行数值计算的的开源软件库
文档:https://www.tensorflow.org/api_docs/python/
概述:TensorFlow是较低级别的符号库(好比Theano)和较高级别的网络规范库(好比 Blocks和Lasagne)的混合。即便它是Python深度学习库集合的最新成员,在Google Brain团队支持下,它可能已是最大的活跃社区了。它支持在多GPUs上运行深度学习模 型,为高效的数据流水线提供使用程序,并具备用于模型的检查,可视化和序列化的内置 模块。最近,TensorFlow团队决定支持Keras (咱们列表中下一个深度学习库)。虽然 TensorFlow有着本身的缺点,可是社区彷佛赞成这一决定,社区的庞大规模和项目背后巨 大的动力意味着学习TensorFlow是一次安全的赌注。所以,TensorFlow是咱们今天在 indico选择的深度学习库。
优势:由软件巨头Google支持, 很是大的社区, 低级和高级接口网络训练, 比基于Theano配置更快的模型编译, 彻底地多GPU支持
缺点: 虽然Tensorflow正在追赶,可是最初在许多基准上比基于Theano的慢, RNN支持仍不如Theanogithub
Keras https://github.com/fchollet/keras
描述:Python的深度学习库。支持Convnets、递归神经网络等。在Theano或者TensorFlow 上运行。
文档:https://keras.io/
概述:Keras也许是水平最高,对用户最友好的库了。由FrancisChollet (Goog丨eBrain团队中的另外一个成员)编写和维护。它容许用户选择其所构建的模型是在Theano上或是在TensorFlow上的符号图上执行。Keras的用户界面受启发于Torch,因此若是你之前有过使用Lua语言的机器学习经验,Keras绝对值得一看。因为部分很是优秀的文档和其相对易用性,Keras的社区很是大而且很是活跃。最近,TensorFlow团队宣布计划与Keras —起支持内置,因此很快Keras将是TensorFlow项目的一个分组。
优势:可供选择的Theano或者TensorFlow后端, 直观、高级别的端口, 更易学习
缺点:不太灵活,比其余选择更规范算法
MXNet https://github.com/dmlc/mxnet
描述:MXNet是一个旨在提升效率和灵活性的深度学习框架.
文档:http://mxnet.io/api/python/index.html#python-api-reference
概述:MXNet是亚马逊(Amazon)选择的深度学习库,而且也许是最优秀的库。它拥有相似于Theano和TensorFlow的数据流图,为多GPU配置提供了良好的配置,有着相似于Lasagne和Blocks更高级别的模型构建块,而且能够在你能够想象的任何硬件上运行(包括手机)。对Python的支持只是其冰山一角 : MXNet一样提供了对R、Julia、C++、Scala、Matlab,和Java的接口。若是你正在寻找最佳的性能,选择MXNet吧,可是你必须愿意处理与之相对的一些MXNet的怪癖。
优势:速度的标杆, 很是灵活
缺点:最小的社区, 比Theano更困难的学习难度后端
PyTorch
连接:https://github.com/pytorch/pytorch
描述:Python中的张量(Tensors)和动态神经网络,有着强大的GPU加速。
文档:http://pytorch.org/docs/
概述:刚刚放出一段时间,PyTorch就已是咱们Python深度学习框架列表中的一个新的成员了。它是从Lua的Torch库到Python的松散端口,因为它由Facebook的人工智能研究团队( ArtificiaUntelligence Research team (FAIR))支持且由于它用于处理动态计算图(Theano,TensorFlow或者其余衍生品没有的特性,编译者注:如今TensorFlow好像支持动态计算图),它变得很是的有名。PyTorch在Python深度学习生态系统将扮演怎样的角色还不得而知,但全部的迹象都代表,PyTorch是咱们列表中其余框架的一个很是棒的选择。
优势:来自Facebook组织的支持, 彻底地对动态图的支持, 高级和低级API的混合
缺点:比其余选择, PyTorch 还不太成熟(用他们本身的话说: 咱们正处于早期测试版本, 期待一些冒险.), 除了官方文档外, 只有限的参考文献/资源.api