今年 3 月份,谷歌在加州举办的 TensorFlow 开发者峰会(TensorFlow Dev Summit)上正式发布了 Tensorflow 2.0 Alpha 版。今天,谷歌推出 TensorFlow 2.0 正式版,真乃开发者社区的一大盛事。
TensorFlow 2.0 安装指南:https://www.tensorflow.org/install
TensorFlow 2.0 的发布得益于开发者社区的推动,他们想要拥有一个灵活且强大的易用平台,并且希望 TensorFlow 支持部署到任何平台。因此,TensorFlow 2.0 为开发者、企业和研究者提供了一个全面的工具生态系统,为他们推动机器学习领域(ML)的 SOTA 进展以及构建可扩展 ML 赋能的应用提供便利。
TensorFlow 2.0 使得 ML 应用的开发更加方便。借助于高度集成的 Keras、默认的 Eager Execution(一种命令式编程环境,可立即评估操作,无需构建图)以及 Pythonic 功能执行,TensorFlow 2.0 使得 Python 开发者能够尽可能地熟悉开发应用的经验。针对那些想要突破 ML 界限的研究者,谷歌在 TensorFlow 的低级 API 上投入了大量精力:现在可以导出内部使用的所有 ops,并提供关于变量和检查点等重要概念的可继承界面(inheritable interface)。
TensorFlow 2.0 在 GPU 上有很多性能改进。通过几行代码,并利用 Volta 和图灵 GPU 上的混合精度,TensorFlow 2.0 的训练性能最高提升 3 倍。TensorFlow 2.0 高度集成 TensorRT,并在谷歌云的英伟达 T4 云 GPU 的推理过程中通过改进的 API 实现更好的使用性和高性能。
TensorFlow 中构建模型至关重要的一点是对训练和验证数据的有效访问。因此,谷歌推出了 TensorFlow Datasets,从而为包含图像、文本、视频等各类数据的众多数据集提供一个标准访问界面。
TensorFlow Datasets 地址:https://www.tensorflow.org/guide/data
TensorFlow 2.0 虽然依然保留了传统的基于会话的编程模型,谷歌建议用户使用具有 Eager Execution 的常规 Python 开发。tf.function 装饰器可用于将代码转化为图,从而可以实现远程执行、序列化和性能优化。这得益于 Autograph 的补充,它可以将常规的 Python 控制流直接转化为 TensorFlow 控制流。
Autograph 地址:https://www.tensorflow.org/guide/function
当然,为了消除用户对于从 1.x 迁移到 2.0 版本的顾虑,谷歌推出了一份迁移指南。2.0 版本同时也包含了自动转换脚本,帮助用户进行迁移。
指南地址:https://www.tensorflow.org/guide/migrate
谷歌表示,在 TensorFlow2.0 的开发中,开发团队和其他合作伙伴进行广泛的沟通。例如,TensorFlow2.0 帮助谷歌新闻部门部署了一个 BERT 模型,显著减少了内存占用。
同时,对于非 Python 语言的开发者而言,TensorFlow2.0 也提供了 TensorFlow.js (https://www.tensorflow.org/js),官方表示 Swift 语言的版本也在开发中。
为了方便初学者和开发者进行学习,官方在 deeplearning.ai 和 Udacity 都提供了相关教程。
主要特性和改进
TensorFlow 2.0 重点关注易用性,更新了以下主要内容:
使用 Keras 和 eager 模式进行更新
在任何平台上都可以进行稳健的模型部署
性能更好的研究实验
简化多种 API
许多后端不兼容的 API 更新已经被清理,使得它们更为稳定,更改的 API 包括:
tf.contrib 已经被移除,其功能已被并入核心的 TensorFlow 的 API 中;
tf.contrib.timeseries 在 TF distribution 的依赖已经被移除;
contrib 的相关索引已经被 tf.estimator.experimental.*替代。
tf.keras.optimizers 代替了之前在 tf.estimator.DNN/Linear/DNNLinearCombined 中使用的 estimator——tf.compat.v1.train.Optimizers;
Estimator.export_savedmodel 已更名为 export_saved_model;
当保存模型时,Estimators 会自动去除默认的算子属性。如果需要使用默认属性用于模型,可使用 tf.compat.v1.Estimator;
特征栏已经更新,更适合 Eager 模式,并能够和 Keras 一起使用。
OMP_NUM_THREADS 不再被用于默认的 Keras 设置项了。要设置进程数量,可使用 tf.config.threading;
tf.keras.model.save_model 和 model.save 是默认的模型保存 API,但 HDF5 依然支持;
tf.keras.experimental.export_saved_model 和 tf.keras.experimental.function 被移除。请使用 tf.keras.models.save_model(..., save_format='tf') 和 tf.keras.models.load_model;
层设置默认为 float32,并自动按照输入进行调整。如果某一个模型使用的是 float64,在 2.0 中会直接被改成 float32,并提示:Layer <layer-name> 已被改变。要解决这个问题,可使用 tf.keras.backend.set_floatx('float64') 进行设置,或在每一层被构建的时候声明 dtype='float64'。
pip install tensorflow-gpu
因为使用 Keras 高级 API,TensorFlow2.0 的搭建和编译模型也非常简单,基本就是调用已有的成熟方法就行了。其中搭建模型架构可以像堆积木那样完成,编译只需要给定最优化器、损失函数和度量方法三个关键要素就行了。
下面,我们可以看看模型训练与评估的风格。没有 tf.Session()、没有 sess.run()、没有各种占位符的 feed_dict,一切都只要简单的一行代码。
最新上线:15大领域、127个任务,机器学习 SOTA 研究一网打尽。
www.jiqizhixin.com/sota
PC 访问,体验更佳