赞
踩
Keras vs PyTorch:debug 和内省
Keras 封装了大量计算模块,这使得确定导致问题的代码较为困难。
相比起来,PyTorch 更加详细,我们可以逐行执行脚本。和 debug NumPy 类似,我们可以轻松访问代码中的所有对象,使用 print 语句(或任何标准 Python debug 语句)查看有问题的代码。
Keras 用户创建的标准网络要比 PyTorch 用户创建的标准网络出错的机率小一个数量级。但是一旦出错,则损害巨大,且通常很难定位出错的代码行。PyTorch 提供更直接了当的 debug 经验,而无需关注模型复杂度。此外,当你怀疑哪里出错时,你可以查找 PyTorch repo 查看可读代码。
结论
PyTorch:debug 能力更强
Keras:debug 简单网络的需求的(潜在)频率更低
Keras vs PyTorch:导出模型和跨平台可移植性
在生产环境中,导出和部署自己训练的模型时有哪些选择?
PyTorch 将模型保存在 Pickles 中,Pickles 基于 Python,且不可移植,而 Keras 利用 JSON + H5 文件格式这种更安全的方法(尽管在 Keras 中保存自定义层通常更困难)。另一方面,Keras 也有 R 语言接口,如果你合作的数据分析师团队使用 R 语言,那么你会用得上它。
Keras 是在 TensorFlow 上运行的,这意味着它可以通过 TensorFlow for Mobile 和 TensorFlow Lite 享有更多选择来部署到移动平台。你编写的 web 应用也可以通过 TensorFlow.js 或 Keras.js 部署到网页上。例如,你可以看看这个深度学习驱动的浏览器插件,它可以检测密集恐惧症触发因素:https://github.com/cytadela8/trypophobia。
导出 PyTorch 模型的过程由于其 Python 代码的限制而更加费力,目前人们广泛采用的方法是首先使用 ONNX 将 PyTorch 模型转换为 Caffe2 形式。
结论
Keras 获胜:它有更多的部署选项(直接通过 TensorFlow 后端),模型导出也更简单。
Keras vs PyTorch:性能篇
Donald Knuth 有一句名言:不成熟的优化是编程中所有邪恶(至少大部分)的根源。
在大多数情况下,基准测试中的速度差异不应该成为框架选择的主要标准——特别是在学习阶段。GPU 时间比其数据科学家的时间显然便宜得多。而且,在学习过程中,性能瓶颈大多是由失败的实现、未优化的网络和数据加载造成的,而不是框架本身的运行速度。当然,为了完整地进行比较,我们还是要介绍这一方面。在这里我们推荐两个性能对比结果:
Wojtek Rosiński 的《TensorFlow, Keras and PyTorch Comparison》:https://wrosinski.github.io/deep-learning-frameworks/
微软的《Comparing Deep Learning Frameworks: A Rosetta Stone Approach》:https://github.com/ilkarman/DeepLearningFrameworks/
PyTorch 和 TensorFlow 一样快,在循环神经网络上或许更快,相比之下,Keras 通常速度较慢。正如第一篇文章的作者指出的那样:大多数情况下,高性能框架(即 PyTorch 和 TensorFlow)的计算效率优势不敌快速开发环境以及 Keras 提供的实验易用性。
结论
就训练速度而言,PyTorch 胜过 Keras
Keras vs PyTorch:对比总结
Keras 和 PyTorch 都是深度学习框架初学者非常棒的选择。如果你是数学家、研究员或者想要理解模型的本质,那么可以考虑选择 PyTorch。在需要更先进的定制化和 debug 时(例如用 YOLOv3 做目标检测或者带有注意力的 LSTM),或者当我们需要优化数组表达式而不是神经网络时(例如矩阵分解或者 word2vec 算法),PyTorch 真的很棒。
如果你想要一个即插即用的框架,Keras 无疑是更简单的选择:快速构建、训练、评估模型,不需要在数学实现上花费太多的时间。
深度学习的核心概念知识是可转移的。一旦你掌握了一个环境中的基础知识,你就能学以致用,掌握新的深度学习库。
我们鼓励你在 Keras 和 PyTorch 中都尝试下简单的深度学习模型。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。