tf.contrib.eager.run_test_in_graph_and_eager_modes( func=None, config=None, use_gpu=True, reset_test=True, assert_no_eager_garbage=False )
Execute the decorated test with and without enabling eager execution.
This function returns a decorator intended to be applied to test methods in
tf.test.TestCase class. Doing so will cause the contents of the test
method to be executed twice - once normally, and once with eager execution
enabled. This allows unittests to confirm the equivalence between eager
and graph execution (see
For example, consider the following unittest:
class MyTests(tf.test.TestCase): @run_in_graph_and_eager_modes def test_foo(self): x = tf.constant([1, 2]) y = tf.constant([3, 4]) z = tf.add(x, y) self.assertAllEqual([4, 6], self.evaluate(z)) if __name__ == "__main__": tf.test.main()
This test validates that
tf.add() has the same behavior when computed with
eager execution enabled as it does when constructing a TensorFlow graph and
z tensor in a session.
func: function to be annotated. If
funcis None, this method returns a decorator the can be applied to a function. If
funcis not None this returns the decorator applied to
config: An optional config_pb2.ConfigProto to use to configure the session when executing graphs.
use_gpu: If True, attempt to run as many operations as possible on GPU.
reset_test: If True, tearDown and SetUp the test case between the two executions of the test (once with and once without eager execution).
assert_no_eager_garbage: If True, sets DEBUG_SAVEALL on the garbage collector and asserts that no extra garbage has been created when running the test with eager execution enabled. This will fail if there are reference cycles (e.g. a = ; a.append(a)). Off by default because some tests may create garbage for legitimate reasons (e.g. they define a class which inherits from
object), and because DEBUG_SAVEALL is sticky in some Python interpreters (meaning that tests which rely on objects being collected elsewhere in the unit test file will not work). Additionally, checks that nothing still has a reference to Tensors that the test allocated.
Returns a decorator that will run the decorated test method twice: once by constructing and executing a graph in a session and once with eager execution enabled.