本文档面向需要在不同版本的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保存到磁盘的任何图的一部分。这些细节可能会更改为次要版本。特别是,检查图形之间精确匹配的回归测试可能会跨越次要版本,即使图形的行为应该保持不变,现有检查点仍然可以工作。
- 浮点数值细节:ops计算的特定浮点值可能随时改变。用户应该只依靠近似精度和数值稳定性,而不是计算的特定位数。在次要版本和补丁版本中对数值公式的改变应该导致可比较的或改进的准确性,但是在机器学习中提高特定公式的准确度可能导致整个系统的准确度降低。<

本文详细介绍了TensorFlow遵循的语义版本2.0规范,保证公共API在小版本和补丁版本之间的兼容性。讨论了哪些部分受到版本兼容性保障,如公共API、错误修复,同时也指出实验性API、浮点数值、随机数等可能在次要版本中发生不兼容变化。此外,文章还涉及图形和检查点的兼容性,包括GraphDef版本管理和向前向后兼容性策略。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



