TensorFlow 2.0中的tf.keras和Keras有何区别?为什么以后一定要用tf.keras?
IT服务圈儿
有温度、有态度的IT自媒体平台
选自pyimagesearch
作者:Adrian Rosebrock
参与:王子嘉、张倩
随着 TensorFlow 2.0 的发布,不少开发者产生了一些疑惑:作为 Keras 用户,TensorFlow 2.0 的发布跟我有关系吗?TensorFlow 中的 tf.keras 和 Keras 有什么区别?我该用哪一个训练神经网络?在本文中,作者给出的答案是:你应该在以后所有的深度学习项目和实验中都使用 tf.keras。
你好,Adrian,我看到 TensorFlow 2.0 在几天前发布了。而且 TensorFlow 开发人员似乎正在推广 Keras,或者应该叫 tf.keras,希望将它作为 TensorFlow 2.0 中的推荐高级 API。但是我觉得 Keras 包应该是自己独立的呀?我在训练自己的网络时,会纠结于该使用哪个「Keras」。其次,有必要升级到 TensorFlow 2.0 吗?我在深度学习博客中看到了一些有关 TensorFlow 2.0 的教程,但是对于刚刚提到的那些困惑,我不知道该从何处着手去解决。你能给我一些启示吗?
作为 Keras 用户,TensorFlow 2.0 对我来说意味着什么?
我应该使用 keras 软件包来训练自己的神经网络,还是在 TensorFlow 2.0 中使用 tf.keras 子模块?
作为一个 Keras 用户,TensorFlow 2.0 有哪些值得关注的特性?
Sessions 和 eager execution
自动求导
模型和层的子类化
更好的多 GPU /分布式训练支持
Keras 最初是由 Google AI 开发人员/研究人员 Francois Chollet 创建并开发的。
Francois 于 2015 年 3 月 27 日将 Keras 的第一个版本 commit 并 release 到他的 GitHub。
一开始,Francois 开发 Keras 是为了方便他自己的研究和实验。
但是,随着深度学习的普及,许多开发人员、程序员和机器学习从业人员都因其易于使用的 API 而涌向 Keras。
这是 Keras 首个与 tf.keras 同步的版本;
这也是 Keras 支持多个后端(即 Theano,CNTK 等)的最终版本。
最重要的是,所有深度学习从业人员都应将其代码转换成 TensorFlow 2.0 和 tf.keras 软件包。
原始的 keras 软件包仍会接收 bug 并修复,但请向前看,你应该开始使用 tf.keras 了。
Keras v2.3.0 是 Keras 第一个与 tf.keras 同步的版本,也将是最后一个支持除 TensorFlow 以外的后端(即 Theano,CNTK 等)的主要版本。最重要的是,深度学习从业人员应该开始使用 TensorFlow 2.0 和 tf.keras 软件包了。
这也是 Keras 支持多个后端的最后一个主要版本。长期来看,我们建议用户考虑开始将 TensorFlow 2.0 中的 Keras 代码切换为 tf.keras。它实现了与 Keras 2.3.0 相同的 API(因此这个改变应该像更改 Keras 导入语句一样容易),但是对 TensorFlow 用户来说,它具有许多优势,例如对 eager execution、distribution、TPU 训练的支持,以及通常来说对底层的 TensorFlow 与顶层概念(如「层」和「模型」)之间更好的集成度。它也会得到更好的维护。
https://github.com/sayakpaul/tf - 2.0 - hacks/tree/master/speed%20comparison%20between%20tf%201.x%20and%20tf%202.0。
定义我们的损失函数以及优化器:
然后就可以训练模型了:
序列化
函数化
子类化
变得更加灵活。
使你能够实现并使用自定义损失函数。
基于你有多个 GPU,TensorFlow 会为你考虑如何使用多 GPU 进行训练的。
使用 TensorFlow Lite (TF Lite) 将这些模型部署到移动/嵌入式环境中;
使用 TensorFlow Extended (TF Extended) 将模型部署到生产环境中。
*版权声明:转载文章和图片均来自公开网络,版权归作者本人所有,推送文章除非无法确认,我们都会注明作者和来源。如果出处有误或侵犯到原作者权益,请与我们联系删除或授权事宜。