我正在尝试编写热切且图形兼容的代码。但是,关于如何执行此操作的在线信息很少,这是 TensorFlow网站上的文字脚注。此外,他们所写的内容令人困惑,说:
为 Eager Execution 编写的相同代码也将在图执行期间构建图。为此,只需在未启用 Eager Execution 的新 Python 会话中运行相同的代码即可。
这意味着可以使用相同的代码解决方案,其中唯一需要的更改是添加或删除tf.enable_eager_execution().
目前我tf.keras用来定义我的模型和tf.data我的输入管道。然而,许多急切操作在图形中不起作用,反之亦然。
例如,我会记录我epochs使用tf.train.Checkpoint(). 在急切模式下,恢复后我可以访问它epochs.numpy(),将其值分配给局部变量。但是,这不适用于图形,sess.run(epochs)因为在执行期间未定义值,因此需要图形。
同样,为了快速计算我的梯度,我需要使用某种形式的 autograd,在我的例子中tf.GradientTape()。这与图形不兼容,因为“tf.GradientTape.gradients() 不支持图形控制流”。
我看到tfe.py_func存在,但再一次,这仅在未启用eager时有效,因此无助于解决此问题。
那么,当eager和graph的许多方面似乎直接相互冲突时,我该如何做出相同的代码解决方案呢?