主要功能改进

  • tf.distribution 通过 tf.distribution.experimental.ParameterServerStrategy API 引入了对 Keras 模型异步训练实验性支持。更多细节请参见下文。
  • MultiWorkerMirroredStrategy 不再是一个实验性 API,现在已进入稳定版本。针对命令执行失败和其他错误进行了修复。请查看具体教程,了解如何使用 Keras 进行多任务并行训练。
  • 对 tf.experimental.numpy 的新模块进行了实验性支持,此 API 不仅与 NumPy 兼容,更便于编写 TF 程序,可参阅详细指南了解更多信息,更多细节请参见下文。
  • 针对 Ampere 架构的 GPU 添加了 TensorFlow-32(简称TF32) 的支持,这是一种基于 Nvidia Ampere 的GPU模式,默认情况下将启用。
  • Keras Functional API 的内部重构已经完成,这次重构提高了构建 Functional 模型的可靠性、稳定性和性能。
  • Keras 混合精度训练的 API tf.keras.mixed_precision 已稳定,不再为实验性支持。这允许在训练过程中使用 16 位浮点数格式,在 GPU 上的性能提升高达 3 倍,在 TPU 的提升也高达 60 %。
  • TF Profiler 现在支持使用采样模式 API ,对多个工作进程进行性能分析。
  • TFLite Profiler Android 版本现已推出。请参阅指南以了解更多信息。
  • TensorFlow pip 安装包现已使用 CUDA11 和 cuDNN 8.0.2构建。

重大改进

TF Core

  • C-API 的字符串张量的字节布局已被更新,已与 TF Core/C++ 匹配,即 tensorflow::tstring/TF_TString 的连续数组。
  • C-API 函数 TF_StringDecode、TF_StringEncode 和 TF_StringEncodedSize 不再被使用,现已移除;关于 C 语言中的字符串访问/修改,请参见core/platform/ctstring.h。
  • tensorflow.python、tensorflow.core和tensorflow.compiler 模块现在被隐藏。这些模块不再是 TensorFlow 可访问 API 的一部分。
  • tf.raw_ops.Max 和 tf.raw_ops.Min 不再接受类型为tf.complex64 或 tf.complex128 的输入,因为这些操作对于复杂类型的行为没有被明确定义。
  • 由于使用了 TensorFloat-32,某些 float32 操作在基于 Ampere 架构的 GPU 上以较低的精度运行,包括乘法和卷积。具体来说,这类运算的输入从 23 位精度四舍五入到 10 位。这对于深度学习模型来说,在实践中不太会造成问题。但在某些情况下,TensorFloat-32 (单精度浮点数值)也被用于 complex64 操作。可以通过调用config.experimental.enable_tensor_float_32_execution(False) 来禁用 TensorFloat-32 。
  • 默认情况下,XLA:CPU 和 XLA:GPU 设备不再注册。如果你真的需要它们,请使用 TF_XLA_FLAGS=--tf_xla_enable_xla_devices,但该标志位也将在后续版本中删除。

tf.keras:

  • compile() 中的 steps_per_execution 参数已稳定,不再为实验性支持,如果您传递的是experimental_steps_per_execution,请在你的代码中重新命名为 steps_per_execution 。这个参数控制了在调用 fit() 时,每次调用 tf.function 时要运行的批次数量。在单次 tf.function 调用中运行多个批次可以极大地提高在 TPU 中或带有大量 Python 计算的小型模型的性能。
  • 对 Keras Functional API 内部的重大重构可能会影响到以下代码:
    • 在检查 Keras 符号输入/输出时,使用isinstance(x, tf.Tensor) 而不是 tf.is_tensor的代码,应该改用 tf.is_tensor。
    • 过分依赖符号张量所附加的确切名称的代码(例如,假设输入的结尾为":0",将名称作为唯一的标识符,而不是使用tensor.ref() 等)。
    • 使用 get_concrete_function 直接跟踪 Keras 符号输入的代码,应该改成直接构建匹配的tf.TensorSpecs 并跟踪TensorSpec对象。
    • 依赖于 TensorFlow 操作转换为操作层后所对应的确切数量和名称的代码,可能需要更改。
    • 使用了tf.map_fn/tf.cond/tf.while_loop/control flow 作为操作层的代码,且碰巧能在 TF 2.4 之前的版本工作的代码。现在将明确地不支持这些功能。在 TF 2.4 之前,将这些操作转换为 Functional API 操作层是不可靠的,而且容易出现难以理解或无法定位的错误。
    • 直接对 Keras 符号值进行断言操作的代码,如 tf.rank 这样可根据输入是静态值或符号值而返回对应的类型的操作,现在这些操作将统一返回符号值。
    • 能够直接泄露张量到计算图以外的代码,在这个版本中将更易于导致泄露。
    • 尝试直接计算 Keras 符号输入/输出的梯度的代码。现在可以使用 GradientTape ,来代替传递给已构建模型的实际张量。
    • 需要通过转换后的操作层进行非常复杂的形状操作才能工作的代码。Keras 符号形状推理被证明是不够的。
    • 试图手动逐层遍历 tf.keras.Model 的代码。它假设层中只有一个位置参数。单这个假设在 TF 2.4 之前也不成立,新版本中更容易引起问题。
    • 在构建模型之前需要手动输入 keras.backend.get_graph() 的代码,现在已经不需要这么做了。
    • 在调用 Functional API Keras 模型一开始便强制进行输入形状假释的代码。这可能对一些用户造成影响,如 在 Functional 模型中创建 Input 对象时使用的形状与传递给该模型的数据的形状不匹配时。您可以通过使用正确形状的数据调用模型,或者通过放宽 Input 形状假设来解决不匹配的问题(您可以将 shape 属性设为 None ,将此作为轴(axis)以表示这是动态的),您也可以通过设置 model.input_spec = None 来完全禁止输入检查。

