深度学习开源框架 Keras vs Pytorch

摘要

两大框架的链接:

Keras:https://github.com/keras-team/keras (https://keras.io/)

PyTorch:https://github.com/pytorch/pytorch

Keras 或 PyTorch,  都是非常强大的工具,且不管是学习还是实验都很有乐趣

一、简介

Keras 和 PyTorch 是颇受数据科学家欢迎的深度学习开源框架。

Keras 是能够在 TensorFlow、CNTK、Theano 或 MXNet 上运行的高级 API(或作为 TensorFlow 内的 tf.contrib)。Keras 于 2015 年 3 月首次发布,之后即因其易用性和语法简洁性而受到支持,得到快速发展。Keras 是谷歌支持的一款框架。

PyTorch 于 2017 年 1 月对外发布,是专注于直接处理数组表达式的较低级别 API。去年(2017)它受到了大量关注,成为学术研究和需要优化自定义表达式的深度学习应用偏好的解决方案。它是 Facebook 支持的一款框架

一句话总结:Keras 更容易学习和用标准层进行实验,即插即用;PyTorch 提供一种较低级别的方法,对于更具备数学背景的用户来讲灵活性更强。

二、所以说为何不用其他框架呢?

TensorFlow 与 Keras(TensorFlow 的官方高级库)和 PyTorch 相比对于新手不够友好。 尽管你可以找到一些 Theano 教程,但它已不再处于活跃开发状态。Caffe 缺少灵活性,Torch 使用 Lua 语言(然而其重写非常难:))。MXNet、Chainer 和 CNTK 目前应用不那么广泛。

三、Keras vs PyTorch:易用性和灵活性

Keras 和 PyTorch 的运行抽象层次不同。

Keras 是一个更高级别的框架,将常用的深度学习层和运算封装进干净、乐高大小的构造块,使数据科学家不用再考虑深度学习的复杂度。

PyTorch 提供一个相对较低级别的实验环境,使用户可以更加自由地写自定义层、查看数值优化任务。当你可以使用 Python 的全部能量,访问使用的所有函数的核心,则复杂架构的开发更加直接。这自然会以冗长为代价。

如果你是新手,那么 Keras 作为更高级别的框架可能具备明显优势。Keras 确实可读性更强,更加简练,允许用户跳过一些实现细节,更快地构建自己的第一个端到端深度学习模型。但是,忽略这些细节会限制用户探索深度学习流程中每个计算模块内在工作原理的机会。使用 PyTorch 会提供更多机会,来更深入地思考深度学习核心概念,如反向传播以及其他训练过程。

Keras 虽然比 PyTorch 简单得多,但它绝不是「玩具」,它是初学者以及经验丰富的数据科学家使用的正经深度学习工具。

四、Keras vs PyTorch:流行度和可获取学习资源

Keras 和 PyTorch 是增长最快的数据科学工具。

基于 Keras 的初学者深度学习课程要比基于 PyTorch 的课程简单,这使得前者更容易受初学者喜欢。Keras 的代码可读性和无与伦比的易用性使它被深度学习爱好者、教师和实力派 Kaggle 冠军广泛使用

PyTorch 资源,我们推荐官方教程,提供了稍微更有挑战性的综合方法来学习神经网络的内在工作原理。

Keras:大量可获取教程和可重用代码
PyTorch:卓越的社区支持和活跃的开发

五、Keras vs PyTorch:debug 和内省

Keras 封装了大量计算模块,这使得确定导致问题的代码较为困难。

相比起来,PyTorch 更加详细,我们可以逐行执行脚本。

Keras 用户创建的标准网络要比 PyTorch 用户创建的标准网络出错的机率小一个数量级。但是一旦出错,则损害巨大,且通常很难定位出错的代码行。PyTorch 提供更直接了当的 debug 经验,而无需关注模型复杂度。此外,当你怀疑哪里出错时,你可以查找 PyTorch repo 查看可读代码。

结论

PyTorch:debug 能力更强

Keras:debug 简单网络的需求的(潜在)频率更低

六、Keras vs PyTorch:导出模型和跨平台可移植性

Keras 获胜:它有更多的部署选项(直接通过 TensorFlow 后端),模型导出也更简单。

七、Keras vs PyTorch:性能篇

PyTorch 和 TensorFlow 一样快,在循环神经网络上或许更快,相比之下,Keras 通常速度较慢

八、Keras vs PyTorch:对比总结

Keras 和 PyTorch 都是深度学习框架初学者非常棒的选择。如果你是数学家、研究员或者想要理解模型的本质,那么可以考虑选择 PyTorch。在需要更先进的定制化和 debug 时(例如用 YOLOv3 做目标检测或者带有注意力的 LSTM),或者当我们需要优化数组表达式而不是神经网络时(例如矩阵分解或者 word2vec 算法),PyTorch 真的很棒。

如果你想要一个即插即用的框架,Keras 无疑是更简单的选择:快速构建、训练、评估模型,不需要在数学实现上花费太多的时间。

深度学习的核心概念知识是可转移的。一旦你掌握了一个环境中的基础知识,你就能学以致用,掌握新的深度学习库。

我们鼓励你在 Keras 和 PyTorch 中都尝试下简单的深度学习模型

发表评论

电子邮件地址不会被公开。 必填项已用*标注