TensorFlow1.x VS TensorFlow2.x
TF1 | TF2 |
---|---|
session.run() | Eager Execution |
全局化,所有的参数都会被记录下来 | 不再全局化,不适用的参数会被清理 |
session.run() | Eager Execution |
session | function |
API混乱 | API清理 |
Tensor Flow2删除了冗余的API,使API更加一致(统一RNN,统一优化器),并通过EagerExecution更好的与python运行时集成。
*用Eager模式搭建原型
*用tf.data处理数据
*用tf.feature_column提取特征
*用tf.keras搭建模型
*用tf.saved_model打包模型
什么是EagerExecution?
eager模式就是类似于python这样的命令行式编程。写好程序后,不需要编译,就可以直接运行了,而且非常直观。
而之前的session静态图模式则类似于c/c++式的声明式编程,写好程序后要编译再运行
好处:
1.不需要编写完整的静态图
2.调试不需要打开会话(session)
3.python上调用它进行计算,可以直接得出结果
缺点:
通过graph构造的模型再分布式训练,性能优化以及线上部署有优势。
推荐使用@tf.function(而非tf1.x中的session)实现Graph Execution,从而将模型转换为易于部署且高性能的TensorFlow图模型