前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TensorFlow 2.1.0 来了,重大更新与改进了解一下

TensorFlow 2.1.0 来了,重大更新与改进了解一下

作者头像
HyperAI超神经
发布2020-02-17 14:06:10
1.8K0
发布2020-02-17 14:06:10
举报
文章被收录于专栏:HyperAI超神经HyperAI超神经

By 超神经

导读:2019 年 11 月末,TensorFlow 的官方 GitHub 账号发布了 TensorFlow 2.1.0-rc 版本,现在,官方最新发布了 TensorFlow 2.1.0 正式版本。据介绍,这将是最后一个支持 Python 2 的版本。除此之外,TensorFlow 2.1.0 还带来了很多重大更新与改进,了解一下。

关键词:TensorFlow 2.1.0 正式版

TensorFlow 2.1.0 正式版本发布啦!

昨日,TensorFlow 官方 GitHub 账号中,发布了 TensorFlow 2.1.0 正式版本。

发行说明地址:https://github.com/tensorflow/tensorflow/releases

如之前在发布候选版本时所宣布(点击可了解详情),TensorFlow 2.1 是支持 Python 2 的最后一个 TF 版本。鉴于 Python 2.7 于 2020 年 1 月 1 日正式到期,Python 核心开发团队将不再对其进行任何维护,因此,TensorFlow 也从 2020 年 1 月 1 日开始停止支持Python 2。

除此之外,TensorFlow 2.1.0 还在 tf.keras、tf.data、tf.debugging 等均带来了更新与改进。

最新版本的主要特点和改进

该 tensorflow pip 软件包现在在默认情况下包括 GPU 支持(与 tensorflow-gpu 一样),适用于 Linux 和 Windows。它在带有和不带有 NVIDIA GPU 的机器上均可运行。

更新后用户只需安装一个软件包即可

不再需要区分 CPU 与 GPU 环境

tensorflow-gpu 仍然可用,对于关注软件包大小的用户,可以在 tensorflow-cpu 下载纯 CPU 软件包。

对于 Windows 用户,正式发布的 tensorflow Pip 软件包现在使用 Visual Studio 2019 16.4 版本生成,以便利用新的编译器标志。

要使用这些新软件包,用户必须安装「Microsoft Visual C ++ Redistributable for Visual Studio 2015、2017 和 2019」,下载地址传送:https://support.microsoft.com/zh-cn/help/2977003/the-latest-supported-visual-c-downloads。

需要注意的是:

  • 这不会更改在 Windows 上从源代码构建 TensorFlow 所需的最低版本,但是在没有此标志的情况下,构建 EIGEN_STRONG_INLINE 可能需要超过 48 个小时以上的时间才能编译。有关 EIGEN_STRONG_INLINE 和 /d2Reduced OptimizeHugeFunctions 的更多信息。请参阅 configure.py。
  • 如果用户的计算机上缺少任何一个必需的 DLL msvcp140.dll(旧)或msvcp140_1.dll(新),import tensorflow 将会输出警告消息。

另外,官方还介绍,该 tensorflow pip 软件包是用 CUDA 10.1 和 cuDNN 7.6 建立的。

tf.keras 的更新

在 GPU 和 Cloud TPU 上提供了对混合精度的实验支持,引入了 TextVectorization 层,该层以原始字符串作为输入,并负责文本标准化,标记化,n-gram 生成和词汇索引。具体可参考这个端到端文本分类示例:

https://colab.research.google.com/drive/1RvCnR7h0_l4Ekn5vINWToI9TNJdpUZB3。

用户对 TextVectorization 层的引入感到兴奋

只要模型是在一个范围内构建的,Keras.compile .fit .evaluate 和 predict 就允许被分布于 DistributionStrategy 范围之外。

Cloud TPU Pod 提供了对 Keras .compile,.fit,

.evaluate,以及 .predict 的实验支持,适用于云计算的 TPU,Cloud TPU,以及所有类型的 Keras 模型(顺序,功能和子类模型)。

并且,现已经为云 TPU 启用了自动外部编译。这样允许 tf.summary 更方便地与Cloud TPU 一起使用。

