将 Keras 并入 TensorFlow,到底是不是一个正确的决定p>
近日,Reddit 上出现了一个「悼念」Keras 的帖子,引发了不少人的围观。发帖者表示,谷歌已经慢慢地将 Keras 杀死了。
这一切还要从 Keras 和谷歌的恩怨说起。
Keras 与谷歌的 TensorFlow 有一段极其复杂的历史,这个故事很长,有很多细节,有时甚至会有一些矛盾。
为了训练你自己的自定义神经 络,Keras 需要一个后端。后端是一个计算引擎——它可以构建 络的图和拓扑结构,运行优化器,并执行具体的数字运算。你可以把后台看作是你的数据库,Keras 是你用来访问数据库的编程语言。
一开始,在 v1.1.0 之前,Keras 的默认后端都是 Theano。与此同时,Google 发布了 TensorFlow,这是一个用于机器学习和神经 络训练的符 数学库。Keras 开始支持 TensorFlow 作为后端。渐渐地,TensorFlow 成为最受欢迎的后端,这也就使得 TensorFlow 从 Keras v1.1.0 发行版开始成为 Keras 的默认后端。
一般来说,一旦 TensorFlow 成为了 Keras 的默认后端,TensorFlow 和 Keras 的使用量会一起增长——没有 TensorFlow 的情况下就无法使用 Keras,所以如果你在系统上安装了 Keras,那么你也得安装 TensorFlow。
同样的,TensorFlow 用户也越来越被高级 Keras API 的简单易用所吸引。tf.keras 是在 TensorFlow v1.10.0 中引入的,这是将 keras 直接集成到 TensorFlow 包中的第一步。
tf.keras 软件包与你通过 pip 安装的 keras 软件包(即 pip install keras)是分开的。为了确保兼容性,原始的 keras 包没有被包含在 tensorflow 中,因此它们的开发都很有序。
然而,这种情况后来发生了改变改变——当谷歌在 2019 年 6 月发布 TensorFlow 2.0 时,他们宣布 Keras 现在是 TensorFlow 的官方高级 API,用于快速简单的模型设计和训练。随着 Keras 2.3.0 的发布,Francois 在声明中写道:
这是 Keras 首个与 tf.keras 同步的版本,也是 Keras 支持多个后端(即 Theano,CNTK 等)的最终版本。最重要的是,所有深度学习从业人员都应将其代码转换成 TensorFlow 2.0 和 tf.keras 软件包。原始的 keras 软件包仍会接收 bug 并修复,但请向前看,你应该开始使用 tf.keras 了。
基于这些体验,发帖者认为,Keras 已经被谷歌杀死了。
除此之外,之前的一些开发者也指出了二者合并之后带来的一些问题。比如 API 混乱。二者合并之后,tf.keras 中的高级 API 与 tf 中的底层 API 经常需要混用,这样的整合会让开发者不知所措。与此同时,API 的割裂也加大了开发者寻找教程的难度。比如在 TF 2.0 版本中,除了「TF2.0」 这个关键字,你还要弄清楚:这个文档是关于 TF2.0 本身的,还是关于 tf.keras 的。
悼念着挺好的啊
虽然 Keras 并入 TensorFlow 造成了一些混乱,但有不少开发者认为,这一举动并没有毁掉 Keras,反而解决了很多实际问题。
一位用户名为「acardosoj」的开发者认为,「Keras API 比以前更容易了。现在你有了更多的函数可以选择,可以更加轻松地利用 TensorFlow 分布式训练。你可以用几行代码在数百个 GPU 上训练一个巨大的模型。」这些在 2016 年都是不可能的。
甚至有位 TF 的用户表示,从 TF 转向完全集成了 Keras API 的 TF 2 是一个最好的选择。
「Tensorflow 从一开始就是一团糟,它非常适合作为可微分编程的工具,但在设计上有一些问题影响了灵活性。PyTorch 的动态图计算做的更好,TF2 想追赶但为时已晚。」
与其说 TensorFlow 杀死了 Keras,还不如说 TF2 杀死了 Tensorflow。当转向 Jax 的人数越来越多,Keras 会随之销声匿迹吗p>
参考链接:https://www.reddit.com/r/MachineLearning/comments/mhrpbm/d_keras_killed_by_google/
文章知识点与官方知识档案匹配,可进一步学习相关知识OpenCV技能树OpenCV中的深度学习图像分类11584 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!