【导读】TensorFlow 2.1将会成为支持python2的最后一个TF版本。python官方和TensorFlow官方将于2020年1月1日(也就是4天后)同时结束对python2的支持,2019不会发布新版本了。本文将介绍TensorFlow 2.1.0-rc2的变化。
主要特点和改进
pip install tensorflow安装的TF默认也有gpu支持了(windows、linux),pip install tensorflow-gpu仍旧可以用,如果考虑到包的大小,也可以用只支持CPU的:tensorflow-cpu
Windows用户:为了使用新的
/d2ReducedOptimizeHugeFunctions编译器标志(compiler flag),官方发布的tensorflow pip安装包是用Visual Studio 2019 16.4 版本构建(build)的,所以使用新版本的TF pip包,必须安装“Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019”
(1)这不会使得Windows上从源码构建的TF的最低版本改变,但是没有这个标志(flag),会使得用EIGEN_STRONG_INLINE的构建(build)超过48小时。更多信息查看configure.py
(2)如果你的机器上缺少必需的 DLL,msvcp140.dll(旧)或 msvcp140_1.dll(新),使用import tensorflow会显示警告消息
tensorflow pip安装包CUDA 10.1、cuDNN 7.6构建的
tf.keras
(1)GPU和Cloud TPU提供了对混合精度的实验支持
(2)引入了TextVectorization层,该层将原始字符串作为输入,并负责文本标准化,标记化,n-gram生成和词汇索引。
(3)只要在scope内构建模型,Keras的 .compile .fit .evaluate和.predict就可以在DistributionStrategy scope之外使用。
(4)对于所有类型的Keras模型(sequential、 functional、subclassing模型),Cloud TPU对Keras .compile,.fit,.evaluate和.predict均提供了实验支持。
(5)为Cloud TPUs启用了自动外部编译。使得tf.summary可以更方便地与Cloud TPU一起使用。
(6)动态batch sizes设置:Cloud TPU的支持DistributionStrategy和Keras的动态batch sizes设置。
(7)除tf.data.Dataset之外,还使用numpy数据支持TPU上的.fit,.evaluate,.predict
(8)常用模型的Keras相关实现:TensorFlow 模型库
tf.data
(1)更改tf.data datasets+ DistributionStrategy的重新标记以获得更好的性能。请注意,数据集的行为也略有不同,因为重新标记的数据集基数将始终是副本数的倍数。
(2)tf.data.Dataset现在支持在分布式环境中(包括在TPU容器上)自动进行数据分发和分片。
(3)tf.data.Dataset的分发策略现在可以使用
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()来帮助调试涉及无限性和NaN的问题的根源。
tf.distribute
(1)可通过以下方式在TPU和TPU pods上提供自定义训练循环支持
strategy.experimental_distribute_dataset, strategy.experimental_distribute_datasets_from_function, strategy.experimental_run_v2, strategy.reduce
(2)通过以下方式支持全球分布式战略tf.distribute.experimental_set_strategy(), in addition to strategy.scope()
TensorRT
现在默认情况下支持并启用TensorRT 6.0。这增加了对更多TensorFlow操作的支持,包括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的GPU上运行时可确定地在向前和向后两个方向上运行。
必须知道的问题:由于在Windows上构建的问题,我们关闭了Windows构建的本征强内联。在解决生成问题之前,Windows二进制文件预计会稍慢一些。
重大变化
删除我们不知道其用法的
Operation.traceback_with_start_lines
从tf.Tensor .__ repr __()中删除了id,因为id除内部调试外没有用。
现在,如果当时知道输入张量的值,而不是session.run()时,某些tf.assert_ *方法会在操作创建时引发断言。仅当图形执行会导致错误时,这才会更改行为。发生这种情况时,将返回noop并将输入张量标记为不可进给。换句话说,如果将它们用作session.run()的feed_dict参数中的键,则将引发错误。同样,由于某些断言操作未将其放入图形中,因此图形结构也会发生变化。如果未明确给出(最常见),则不同的图可能会产生不同的每操作随机种子。
以下API不再处于试验阶段: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.experimentalVirtualDeviceConfiguration
已重命名为tf.config.LogicalDeviceConfiguration
tf.config.experimental_list_devices已被删除,请
使用 tf.config.list_logical_devices
bug修复和其他变化请参考原网址
https://github.com/tensorflow/tensorflow/releases/tag/v2.1.0-rc2