前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >译文:Python深度学习框架评价

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

作者头像
小莹莹
发布2018-04-19 13:44:55
1.1K0
发布2018-04-19 13:44:55
举报

原文链接https://indico.io/blog/python-deep-learning-frameworks-reviewed/

麦迪逊月 - 2017年1月31日


我最近偶然发现了我在“神经网络的最佳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教程的存储库

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-02-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PPV课数据科学社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档