邮件列举了以下几条:
· Eager Execution成为2.0的一个核心功能。这个命令式的编程环境,会让入门TensorFlow变得更容易。
· 支持更多平台、更多语言;通过交换格式的标准化以及API的协调,来提升组件之间的兼容性和对等性。
· 移除已弃用的API,并减少重复,也是减少用户的困惑。
往下,看看详情。
兼容性与连续性
邮件写到,TensorFlow 2.0是一个纠正错误、做出改进的好机会。有些改善,在语义化版本控制 (Semantic Versioning) 之下,通常是做不到的。
为了顺滑地过渡到新版本,团队会做一个转换工具,用于更新Python代码,这样便能使用TensorFlow 2.0兼容的API了。
如果遇到无法自动转换的情况,系统也会提醒人类。想当年,向1.0过渡的时候,类似的工具也帮了大忙。
并非所有改变,都能自动完成。比如,新版本将会弃用一些API,而其中有些API并没有直接对等的替换。
针对这样的情况,TensorFlow会提供一个兼容模块 (tensorflow.compat.v1) ,里面有完整的TensorFlow 1.x API,并且在2.x的生命周期里,会得到持续的维护。
不过,一旦2.0正式版发布,1.x就不会再有任何功能更新了。但在那之后,团队还是会给最后一版1.x,提供一年的安全补丁。
磁盘兼容性
SavedModel和GraphDef,都不会发生什么重大的变化。
但2.0意味着,原始检查点 (Checkpoint) 里的变量名称,需要转换,才能跟新的模型兼容。
tf.contrib被砍了
contrib模块的成长,超出了TensorFlow团队 (在一个repo里) 能维护的范围。
Wicke说,更大的项目,分开维护可能会更好。
不过,团队依然会在2.0里孵化一些小型的扩展。
所以,2.0的一个重大的变化,就是tf.contrib被完全弃用了。
在未来几个月,团队会与现有contrib模块的主人们,指定迁移计划,比如怎样在社区页面上或以文件的形式,发表自己的TensorFlow扩展。
每一个contrib模块,命运有三种:
1.集成到TensorFlow里。
2.移到一个单独的Repo里。
3.彻底移除。