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

2020-02-17 14:06:10 浏览数 (1)

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)。

—— 完 ——

0 人点赞