Cloud TPU 支持带有 DistributionStrategy 和 Keras 的动态批处理大小。

除了 tf.data.Dataset 之外,还可以使用 numpy 数据支持的 TPU 上的 .fit,.evaluate,.predict,在 TensorFlow Model Garden 中提供了许多流行模型的 Keras 参考实现。

tf.data 的更新

对 tf.data datasets + DistributionStrategy(数据集+分布策略)的 rebatching 做了一些更改,以获得更好的性能。

需要注意的是,数据集的行为也略有不同,因为重新标记的数据集基数将始终是副本数的倍数。

tf.data.Dataset 现在支持在分布式环境中(包括在 TPU pod 上)自动进行数据分发和分片。

tf.data.Dataset 的分发策略,现在可以调整为:

代码语言:javascript
复制
tf.data.experimental.AutoShardPolicy(OFF, AUTO, FILE, DATA)
tf.data.experimental.ExternalStatePolicy(WARN, IGNORE, FAIL)

tf.debugging

添加了 tf.debugging.enable_check_numerics()和tf.debugging.disable_check_numerics()来帮助调试涉及 infinities 和 NaNs 的问题的根本原因。

tf.distribute

在 TPU 和 TPU pods上的自定义训练循环支持,可以通过以下来实现:

代码语言:javascript
复制
strategy.experimental_distribute_dataset
strategy.experimental_distribute_datasets_from_function
strategy.experimental_run_v2
strategy.reduce

除了 strategy.scope() 之外,还通过tf.distribute.

experimental_set_strategy() 支持全局分布策略。

TensorRT

现在默认情况下支持并启用 TensorRT 6.0。这增加了对更多对 TensorFlow 操作的支持,包括

代码语言:javascript
复制
Conv3D
Conv3DBackpropInputV2
AvgPool3D
MaxPool3D
ResizeBilinear
ResizeNearestNeighbor

此外,TensorFlow-TensorRT python 转换 API 导出为 tf.experimental.tensorrt.Converter。

添加了环境变量 TF_DETERMINISTIC_OPS。当设置为「true」或「1」时,此环境变量使 tf.nn.bias_add 操作确定性地(即可重现地)进行,但当前仅在未启用 XLA JIT 编译时才这样操作。

设置 TF_DETERMINISTIC_OPS 为「true」或「1」也会使 cuDNN 卷积和最大池操作具有确定性。这使得 Keras Conv * D 和 MaxPool * D 层 CUDA-enabled GPU上运行时,可确定地在向前和向后两个方向上操作。

重大变化

删除了我们不知道用法的 Operation.traceback_with_start_lines。

从 tf.Tensor.__repr__()as 中移除了 id,因为 id 除了内部调试外没有其他用处。

如果当时,不是在 session.run()期间,输入张量的值已知,则某些 if.assert_* 方法现在在操作创建时会触发断言。这仅当图形执行会导致错误时才会更改行为。发生这种情况时,将返回一个 noop,并将输入张量标记为不可馈送(non-feedable)。

换句话说,如果它们在 session.run() 被用作 feed_dictto 的参数的键,则会引发错误。同样,由于某些断言操作没有放入图中,因此图结构也会发生变化。如果未明确给出(最常见),则不同的图可能会产生不同的 per-op 随机种子。

以下 API 不再实验:

代码语言:javascript
复制
tf.config.list_logical_devices
tf.config.list_physical_devices
tf.config.get_visible_devices
tf.config.set_visible_devices
tf.config.get_logical_device_configuration
tf.config.set_logical_device_configuration

此外,tf.config.experimentalVirtualDeviceConfi-

guration 已重命名为 tf.config.LogicalDeviceCon-figuration。

tf.config.experimental_list_devices 已被删除,请使用 tf.config.list_logical_devices。

除了以上重要更新外,TensorFlow 2.1.0 还进行了多项错误修复与更改,具体可在发行说明中查看(https://github.com/tensorflow/tensorflow/releases)。

—— 完 ——

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 HyperAI超神经 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档