Tensorflow Eager execution and interface
Lecture note 4: Eager execution and interface
Eager execution
Eager execution is (1) a NumPy-like library for numerical computation with support for GPU acceleration and automatic differentiation, and (2) a flexible platform for machine learning research and experimentation. It's available as tf.contrib.eager, starting with version 1.50 of TensorFlow.
-
Motivation:
-
TensorFlow today: Construct a graph and execute it.
- This is declarative programming. Its benefits include performance and easy translation to other platforms; drawbacks include that declarative programming is non-Pythonic and difficult to debug.
-
What if you could execute operations directly?
- Eager execution offers just that: it is an imperative front-end to TensorFlow.
-
-
Key advantages: Eager execution …
-
is compatible with Python debugging tools
- pdb.set_trace() to your heart's content!
- provides immediate error reporting
-
permits use of Python data structures
- e.g., for structured input
- enables you to use and differentiate through Python control flow
-
-
Enabling eager execution requires two lines of code
import tensorflow as tf
import tensorflow.contrib.eager as tfe
tfe.enable_eager_execution() # Call this at program start-up
and lets you write code that you can easily execute in a REPL, like this
x = [[2.]] # No need for placeholders!
m = tf.matmul(x, x)
print(m) # No sessions!
# tf.Tensor([[4.]], shape=(1, 1), dtype=float32)
For more details, check out lecture slides 04.