天问

译文:Python深度学习框架评价

 


 

我最近偶然发现了我在“神经网络的最佳python库”这个主题的一个旧的数据科学堆栈交换的答案,它让我深感python深度学习生态系统在过去的两年半内的快速发展。我在2014年七月推荐的一个库pylearn2,现在已经不再被积极地开发和维护,并且一大批深度学习的库已经占据它的位置。其实每一个库都有它的优势和弱点。我们已经使用了这个列表的大部分技术在indico进行生产或开发,但是有少部分没有做。我会根据别人的经验,提供一个关于2017年python深度学习生态系统的清晰、全面的路径。

特别地,我们将看下面这些库:

·        Theano

·        Lasagne

·        Blocks

·        TensorFlow

·        Keras

·        MXNet

·        PyTorch

 


 

Theano

描述:Theano是一个Python库,它可以有效地定义,优化和评估涉及多维数组的数学表达式。它与GPU一起工作,并执行高效的符号分化。

文档:http://deeplearning.net/software/theano/

概要:

Theano是数值计算的主力,它支持我们列表中的许多其他深度学习框架。它由FrédéricBastien和蒙特利尔大学实验室MILA背后的杰出研究团队建造。它的API是相当低的水平,为了写入有效的Theano,你需要相当熟悉隐藏在幕后的其他框架的算法。如果您拥有丰富的学术机器学习专业知识,正在寻找对您的模型非常精细的控制,或想要实现一个新奇或不寻常的模型,Theano是一个关键的库。一般来说,Theano易于使用,因为它具有灵活性。

优点:

·        灵活

·        如果正确使用,性能高

缺点:

·        大量的学习曲线

·        低级别的API

·        编译复杂的符号图可能很慢

资源:

·        安装指南

·        官方Theano教程

·        Theano幻灯片和练习

·        从Theano的线性回归到CNN

·        Python和Theano深入学习介绍(MNIST视频教程)

 


 

Lasagne

描述:用于在Theano建立和训练神经网络的轻量级库。

文档:http://lasagne.readthedocs.org/

概要:

由于Theano主要是一个符号数学的库,Lasagne在Theano上进行了抽象,使它更适合深度学习。它主要由现代DeepMind研究科学家Sander Dieleman编写和维护。Lasagne让用户在Layer水平上思考,提供模块像“Conv2DLayer”和“DropoutLayer”给用户结合使用,而不是根据符号变量之间的函数关系来指定网络模型。Lasagne在灵活性方面需要牺牲一点,它提供了丰富的通用组件来帮助定义图层,图层初始化,模型正则化,模型监控和模型训练。

优点:

·        还是很灵活

·        比Theano的抽象层更高

·        文档和代码多样化

缺点:

·        小社区

资源:

·        官方GitHub页面

·        官方安装指南

·        官方Lasagne教程

·        Lasagne代码示例

 


 

Blocks

描述:建立和训练神经网络的Theano框架。

文档:http://blocks.readthedocs.io/en/latest/

概要:

与Lasagne类似,Blocks是在Theano上添加一层抽象层,以便于创建比原始Theano更简洁,定义更标准的深度学习模型。它是由蒙特利尔大学实验室MILA 开发的,他们还建设了Theano和第一个神经网络的高级接口PyLearn2。它比Lasagne更灵活一点,但是它的学习曲线稍微更困难,这样才能更高效地使用。除此之外,Blocks对循环神经网络架构有很好的支持,所以如果你有兴趣探索这个模型的类型,值得一看。除了TensorFlow,Blocks是我们在indico配置的许多API的首选库。

优点:

·        还是很灵活

·        比Theano高的抽象层

·        很好测试

缺点:

·        大量的学习曲线

·        小社区

资源:

·        官方安装指南

·        Arxiv上设计的Blocks库

·        reddit上关于Blocks和Lasagne之间差异的讨论

·        Blocks的数据处理的姐妹库,Fuel

 


 

TensorFlow

描述:用于使用数据流图进行数值计算的开源软件库。

文档:https://www.tensorflow.org/api_docs/python/

概要:

