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

原文链接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教程的存储库

本文分享自微信公众号 - PPV课数据科学社区(ppvke123)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-02-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

业界 | 微软推出深度学习加速平台「Project Brainwave」:FPGA驱动实时人工智能

选自微软博客 机器之心编译 参与:路雪、黄小天、蒋思源 近日在 Hot Chips 2017 上,微软团队推出了一个新的深度学习加速平台,其代号为脑波计划(Pr...

38870
来自专栏WOLFRAM

强大的 Wolfram 11.0(上)

17060
来自专栏PPV课数据科学社区

【学习】数据科学的完整学习路径—Python版

译者:Allen 从Python菜鸟到Python Kaggler的旅程(译注:Kaggle是一个数据建模和数据分析竞赛平台) 假如你想成为一个数据科学家,或者...

27340
来自专栏机器之心

资源 | 2017年最流行的15个数据科学Python库

选自Medium 作者:Igor Bobriakov 机器之心编译 参与:朱朝阳、吴攀 Python 近几年在数据科学行业获得了人们的极大青睐,各种资源也层出不...

30440
来自专栏数据科学与人工智能

【陆勤践行】数据科学的完整学习路径—Python版

从Python菜鸟到Python Kaggler的旅程(译注:Kaggle是一个数据建模和数据分析竞赛平台) 假如你想成为一个数据科学家,或者已经是数据科学家的...

20990
来自专栏腾讯技术工程官方号的专栏

今天的【 科技文 】有点污

作者:张大威,TEG 安全平台部。2013年加入安全平台部,从事多媒体信息安全、智能安全领域,目前在色情语音识别和藏维语识别领域,利用深度学习技术构建恶意音视频...

24670
来自专栏数据科学与人工智能

【Python环境】数据科学的完整学习路径(Python版)

从Python菜鸟到Python Kaggler的旅程(译注:Kaggle是一个数据建模和数据分析竞赛平台) 假如你想成为一个数据科学家,或者已经是数据科学家的...

33450
来自专栏MyBlog

建立一个线上购物的面向任务的对话系统

该文给出了针对用于线上购物的面向任务的对话系统的一个一般的解决方案, 目标是协助用户完成多样化的购买相关任务, 比如搜索商品和回答问题, 如同正常人之间的对话....

14720
来自专栏华章科技

数据分析图的十大错误,你占了几个?

优秀的数据可视化依赖优异的设计,并非仅仅选择正确的图表模板那么简单。全在于以一种更加有助于理解和引导的方式去表达信息,尽可能减轻用户获取信息的成本。当然并非所有...

10110
来自专栏编程

Python数据挖掘学习路线是什么?学习Python学什么?

学习Python数据挖掘,你有明确的路线吗,学任何东西首先你要知道学习它的路线,了解了路线才能更容易学习,学习起来才不会非常费劲,进入正题,看看千锋教育的Pyt...

423100

扫码关注云+社区

领取腾讯云代金券