How do I disable TensorFlow's eager execution?

Tensorflow

Tensorflow Problem Overview


I am trying to learn TensorFlow. Currently, I am working with placeholders. When I tried to create the placeholder, I got an error: RuntimeError: tf.placeholder() is not compatible with eager execution, which makes sense as placeholders are not executable immediately.

So, how do I turn eager execution off?

I have never turned eager execution on in the first place, so I am not sure how it happened. Is there an opposite to tf.disable_eager_execution()?

Tensorflow Solutions


Solution 1 - Tensorflow

Assume you are using Tensorflow 2.0 preview release which has eager execution enabled by default. There is a disable_eager_execution() in v1 API, which you can put in the front of your code like:

import tensorflow as tf

tf.compat.v1.disable_eager_execution()

On the other hand, if you are not using 2.0 preview, please check if you accidentally enabled eager execution somewhere.

Solution 2 - Tensorflow

I assume the you are using TensorFlow 2.0. In TF2, eager mode is turned on by default. However, there is a disable_eager_execution() in TensorFlow 2.0.0-alpha0 but it is hidden quite deep and cannot be directly accessed from top-level module namespace (i.e tf namespace).

You can call the function like so:

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__) 

>>>Disables eager execution. This function can only be called before any Graphs, Ops, or Tensors have been created. It can be used at the beginning of the program for complex migration projects from TensorFlow 1.x to 2.x.

Solution 3 - Tensorflow

In TensorFlow 2.3+, you can disable eager mode anytime using the following method:

import tensorflow as tf

tf.config.run_functions_eagerly(False)

Solution 4 - Tensorflow

You can disable TensorFlow v2 behavior like this:

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionLloyd RaynerView Question on Stackoverflow
Solution 1 - Tensorflowuser2117745View Answer on Stackoverflow
Solution 2 - TensorflowmibuView Answer on Stackoverflow
Solution 3 - TensorflowSynthesisView Answer on Stackoverflow
Solution 4 - TensorflowJude TCHAYEView Answer on Stackoverflow