1. 程式人生 > >Tensorflow Eager execution and interface

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.