开源深度学习函式库TensorFlow团队在今年初不断释出2.0的消息,春季也推出了Alpha测试版,而现在终于在TensorFlow World大会上,正式发表了TensorFlow 2.0.0。这个版本重点摆在易用性的改进,加强与Python开源神经网络函式库Keras的整合,并且简化API降低功能重复。TensorFlow 2.0整合Keras作为建置和训练模型的中央高阶API,Keras提供了一些模型建置的API,可用来建立像是序列式(Sequential)、功能式(Functional)和子类别(Subclassing)等模型。而这些API可以与Eager Execution功能结合使用,Eager Execution是TensorFlow的命令式程序开发环境,能立即执行程序代码评估操作,让开发者快速对程序代码除错并进行迭代。另外,Keras 模型建置API也可以结合tf.data,建置可扩充的出入工作管线。
而TensorFlow 2还更新了分布式训练策略,开发者可以使用tf.distribute.Strategy API,以最少的程序代码更动分散模型训练,进而获得良好的效能,这个API也支持Keras model.fit分布式训练以及自定义训练循环,同时还支持多GPU训练,目前多重Worker和Cloud TPUs进入实验性支持阶段。官方提到,他们不鼓励开发者使用传统的声明性编程模型建置图(Graph),接着并透过tf.Session来执行,而是应该要以正规的Python函式写法代替。使用tf.function装饰器(Decorator)可以将函式转换为图,这些图可以远程执行、串行化以及进行效能优化。
现在TensorFlow交换格式都与SavedModel统一,所有TensorFlow生态系的项目,像是TensorFlow Lite、TensorFlow JS、TensorFlow Serving和TensorFlow Hub项目都接受SavedModel。SavedModel格式内容具有完整的TensorFlow程序,包含权重和计算,不需要原始建置模型的程序代码就能执行,这对于模型共享或是部署非常有用。开发团队为TensorFlow 2的API进行了调整,许多API符号经重新命名或是删除,参数名称也被更改,整体来说,调整后能让API的使用经验更加一致清楚。