TensorFlow 版本兼容性
本文适用于需要保持不同版本 TensorFlow 代码及数据向后兼容性的使用者,以及旨在修改 TensorFlow 的同时保持兼容性的开发人员。
语义化版本 2.0
TensorFlow 的公共 API 沿袭自语义化版本 2.0(semver)。 每个 TensorFlow 发布版本号都以 MAJOR.MINOR.PATCH 的形式命名(译注:“主版本.副版本.补丁版本”)。
例如,TensorFlow 1.2.3 版本的 MAJOR 为 1,MINOR 为 2,PATCH 为 3。每个版本号的更改具有以下含义:
MAJOR: 更改可能不具有向后兼容性。之前发布的版本中所运行的代码和数据在新版本中用不上了。然而,有些情况下现有的 TensorFlow 图和检验点最好可以迁移到新版本。查看 Compatibility of graphs and checkpoints 以获取数据兼容性的细节。
MINOR:向后兼容特性和速度的改善等。之前发布的版本中所运行的代码和数据仅依赖于公共 API,它们将不加改动地继续运行。如果想查阅公共 API 和非公共 API 的细节信息,请移步 What is covered。
PATCH:向后兼容性bug的修复。
例如 1.0.0 发布版本基于 0.12.1 发布版本引入了不具有向后兼容性的改动。然而,1.1.1 发布版本则向后兼容 1.0.0 发布版本。
涉及的内容
TensorFlow 中只有公共 APIs 在副版本和补丁版本之间兼容。公共 APIs 由以下几部分组成:
tensorflow模块及其子模块中记录在册的全部 Python 函数和类,除了:
tf.contrib 中的函数和类;
以 _ 开头命名的函数和类(因为它们是私有的)。
请注意 examples/ 和 tools/ 路径下的代码无法通过 tensorflow 的 Python 模块访问,因此无法保证其兼容性。
如果某个符号可以被 tensorflow 模块及其子模块调用但没有被记录在册,它被认为不属于公共 API 的一部分。
未涉及的内容
某些 API 函数被显式标记为“实验性”,它们可以在不同副版本之间进行非兼容性改动,包括:
其他语言:除 Python 和 C 外的其他语言编写的 TensorFlow APIs,这些语言包括:
组合操作的细节:许多