本文面向需要在不同版本的 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 计算图和检查点可以迁移到新版本;请参阅计算图和检查点的兼容性,详细了解数据兼容性。
MINOR:向后兼容的功能、速度提升等。与之前的次要版本兼容且仅依赖于非实验性公开 API 的代码和数据将继续保持兼容。有关公开 API 的详细信息,请参阅兼容范围。
PATCH:向后兼容的错误修复。
例如,与版本 0.12.1 相比,版本 1.0.0 引入了向后不兼容的更改。不过,版本 1.1.1 向后兼容版本 1.0.0。
兼容范围
只有 TensorFlow 的公开 API 在次要和补丁版本中可向后兼容。公开 API 包括以下各项:
tensorflow 模块及其子模块中所有记录的 Python 函数和类,但以下符号除外:
private 符号:任何函数、类等,其名称以 _ 开头
实验性和 tf.contrib 符号,请参阅下文了解详细信息。
请注意,examples/ 和 tools/ 目录中的代码无法通过 tensorflow Python 模块到达,因此不在兼容性保证范围内。
如果符号可通过 tensorflow Python 模块或其子模块到达,但未记录,那么它也不属于公开 API。
兼容性 API(在 Python 中,为 tf.compat 模块)。在主要版本中,我们可能会发布实用工具和其他端点来帮助用户过渡到新的主要版本。这些 API 符号已弃用且不受支持(即,我们不会添加任何功能,除了修复一些漏洞外,也不会修复错误),但它们在我们的兼容性保证范围内。
不兼容范围
TensorFlow 的某些部分可能随时以向后不兼容的方式更改。包括以下部分:
实验性 API:为了方便开发,我们将一些明确标记为实验性的 API 符号排除在兼容性保证范围外。特别是,以下符号不在任何兼容性保证范围内:
tf.contrib 模块或其子模块中的任何符号;
名称包含 experimental 或 Experimental 的任何符号(模块、函数、参数、属性、类或常量);或
完全限定名称包含模块或类(其自身为实验性)的任何符号。这类符号包括称为 experimental 的任何协议缓冲区的字段和子消息。
其他语言&