tf.data:

  • tf.data.experimental.service.DispatchServer 现在采用配置元组而不是单个参数。用法更新为 tf.data.experimental.service.DispatchServer(dispatcher_config)。
  • tf.data.experimental.service.WorkerServer 现在采用配置元组,而不是单个参数。用法更新为 tf.data.experimental.service.WorkerServer(worker_config)。

tf.distribute:

  • 移除 tf.distribution.Strategy.experimental_make_numpy_dataset。请使用 tf.data.Dataset.from_tensor_slices 来代替。
  • 将 tf.distribut.StrategyExtended.reduce_to、tf.distribut.StrategyExtended.batch_reduce_to、tf.distribut.ReplicaContext.all_reduce 中的 experimental_hints 重命名为 options。
  • 将 tf.distribution.experimental.CollectiveHints 重命名为 tf.distribution.experimental.CommunicationOptions。
  • 将 tf.distribution.experimental.CollectiveCommunication 重命名为 tf.distribution.experimental.CommunicationImplementation。
  • 将 tf.distribut.Strategy.experimental_distribute_datasets_from_function 重命名为 distribute_datasets_from_function,因为它不仅支持实验环境。
  • 删除了 tf.distribut.Strategy.experimental_run_v2 方法,该方法在 TF 2.2 中已被废弃。

tf.lite:

  • 引入了 tf.quantization.quantize_and_dequantize_v2,它更新了超过范围的量化的梯度定义。要模拟 tf.quantization.quantize_and_dequantize(...)的 V1 行为,使用tf.grad_pass_through(tf.quantization.quantize_and_dequantize_v2)(...)。

如果您想详细了解 本文提及 的相关内容,请参阅以下文档。这些文档深入探讨了这篇文章中提及的许多主题:

使用 Keras 进行多任务并行训练https://tensorflow.google.cn/tutorials/distribute/multi_worker_with_kerastf.experimental.numpyhttps://tensorflow.google.cn/api_docs/python/tf/experimental/numpy详细指南https://tensorflow.google.cn/guide/tf_numpytf.keras.mixed_precisionhttps://tensorflow.google.cn/api_docs/python/tf/keras/mixed_precision?version=nightly采样模式 APIhttps://tensorflow.google.cn/guide/profiler#profiling_apis指南https://tensorflow.google.cn/lite/performance/measurement#trace_tensorflow_lite_internals_in_androidTensorFloat-32https://blogs.nvidia.com/blog/2020/05/14/tensorfloat-32-precision-format/

