最近无意间在“BestPythonlibraryforneuralnetworks”这个话题下找到了我之前DataScienceStackExchange(数据科学堆栈交换)的答案,并且Python深度学习生态系统在过去两年半的演变给我带来了沉重的打击。我在2014年7月推荐的库pylearn2不再积极开发或维护,许多深度学习库开始取而代之。这些库中的每一个都有其优点和缺点。我们在indico的产品或开发中使用了以下列表中的大部分技术,但其余的我们没有使用过,我将借鉴其他人的经验来帮助您清楚地了解2017年的Python深度学习生态,详细理解。准确的说,我们将重点关注:TheanoLasagneBlocksTensorFlowKerasMXNetPyTorch以下是对7大Python深度学习框架的介绍和优缺点介绍,同时也推荐了各个框架的一些使用资源,但由于不支持微信外链,请读者点击阅读原网址查看资源。Theano链接:https://github.com/Theano/Theano说明:Theano是一个Python库,可让您定义、优化和高效评估涉及多维数组的数学表达式。它与GPU一起工作,并且在符号微分方面表现良好。文档:http://deeplearning.net/software/theano/概述:Theano是数值计算的主力,支持我们列表中的许多其他深度学习框架。Theano由FrédéricBastien创建,他是蒙特利尔大学机器学习研究所(MILA)背后的一个非常优秀的研究团队。它的API是底层的,为了写出高效的Theano,你需要相当熟悉其他框架隐藏在幕后的算法。如果您拥有广泛的机器学习学术知识,正在寻找对模型的细粒度控制,或者想要实施新颖或不寻常的模型,那么Theano是您的首选库。总而言之,Theano牺牲了易用性来换取灵活性。优点:灵活正确使用时性能高缺点:高学习曲线低级API编译复杂的符号图可能很慢Lasagne链接:https://github.com/Lasagne/Lasagne描述:在Theano上构建和训练NeuralNetworks:http://lasagne.readthedocs.org/概述:因为Theano力求成为最好最全面的符号数学库,Lasagne在Theano之上提供了抽象,这使得它更适合深度学习。它主要由现任DeepMind研究科学家SanderDieleman编写和维护。Lasagne不是根据符号变量之间的函数关系来指定网络模型,而是允许用户分层思考,为用户提供“Conv2DLayer”和“DropoutLayer”等构建块。Lasagne提供了丰富的通用组件来帮助进行层定义、层初始化、模型正则化、模型监控和模型训练,同时几乎不牺牲灵活性。优点:仍然非常灵活比Theano更高级的抽象文档和代码包含各种PastaPuns缺点:社区小块链接:https://github.com/mila-udem/blocks描述:用于构建和训练神经网络Theano框架文档:http://blocks.readthedocs.io/en/latest/概述:与Lasagne类似,Blocks在Theano之上添加了一个抽象层,使深度学习模型比编写原始Theano更标准化更清晰、更简单、更明确。它由蒙特利尔大学机器学习研究所(MILA)编写,其中一些人为构建Theano和神经网络定义的第一个高级接口(已弃用的PyLearn2)做出了贡献。与Lasagne相比,Blocks更加灵活,代价是入门级更高,高效使用难度相当大。除此之外,Blocks对递归神经网络架构有很好的支持,所以如果你有兴趣探索这种类型的模型,它值得一看。除了TensorFlow,Blocks是我们在indico产品中部署的许多API的首选库。优点:仍然非常灵活比Theano更高层次的抽象易于测试缺点:更高的学习曲线难度较低社区TensorFlow链接:https://github.com/tensorflow/tensorflow描述:使用数据流图进行数值计算开源软件库文档:https://www.tensorflow.org/api_docs/python/概述:TensorFlow是低级符号库(例如Theano)和高级网络规范库(例如Blocks和Lasagne)的混合体。尽管它是Python深度学习库集合中最大的成员,但它可能已经是最活跃的社区,得到了GoogleBrain团队的支持。它支持在多个GPU上运行深度学习模型,提供用于高效数据管道的实用程序,并具有用于模型检查、可视化和序列化的内置模块。最近,TensorFlow团队决定支持Keras(我们列表中的下一个深度学习库)。尽管TensorFlow有其自身的缺点,但社区似乎同意这一决定。社区的庞大规模和项目背后的巨大动力意味着学习TensorFlow是一个安全的选择。因此,TensorFlow是我们今天在indico的首选深度学习库。优点:由软件巨头谷歌支持非常大的社区网络训练的低级和高级接口比基于Theano的配置更快的模型编译完整的多GPU支持缺点:虽然Tensorflow正在迎头赶上,但它最初比基于Theano的配置慢在许多基准上。RNN支持仍然不如TheanoKeras链接:https://github.com/fchollet/keras说明:Python的深度学习库。支持卷积神经网络、递归神经网络等。在Theano或TensorFlow上运行。文档:https://keras.io/概述:Keras可能是最先进和用户友好的库。由FrancisChollet(GoogleBrain团队的另一名成员)编写和维护。它允许用户选择他们构建的模型是在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是亚马逊选择的深度学习库,而且可能是最好的。它具有类似于Theano和TensorFlow的数据流图,为多GPU配置提供了良好的配置,具有类似于Lasagne和Blocks的更高级别的模型构建块,并且可以在您可以想象的任何硬件(包括手机)上运行。).对Python的支持只是冰山一角——MXNet还提供了对R、Julia、C++、Scala、Matlab和Javascript的接口。如果您正在寻找最佳性能,请选择MXNet,但您必须愿意处理MXNet的一些怪癖。优点:速度的基准非常灵活缺点:最小的社区比Theano更难学GPU加速。文档:http://pytorch.org/docs/概述:PyTorch已经成为我们Python深度学习框架列表的新成员已有一段时间了。它是Lua的Torch库到Python的松散端口,因为它得到Facebook的人工智能研究团队(FAIR)的支持,并且因为它用于处理动态计算图(Theano、TensorFlow或其他衍生产品不支持编译器的注释:现在TensorFlow似乎支持动态计算图),它变得非常有名。PyTorch将在Python深度学习生态系统中扮演什么角色尚不得而知,但所有迹象都表明PyTorch是我们列表中其他框架的绝佳替代品。优点:来自Facebook组的支持完全支持动态图高级和低级API的混合缺点:PyTorch不如其他选项成熟(用他们自己的话说-“我们处于早期测试阶段。期待一些冒险”)除了官方文档,只有有限的参考资料/资源原文:http://www.kdnuggets.com/2017/02/python-deep-learning-frameworks-overview.html翻译,微信公众号》机器之心(id:almosthuman2014)"]点此查看该作者更多好文
