查看原文
其他

谷歌重磅发布TensorFlow 2.0正式版,高度集成Keras,大量性能改进

(给Python开发者加星标,提升Python技能

转自:机器之心,作者:杜伟、一鸣

今年 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 赋能的应用提供便利。

视频:TensorFlow2.0正式版发布。



使用 TensorFlow 2.0 进行模型构建


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 都提供了相关教程。


  • deeplearning.ai 教程地址:https://www.coursera.org/learn/introduction-tensorflow

  • Udacity 教程地址:https://cn.udacity.com/course/intro-to-tensorflow-for-deep-learning--ud187


2.0 正式版有哪些更新


主要特性和改进


TensorFlow 2.0 重点关注易用性,更新了以下主要内容:


  • 使用 Keras 和 eager 模式进行更新

  • 在任何平台上都可以进行稳健的模型部署

  • 性能更好的研究实验

  • 简化多种 API


重大更新


许多后端不兼容的 API 更新已经被清理,使得它们更为稳定,更改的 API 包括:


  • tf.contrib 已经被移除,其功能已被并入核心的 TensorFlow 的 API 中;

  • tf.contrib.timeseries 在 TF distribution 的依赖已经被移除;

  • contrib 的相关索引已经被 tf.estimator.experimental.*替代。


tf.estimator:
  • 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 一起使用。


tf.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'。


tf.lite:


  • lite.OpHint, lite.experimental 和 lite.constant 都被移除了。


此外还有一系列 Bug 修复和其他改进。


如何使用 TF 2.0


安装


用户可使用 pip 进行安装。


CPU 版本为:


pip install tensorflow


GPU 版本为:


pip install tensorflow-gpu

示例代码


因为使用 Keras 高级 API,TensorFlow2.0 的搭建和编译模型也非常简单,基本就是调用已有的成熟方法就行了。其中搭建模型架构可以像堆积木那样完成,编译只需要给定最优化器、损失函数和度量方法三个关键要素就行了。


下面,我们可以看看模型训练与评估的风格。没有 tf.Session()、没有 sess.run()、没有各种占位符的 feed_dict,一切都只要简单的一行代码。



训练完模型后,最后就是做推断了:

推荐阅读

(点击标题可跳转阅读)

你好,TensorFlow

TensorFlow 资源大全中文版


觉得本文对你有帮助?请分享给更多人

关注「Python开发者」加星标,提升Python技能

好文章,我在看❤️

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存