图运算模式可以提高代码的运行效率,我们训练时使用的model.fit就是图运算模式,自定义训练使用的是eager模式。
图运算模式与eager模式不能同时存在于同一语句中
model.fit相对自定义训练优点是代码简洁,运算速度快,缺点是不能更好的把控训练中的各项数据,比如我们目前就无法在每一个epoch中都保存一个完整的模型
我们也可以在自定义训练中使用图运算模式,但是这样就有可能导致部分语句不能运行(报错)
我们使用上一章的代码,将其加载图像部分改为图运算模式
在tensorflow2.0以上默认使用eager模式,所以我们要给图运算一个标志,图运算的标志为@tf.function,我们把之前的一个函数拆开三个函数的目的是说明无论有多少个函数,我们只在调用它们的函数前加上@tf.function,它们都会变成图运算模式,也就是说现在read_jpg(),normalize()与load_image()这三个函数都为图运算模式