深度学习框架zf_2020 年的深度学习框架选择

8c89051eae608230526fc3272f01c114.png

Tensorflow 出了 2.0,也内置了 Keras API,据说写代码简单了很多。

最近花几周时间尝试,记录一下体会和思考。

总体观点

  1. 新手入门,建议从 keras 开始。
  2. 如果能手写公式,且能实现出模型,就不要学 keras 了。有用,但投入产出比不高。
  3. Tensorflow 内置了 Keras,单独安装 Keras 基本是不需要了。

产品中的算法落地,用 Tensorflow。学术研究用 PyTorch。

Keras 是入门玩具,不宜依赖。

MxNet 的训练速度快 30%,收益不大。

主流框架对比

Tensorflow: 适合算法落地,周边生态成熟。

1f833eb394033ecf05e6dffae044a837.png

PyTorch:学术界普遍使用 。开发新模型简单,尤其是 NLP 领域。

引自:https://www.qbitai.com/2017/09/1000.html

我们为什么开始尝试PyTorch?
当我们开发第二门课《面向程序员的前沿深度学习》的时候,原来选的TensorFlow和Keras框架开始让我们处处碰壁。
比如说,现在自然语言处理中最重要的技术,大概是attention模型。可是我们发现,当时在Keras上没有attention模型的有效实现,而TensorFlow实现没有文档、一直在改,还复杂得毫无必要。
结果是我们决定自己在Keras里做一个attention模型实现,花了好长时间,debug也非常难。
接下来,我们又开始研究dynamic teacher forcing的实现。要实现一个准确的神经网络翻译模型,dynamic teacher forcing是其中的关键,但我们无论是在Keras里还是TensorFlow里,都找不到这个模型的实现。
于是,我们又开始尝试自己搞,这次比attention模型还失败,根本就没做出来能用的。
这时候,PyTorch的第一个预发布版出现了。这个新框架不是基于静态计算图,而是一个动态的框架,这为我们带来了新的希望。它说,动态框架让我们在开发自己的神经网络逻辑时,只需要写普通的Python代码,像正常用Python一样去debug。
我们第一次用PyTorch,就用它从头开始在实现了Attention模型和dynamic teacher forcing,只用了几个小时。

MxNet:代码风格统一,SOTA 的 pretrain model 多。训练速度快。

无信息补充。

Keras:上手简单,API 设计的不适合深度定制开发。

  1. 优点:上手很简单,代码里也不用出现数学公式。
  2. 缺点:API 和公式脱节,debug 的时候,根本猜不出来 API 背后到底做了多少事情,需要花时间去读源码。跟自己手撸一遍公式相比,不觉得省时间。
  3. 缺点:定制自己的东西太难了,一层一层 API 读下去,照着抄回来,都忘了自己要干嘛。

框架的速度对比

从 Nvidia 产品的 benchmark 看 3 个框架的速度,MxNet 速度明显最快(30%)。

这点速度差异,对于大多数产品来说,影响不大。

https://developer.nvidia.com/deep-learning-performance-training-inference

dbd689e7e3903640a62b5477df319e3b.png

参考资料

  1. TensorFlow 好难,学 Keras 会不会简单一些?https://www.zhihu.com/question/298639259
  2. 深度学习入门该用PyTorch还是Keras?热门公开课换框架背后的学问 https://www.qbitai.com/2017/09/1000.html
  3. TensorFlow 2.0 中的 tf.keras 和 Keras 有何区别?为什么以后一定要用 tf.keras? http://bbs.cvmart.net/topics/1287
  4. 对比复现34个预训练模型,PyTorch和Keras你选谁? https://www.jiqizhixin.com/articles/19031003
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值