本文档描述了 Keras 3 中的 TensorFlow 兼容层,它使得 Keras 3 能够在现有代码库中作为 tf.keras 的直接替代品使用。此功能对于从 TensorFlow 的原生 Keras API 平滑迁移到多后端 Keras 3 框架至关重要。
有关如何在 Keras 3 中配置后端的信息,请参阅后端配置。
TensorFlow 兼容层充当现有 tf.keras 代码与新的多后端 Keras 3 框架之间的桥梁。它允许开发人员:
来源:README.md98-111 keras/__init__.py1-80 keras/api/__init__.py1-61
TensorFlow 兼容层在 Keras 3 内部以一种特殊的嵌套包结构实现,位于 keras/api/_tf_keras/keras/。这种结构模拟了原始 tf.keras API 的组织方式,同时将调用重定向到相应的 Keras 3 实现。
兼容层在 API 生成过程中由 api_gen.py 脚本自动生成。
来源:api_gen.py36-134 api_gen.py188-196
此过程中最重要的部分是 api_gen.py 中的 create_legacy_directory() 函数,该函数:
keras/api/_tf_keras/keras/ 创建目录结构keras/api/ 中的 API 复制到兼容层,并进行适当修改该函数具体执行以下操作:
_tf_keras/keras 目录结构TensorFlow 兼容层保持与 tf.keras 相同的 API 结构,但在内部将调用重定向到 Keras 3 实现。
来源:keras/api/_tf_keras/keras/__init__.py1-59 keras/api/__init__.py1-61
下表显示了 tf.keras 模块与它们在 Keras 3 中相应位置的映射关系:
| tf.keras 模块 | Keras 3 兼容层 | 原生 Keras 3 API |
|---|---|---|
| tf.keras.models | keras.api._tf_keras.keras.models | keras.api.models |
| tf.keras.layers | keras.api._tf_keras.keras.layers | keras.api.layers |
| tf.keras.losses | keras.api._tf_keras.keras.losses | keras.api.losses |
| tf.keras.metrics | keras.api._tf_keras.keras.metrics | keras.api.metrics |
| tf.keras.optimizers | keras.api._tf_keras.keras.optimizers | keras.api.optimizers |
| tf.keras.callbacks | keras.api._tf_keras.keras.callbacks | keras.api.callbacks |
| tf.keras.preprocessing | keras.api._tf_keras.keras.preprocessing | keras.api.preprocessing |
来源:keras/api/_tf_keras/keras/__init__.py1-59 keras/api/__init__.py1-61
TensorFlow 兼容层旨在作为 tf.keras 的直接替代品。在大多数情况下,用户只需将
替换为
,其现有 tf.keras 代码即可继续运行,几乎无需或无需任何改动。
导入 keras 时,Python 包系统会解析到 Keras 3 包。TensorFlow 兼容层使 Keras 3 包能够模拟 tf.keras 的行为,确保为 tf.keras 编写的代码继续正常工作。
虽然 TensorFlow 兼容层旨在提供与 tf.keras 的完全兼容性,但仍有一些注意事项需要牢记:
模型保存格式:确保对 model.save() 的调用使用最新的 .keras 格式,而不是旧的 TensorFlow 特定格式。
自定义组件:如果您的 tf.keras 模型包含自定义组件(例如,自定义层),则:
数据格式:Keras 3 可以处理各种数据格式,无论后端如何。
后端特定功能:某些高级的 TensorFlow 特定功能可能在其他后端中不可用,或者可能需要不同的方法。
兼容层的 __init__.py 文件从原生 Keras 3 API 导入模块,并通过兼容层结构将其暴露。
这创建了一个并行 API 结构,它镜像了 tf.keras,同时底层使用了 Keras 3 的实现。
来源:keras/api/_tf_keras/keras/__init__.py1-59
API 生成过程包含对生成代码的特殊处理:
DO NOT EDIT 注释表明它们是自动生成的。来源:keras/api/_tf_keras/keras/__init__.py1-6 keras/api/__init__.py1-6
TensorFlow 兼容层是 Keras 3 的一个关键组件,它为从 tf.keras 平滑迁移到多后端 Keras 3 框架提供了途径。通过提供 tf.keras 的直接替代品,它允许开发人员逐步迁移其代码库,同时利用 Keras 3 中的新功能和后端选项。
通过精心的 API 设计和自动生成,兼容层确保现有 tf.keras 代码能够继续运行,几乎无需或无需任何改动,同时仍可完全利用 Keras 3 的多后端架构的强大功能。