TensorFlow 2.0正式版发布,与Keras更紧密集成

开源深度学习函数库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的使用体验更加一致清楚。