本文档面向需要在不同版本的TensorFlow(代码或数据)之间向后兼容的用户,以及希望在保持兼容性的同时修改TensorFlow的开发人员。
TensorFlow遵循语义版本2.0(semver)为其公共API。 TensorFlow的每个发行版都有MAJOR.MINOR.PATCH格式。例如,TensorFlow版本1.2.3具有MAJOR版本1,MINOR版本2和PATCH版本3.对每个数字的更改具有以下含义:
- MAJOR:潜在的后向不兼容的变化。与以前的主要版本一起工作的代码和数据不一定适用于新版本。但是,在某些情况下,现有的TensorFlow图形和检查点可能会迁移到新版本;有关数据兼容性的详细信息,请参见图和检查点的兼容性。
- MINOR:向下兼容功能,速度改进等。与之前的次要版本一起工作并且仅依赖于公共API的代码和数据将继续保持不变。有关什么是和不是公共API的详细信息,请参阅涵盖的内容。
- PATCH:向后兼容的错误修复。
例如,版本1.0.0从版本0.12.1引入了向后不兼容的更改。但是,版本1.1.1向后兼容版本1.0.0。
什么被覆盖?
只有TensorFlow的公共API在小版本和补丁版本之间向后兼容。 公共API包含
- 所有记录在Python中的函数和类
- 张量模块及其子模块除外
- 函数和类在tf.contrib
- 名称以_开头的函数和类(因为它们是私有的)请注意,examples /和tools /目录
中的代码无法通过tensorflow Python模块访问,因此不在兼容性保证范围内。
如果一个符号通过张量流Python模块或其子模块可用,但没有记录,那么它不被视为公共API的一部分。
The C API.
The following protocol buffer files:
attr_value
config
event
graph
op_def
reader_base
summary
tensor
tensor_shape
types
什么不被覆盖?
Some API functions are explicitly marked as “experimental” and can change in backward incompatible ways between minor releases. These include:
- 实验性API:Python中的tf.contrib模块及其子模块,以及C API中的任何函数或协议缓冲区中明确表示为实验性的字段。
- 其他语言:Python和C之外的其他语言的TensorFlow API,例如:
- C ++(通过tensorflow / cc中的头文件公开)。
- Java中,
- go
- 复合操作的详细信息:Python中的许多公共函数展开为图中的几个原始操作,这些细节将作为GraphDefs保存到磁盘的任何图的一部分。这些细节可能会更改为次要版本。特别是,检查图形之间精确匹配的回归测试可能会跨越次要版本,即使图形的行为应该保持不变,现有检查点仍然可以工作。
- 浮点