tensorflow对应的numpy版本_版本更新 | TensorFlow 2.4.0 候选版本发布相关推荐

  1. tensorflow画损失函数的代码_使用TensorFlow编写您的第一个神经网络

    介绍 神经网络是受生物神经网络启发而产生的一套特殊的机器学习算法,它们彻底改变了机器学习.简单地说,它们是通用的函数近似,可以应用于几乎任何关于学习从输入到输出空间的复杂映射的机器学习问题. 神经网络 ...

  2. 选择java版本_新手上路之如何选择Java版本

    导读热词 @ 初入Java坑,有那么多版本的Java,想了解清楚自己到底该下什么版本这个问题,首先得了解清楚LTS与非LTS的区别 LTS与非LTS 每一次去官网下载JDK的时候,当你进入到Java ...

  3. honeycomb开发_完整的Android 3.0 Honeycomb SDK发布

    honeycomb开发 完整的Android Honeycomb SDK发行 现已提供适用于Android 3.0'Honeycomb'的完整SDK . API已完成,现在可以在Android Mar ...

  4. FreeBSD 8.0候选版本RC3发布

    该版很有可能是8.0最后一个候选版本,目前仅剩一个已知bug.不出意外的话,几天内就会开始8.0-RELEASE的最终构建工作.

  5. 发布json数据_技术分享 | MySQL 8.0.17 GA 发布!

    昨日 MySQL 官网正式发布 8.0.17 / 5.7.27 / 5.6.45 三个(维护)版本,距离上一个 GA 版本(8.0.16)发布时隔仅 88 天! MySQL 各开发团队的博客网站,同一 ...

  6. php版本最低要求:5.4_Zabbix 5.0.0beta1版本初体验

    Zabbix 5.0.0 beta1 升级要求 PHP版本 PHP版本已从最低的5.4.0 升级到 7.2.0 数据库版本 MySQL 5.5.62 MariaDB 10.0.37 PostgreSQ ...

  7. tensorflow机器学习实战指南 源代码_小小白TensorFlow机器学习实战基础

    一.TensorFlow基本概念 TensorFlow以数据流为核心,还具备两大特点:将图的定义和图的运行完全分开:图的计算在会话中执行.具体操作如下: import tensorflow as tf ...

  8. pve 不订阅更新_更新公告 | 2.1.0全新版本“龙争虎斗”明日登场!

    ___亲爱的各位少年:2.1.0版本"龙争虎斗"将于明日与各位少年们见面,请查收小乔总结的主要的更新内容:1.全服匹配PVP玩法"王者竞技"火热上线2.挑战副本 ...

  9. 安卓最新版本_安卓/苹果 | 两大平台最新版本,看片神器!

    " 感谢伤害你的人,因为他磨练了你的心志:感谢欺骗你的人,因为他增进了你的智慧:感谢中伤你的人,因为他砥砺了你的人格:感谢鞭打你的人,因为他激发了你的斗志:感谢遗弃你的人,因为他教导了你该独 ...

最新文章

  1. 关于linux下用户不能使用tab补全处理
  2. 4 个场景揭秘,如何低成本让容器化应用 Serverless 化?
  3. [算法] 2-4 组合游戏
  4. Problems you may meet
  5. python与vfp做桌面数据库_VFP数据库系统开发实例(附图)
  6. 人行联网核查更新_又一批新职业公布,学互联网技术,等于站在就业“风口”...
  7. 【NOI1998】免费馅饼,膜一膜XYX大爷
  8. ApacheCN DevOps 译文集(二)20211230 更新
  9. matlab 函数pdf怎么用_pdf加水印怎么加?这个实用pdf编辑工具可以用
  10. “一加一减”的两种说话技巧
  11. P1038 神经网络[拓扑]
  12. 语音处理:Python实现音频文件声道分离批量处理
  13. 舆情监测产品的过去与现在
  14. 英语读音(四)--自然拼读法 Phonics --- 最常见字母发音 /The pronounciation of most common letters
  15. 用来快速检查hdf5,npy和npz文件的Python脚本
  16. 心理传染与恐怖的“模仿者效应”
  17. 弯头lisp_(最全的)管道材料代号说明
  18. Camera tuning 基础知识点
  19. 公众号滑动图代码_【公众号运营】文章图片滑动效果实现方法
  20. 精彩回顾 | Dev.Together 2022 开发者生态峰会圆满落幕

热门文章

  1. java logging 格式化_Spring源码使用java.util.logging打印日志
  2. springmvc重定向到另一个项目_springmvc怎么重定向,从一个controller跳到另外一个controller...
  3. halcon区域腐蚀膨胀算子_Halcon 形态学膨胀腐蚀应用举例
  4. mysql 数据库被覆盖_理解MySQL数据库覆盖索引
  5. hbase 使用lzo_带你快速上手HBase | HBase列族优化
  6. Python--面向对象学习继承(11.17)
  7. 关于求XXX.class.getResource(xxx).getPath()的用法
  8. Linux开机启动过程(9):进入内核入口点之前最后的准备工作
  9. 区块链 2.0:下一个计算范式
  10. Seismic migration - Wikipedia