TensorFlow 2.7.0 rc1 发布
TensorFlow 是一个用于机器学习的端到端开源平台。它有一个全面灵活的工具、库和社区资源所组成的生态,让开发人员轻松建立和部署由 ML 驱动的应用程序。
TensorFlow 最初用于进行机器学习和深度神经网络研究。但该系统具有足够的通用性,也适用于其他广泛的领域。
主要变化
tf.keras:Model.fit()、Model.predict()和Model.evaluate()方法将不再把(batch_size,)的输入数据上升为(batch_size, 1)。这使得Model子类能够在其train_step()/test_step()/predict_step()方法中处理标量数据。Model.to_yaml()和keras.models.model_from_yaml方法已被替换为引发RuntimeError,因为它们可能被滥用以导致任意代码执行。LinearModel和WideDeepModel被移至tf.compat.v1.keras.models.命名空间(tf.compat.v1.keras.models.LinearModel和tf.compat.v1.keras.models.WideDeepModel),其experimental端点(tf.keras.experimental.models.LinearModel和tf.keras.experimental.models.WideDeepModel)被弃用。- 所有
tf.keras.initializers类的 RNG 行为改变。这一变化将使初始化行为在 v1 和 v2 之间保持一致。
tf.lite:- 弃用 Makefile 构建:Makefile 用户需要将他们的构建迁移到 CMake 或 Bazel。
- 弃用
tflite::OpResolver::GetDelegates。TfLite 的BuiltinOpResolver::GetDelegates所返回的列表现在总是空的。相反,建议使用新方法tflite::OpResolver::GetDelegateCreators。
- TF Core:
tf.Graph.get_name_scope()现在总是返回一个字符串。以前,当在name_scope("")或name_scope(None)背景下调用时,它返回None;现在它返回空字符串。tensorflow/core/ir/包含了一个新的基于 MLIR 的 Graph dialect,与 GraphDef 同构,并将用于取代基于 GraphDef(例如 Grappler)的优化。- 弃用并删除了形状推理中的
attrs()函数。现在所有的属性都应该通过名字来查询。 - 以下 Python 符号是在 TensorFlow 的早期版本中被意外添加,现在已被删除。每个符号都有一个应该使用的替换,但注意替换的参数名称是不同的:
tf.quantize_and_dequantize_v4(在 TensorFlow 2.4 中引入),使用tf.quantization.quantize_and_dequantize_v2代替;tf.batch_mat_mul_v3(在 TensorFlow 2.6 中引入),使用tf.linalg.matmul代替。tf.sparse_segment_sum_grad(在 TensorFlow 2.6 中引入),使用tf.raw_ops.SparseSegmentSumGrad代替。
- 将 tensorflow::int64 重命名为 int_64_t(前者是后者的别名)。
- 模块化文件系统的迁移:
- 对 S3 和 HDFS 文件系统的支持已经迁移到了一个模块化文件系统,应该为 S3 和 HDFS 安装
tensorflow-iopython 包,以便用获得 tensorflow 支持。
- 对 S3 和 HDFS 文件系统的支持已经迁移到了一个模块化文件系统,应该为 S3 和 HDFS 安装
更多详情可查看:https://github.com/tensorflow/tensorflow/releases/tag/v2.7.0-rc1