TensorFlow 1.11.0 已正式发布!

343 阅读4分钟
原文链接: mp.weixin.qq.com

TensorFlow 1.11.0 版本正式发布啦!

本文将为大家介绍此版本的一些重大改变、主要功能和改进、Bug 修复以及其他变化。

主要特点和改进

Nvidia GPU:

  • 现在(根据 TensorFlow 1.11)预构建的二进制文件是针对 cuDNN 7.2 和 TensorRT 4 构建的。请查看升级的安装指南:Installing TensorFlow on Ubuntu(https://www.tensorflow.org/install/install_linux#tensorflow_gpu_support)

Google Cloud TPU:

  • 针对 Google Cloud TPU 上的 Keras 的实验性 tf.data 集成

  • 在 Google Cloud TPU 上对 Eager Execution 进行试验性/预览支持

分布式策略:

  • 为 tf.keras 添加 multi-GPU 分布式策略支持。fit,evaluate,predict 开始支持分布式

  • 在 Estimator 中添加 multi-worker 的分布式策略支持和独立客户端支持。 查看 [README] (https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/distribute)  了解更多细节

添加 C, C++, 和 Python 函数来查询内核

重大改变

Keras:

  • tf.keras 的 RandomUniform, RandomNormal 和 TruncatedNormal 初始化程序的默认值已更改,以保证与外部 Keras 中的默认值相匹配

  • 重大改变:运行 Sequential 模型的 model.get_config() 方法,现在返回 config dictionary(与其他模型实例保持一致),不再返回基础层的配置列表

Bug 修复以及其他变化

C++:

  • 更改了 SessionFactory::NewSession 的签名,使其能够对错误给出详细的信息

tf.data:

  • tf.contrib.data.make_csv_dataset() 去除了 num_parallel_parser_calls 参数

  • 如果参数没有匹配的文件,则 tf.data.Dataset.list_files() 在初始化时会报异常

  • 为了清晰起见,将 BigTable 类别重新命名为 BigtableTable

  • 记录 Cloud Bigtable API 的使用情况

  • 添加 tf.contrib.data.reduce_dataset,可用于将数据集减少到单个元素

  • 泛化 tf.contrib.data.sliding_window_batch

INC:

  • 对三角求解进行了运行上的改进

tf.contrib

  • 为 tf.keras.layers.LocallyConnected2D 和 tf.keras.layers.LocallyConnected1D 添加了 implementation 参数。 新模式(implementation = 2)在执行前向传播时以单个密集矩阵的乘积来进行,这在某些场景下会带来显著加速(但在某些场景下可能会导致性能降低 - 请参阅 docstring)。 该选项还允许使用 padding = same

  • 添加了新文档来说明 tf.fill 和 tf.constant 之间差异

  • 实验性地添加了 IndexedDatasets

  • 使用 lite proto 运行时添加选择性注册目标

  • 为 TensorFlow Lite Java 添加简单的 Tensor 和 DataType 类别

  • 添加对 uint32 和 uint64 的 bitcasting 的支持

  • 添加了一个 Estimator 子类,该子类可以从SavedModel(SavedModelEstimator)创建

  • 添加叶形索引模式作为参数

  • 从 tf.contrib.image.transform 的输入中允许不同的输出形状

  • 将 StackedRNNCell 的 state_size 顺序更改为自然顺序。为保持现有行为,用户可以在构造 StackedRNNCell 时添加 reverse_state_order = True

  • 弃用 self.test_session(),以支持 self.session() 或 self.cached_session()

  • 直接导入 tensor.proto.h(传递导入将很快从 tensor.h 中删除)

  • Estimator.train() 现在支持开箱即用的 tf.contrib.summary。* 每次调用.train() 现在都会创建一个单独的 tfevents 文件,不再重新使用共享文件

  • 修复 FTRL 优化器 L2 的收缩性能:L2 收缩项的梯度不应该在累加器中终止

  • 修复 toco 在 Windows 上编译/执行的 bug

  • 添加了 GoogleZoneProvider 类别,以检测 TensorFlow 程序的各部分在 Google Cloud Engine 运行的位置

  • 现在可以安全地在 nullptr 上调用任何 C API 的 TF_Delete * 函数

  • 将 Android 上的一些错误信息记录到日志

  • 匹配 TFLite 中的 FakeQuant 数字,以提高 TFLite 量化推理模型的准确性

  • GCS 文件系统的可选存储桶位置检查

  • StringSplitOp 和 StringSplitV2Op 的性能得到加强

  • 正则表达式替换操作的性能得到提高

  • 如果 if.write() 失败,TFRecordWriter 现在会报错

  • TPU:TPUClusterResolvers 集群解析器将会提供更详细有用的错误消息

  • 不推荐使用 SavedModelBuilder 方法添加 MetaGraphs 的 legacy_init_op 参数。 请改用等效的 main_op 参数。我们现在在构建 SavedModel 时明确会检查单个 main_op 或 legacy_init_op,而在以前对 main_op 的检查仅在加载时进行

  • 现在可以在 RunConfig 中配置用于 Estimator 培训的协议

  • 三角数的求解性能得到提高

  • 将 TF 和 Keras 的 RNN 单元的 API 进行了统一。为 Keras 和 TF 的 RNN 单元添加了新的 get_initial_state() 方法,这个方法未来将替代现有的 zero_state() 方法

  • 更新了 Keras 中变量的初始化

  • 在 tensorflow / contrib 中更新 “constrained_optimization”

  • 提升树算法:添加修剪模式

  • tf.train.Checkpoint 默认情况下不删除旧的检查点

  • tfdbg:调试时,缓存的 Tensor 数据所占用的磁盘空间上限为 100 GB。 允许添加环境变量 TFDBG_DISK_BYTES_LIMIT 来调整此上限值

感谢我们的贡献者

本次的发布离不开 Google 以下许多同仁的贡献: 

Aapeli, adoda, Ag Ramesh, Amogh Mannekote, Andrew Gibiansky, Andy Craze, Anirudh Koul, Aurelien Geron, Avijit, Avijit-Nervana, Ben, Benjamin H. Myara, bhack, Brett Koonce,张天启, 张晓飞......

最后,请大家点击 “阅读原文”,查看完整版本说明。