TensorFlow是较低级别的符号计算库(如Theano)和更高级别的网络规范库(如块和Lasagne)之间的混合。虽然它是Python深度学习库集合的最新成员,但它可能已经获得了最大的活跃社区,因为它由Google Brain团队支持。它支持在多个GPU上运行机器学习模型,为高效的数据流水线提供实用程序,并具有用于模型的检查,可视化和序列化的内置模块。最近,TensorFlow团队决定加入对Keras的支持,这是我们列表中的下一个深度学习库。社区似乎都认为,虽然TensorFlow有它的缺点,它的社区的庞大规模和项目背后的巨量势头意味着学习TensorFlow是比较保险的。因此,TensorFlow是我们今天在indico选择的深度学习库。

优点:

·        由软件巨头谷歌支持

·        非常大的社区

·        低级别和高级别接口到网络训练

·        比Theano-based的选项有更快的模型编译

·        清晰的多GPU支持

缺点:

·        起初在许多基准比Theano-based的选项慢,虽然Tensorflow正赶上它。

·        RNN的支持仍然超过了Theano

资源:

·        官方TensorFlow网站

·        下载和设置指南

·        indico的TensorFlow

·        TensorFlow教程的集合

·        使用TensorFlow教授Udacity机器学习课程

·        TensorFlowMNIST教程

·        TensorFlow数据输入

 


 

Keras

描述:Python深度学习库。转换网络,递归神经网络等。在Theano或TensorFlow上运行。

文档:https://keras.io/

概要:

Keras可能是最高水平,使用最友好的库。它由Google Brain团队的另一名成员Francis Chollet编写和维护。它允许用户选择他们构建的模型是在Theano的还是TensorFlow的符号图上执行。Keras的用户界面是火炬启发的,所以如果你以前在Lua有机器学习的经验,Keras绝对值得一看。由于优秀的文档和它的相对易用性,Keras社区是相当大,非常活跃。最近,TensorFlow团队宣布计划与Keras支持内置,所以很快Keras将是TensorFlow项目的一个子集。

优点:

·        是Theano或TensorFlow后端

·        直观,高级的接口

·        更容易的学习曲线

缺点:

·        不太灵活,比其他选项更具规范性

资源:

·        官方安装指南

·        Keras用户Google群组

·        Keras示例的存储库

·        在Docker上使用Keras的说明

·        Keras教程的应用程序库

 


 

MXNet

描述:MXNet是一个旨在提高效率和灵活性的深度学习框架。

文档:http://mxnet.io/api/python/index.html#python-api-reference

概要:

MXNet是亚马逊深度学习的库,也许是最有效的库。它具有类似于Theano和TensorFlow的数据流图,提供对多GPU配置的良好支持,具有类似于Lasagne和Blocks的更高级别的模型构建块,并且可以在任何可以想象的硬件上(包括移动电话)运行。Python的支持只是冰山一角 - MXNet还提供了R,Julia,C ++,Scala,Matlab和Javascript的接口。如果你寻找的是首屈一指的性能,那么选择MXNet,但你必须愿意处理一些MXNet的怪癖。

优点:

·        惊人的快速的基准

·        非常灵活

缺点:

·        是最小的社区

·        比Theano的学习曲线更陡峭

资源:

·        官方入门指南

·        MXNet在indico上的介绍

·        MXNet示例库

·        亚马逊的CTO呈现的MXNet

·        Arxiv上的MXNet论文

 


 

PyTorch

描述:Python中的张力和动态神经网络具有强大的GPU加速。

文档:http://pytorch.org/docs/

概要:

PyTorch在一个多星期前发布,是Python的深度学习框架列表中的新的孩子。这是Lua的火炬库到Python的一个松散的端口,它十分吸引大家关注,因为它是由Facebook的人工智能研究小组(FAIR)支持的,还因为它是设计用来处理动态计算图形的,像Theano,TensorFlow和衍生物的同类型的功能缺失。大家对PyTorch在Python深度学习生态系统中将扮演的角色众说纷纭,但所有迹象表明PyTorch是我们列表中其他框架的一个非常受人尊敬的替代品。

优点:

·        来自Facebook的组织支持

·        对动态图的新的支持

·        高级和低级API的混合

缺点:

·        相比其他选择不够成熟(用他们自己的话来说 - “我们正在早期发布测试版,期待一些冒险。”)

·        官方文档之外的参考文献/资源有限

资源:

·        官方PyTorch主页

·        PyTorch在twitter上的信息流

·        PyTorch示例的存储库

·        PyTorch教程的存储库

博客地址:http://blog.yoqi.me/?p=2369
扫我捐助哦
喜欢 0

这篇文章还没有评论

发表评论