TensorFlow 2.12 和 Keras 2.12 新功能简介
TensorFlow Core
SavedModel 指纹识别
RFC
https://github.com/tensorflow/community/blob/master/rfcs/20220610-saved-model-fingerprinting.mdread_fingerprint API
https://tensorflow.google.cn/api_docs/python/tf/saved_model/experimental/read_fingerprintFingerprint
https://tensorflow.google.cn/api_docs/python/tf/saved_model/experimental/Fingerprint
tf.function
此外,我们还添加了 experimental.extension_type.as_dict(),以将 tf.experimental.ExtensionType 转换为 Python dict。
Keras
全新的模型格式
此版本中最重要的 Keras 新功能就是全新的模型导出格式。我们已经完全重新设计了 Keras 的保存和序列化,以清晰地区分两个关键用例:
Python 保存和重新加载。当您保存 Keras 模型以便稍后在 Python 运行时将其重新实例化时,就会保存和重新加载 Python,而且重新加载的模型与保存时完全相同。我们会借助一个名为 "Keras v3" 格式 (.keras) 的全新文件格式实现此目标。您可以通过调用 model.save("your_model.keras", save_format="keras_v3") 开始使用此格式。 模型导出,用于在可能完全不支持 Python 的运行时 (例如 TF Serving 运行时) 中进行推理。您可以通过 model.export("your_model") 创建轻量级 (单一文件) 导出,然后通过 tf.saved_model.load("your_model") 在 TF Serving 或 Python 中重新加载。默认情况下,此格式仅保留一个 Serving 端点,即模型的前向传递,重新加载后可作为 .serve() 被调用。您可以通过 keras.export.ExportArchive 类进一步实现自定义。
在 2.13 版本中,keras_v3 将成为所有扩展名为 .keras 的文件的默认格式。此格式支持非数值状态,如词汇表文件和对照表,并且可以轻松保存具有特殊状态元素 (例如 FIFOQueue) 的自定义层。此格式并不依赖字节码或 pickling 加载任意代码,因此默认情况下十分安全。这是安全机器学习领域的一个重大进展。请注意,在这种安全第一的思维方式下,加载时会禁用 Python lambdas。如果您想使用 lambda 并且信任模型的来源,您可以将 safe_mode=False 传递给加载方法。
FeatureSpace
此版本另外一个激动人心的功能是引入了 keras.utils.FeatureSpace 实用工具。此实用程序可实现对结构化数据进行一步索引和预处理,包括特征哈希和特征交叉。您可以参阅特征空间教程了解更多信息。
特征空间教程
https://keras.io/examples/structured_data/structured_data_classification_with_feature_space/
与所有 Keras API 一样,FeatureSpace 实用工具的设计考虑了渐进式呈现复杂性的原则,因此它支持完全自定义,您甚至可以指定依赖自有预处理层的自定义特征类型。例如,如果您想创建一个编码文本段落的特征,只需两行代码:
from tensorflow.keras import layers, utils
custom_layer = layers.TextVectorization(output_mode="tf_idf")
feature_space = utils.FeatureSpace(
features={
"text": FeatureSpace.feature(
preprocessor=custom_layer, dtype="string", output_mode="float"
),
},
output_mode="concat",
)
以上只是亮点介绍,新版本还推出了许多其他与 Keras 相关的改进,您可以查看版本说明,了解更多内容!版本说明
https://github.com/tensorflow/tensorflow/blob/master/RELEASE.md#release-2120
tf.data
温启动
tf.data 已新增对温启动输入处理的支持。如果 warm_start=True (在 tf.data.experimental.OptimizationOptions 上),tf.data 将会在迭代器创建过程中抢先启动后台线程 (而不是等待第一次调用 GetNext)。这使得用户可以缩短初始 GetNext 调用的延迟时间,但此过程需要消耗更多内存用量。
跨周期重新随机化
tf.data 向 tf.data.Dataset.random() 添加了一个全新的 rerandomize_each_iteration 参数,用于控制每个周期内所生成的随机数字的顺序是否应该重新随机排列,或是保持不变 (默认情况)。如果设置了 seed,并且 rerandomize_each_iteration=True,则 random() 将在每个周期生成不同的 (确定性) 数字序列。这在对相对较少的输入示例进行训练时十分有用,可以确保模型不会学习序列本身。
基础设施更新
Protobuf Python 运行时版本升级到 4.21.9。目前所有 protobuf *_pb2.py 存根均使用 protoc 3.21.9 生成。受支持的最低 protobuf 运行时版本为 3.20.3。 我们在此版本中发布了适用于 TensorFlow 软件包的 Python 3.11 Wheel 软件包!
我们从此版本中移除了对 Python 3.7 的支持。今后,我们将不再为 Python 3.7 发布补丁程序。
推荐阅读
不要忘记 "一键三连" 哦~
分享
点赞
在看