我在学张力流。目前,我正在使用占位符。当我试图创建占位符时,我得到了一个错误: RuntimeError: tf.placeholder() is not compatible with eager execution,这是有意义的,因为占位符不能立即执行。
RuntimeError: tf.placeholder() is not compatible with eager execution
那么,我怎样才能停止迫切的执行呢?
我一开始就没有急切地执行过死刑,所以我不知道这是怎么发生的。有没有 tf.disable_eager_execution()的对立面?
tf.disable_eager_execution()
假设您使用的是 Tensorflow 2.0预览版,默认情况下启用了即时执行。在 v1 API 中有一个 disable_eager_execution(),您可以将它放在代码的前面,比如:
disable_eager_execution()
import tensorflow as tf tf.compat.v1.disable_eager_execution()
另一方面,如果您没有使用 2.0预览版,请检查您是否在某个地方意外地启用了渴望执行。
我假设你正在使用 TensorFlow 2.0。在 TF2中,默认情况下将打开急切模式。然而,TensorFlow 2.0.0-alpha0中有一个 disable_eager_execution(),但是它隐藏得很深,不能从顶级模块名称空间(即 tf 名称空间)直接访问。
你可以这样调用函数:
import tensorflow as tf from tensorflow.python.framework.ops import disable_eager_execution disable_eager_execution() a = tf.constant(1) b = tf.constant(2) c = a + b print(c)
>>>Tensor("add:0", shape=(), dtype=int32)
print(disable_eager_execution.__doc__)
> > 禁用急切执行。 此函数只能在创建任何图形、运算符或张量之前调用。它可以在程序开始时用于从 TensorFlow 1.x 到2.x 的复杂迁移项目。
您可以像下面这样禁用 TensorFlow v2行为:
import tensorflow.compat.v1 as tf tf.disable_v2_behavior()
在 TensorFlow 2.3 + 中,您可以使用以下方法随时禁用即时模式:
import tensorflow as tf tf.config.run_functions_eagerly(False)