# Chapter 3. tf.function and AutoGraph

Eager execution is fine for linear algebra experts, but not everybody is, and understanding the tensor API isn’t always straightforward. However, `tf.function` and AutoGraph are ways to create instructions that the TensorFlow execution engine can consume using ordinary Python code.

# Understanding tf.function

Now that we’ve seen the groundbreaking increase in ease of use that eager execution brings to TensorFlow, it’s the perfect time to introduce `tf.function`, which does its own magic. With `tf.function`, arbitrary Python code can be transformed into a TensorFlow execution graph by annotating a function.

In other words, write the code you want in pure Python, wrap it into a function, and annotate this function. The result is an object that can be run as a TensorFlow program, without having to write a single line of TensorFlow code.

Too good to be true? Let’s see an example.

In this example, we minimize a nested function. There are two functions: `f(x) = x - (6/7) * x-1/7` and `g(x) = f(f(f(f(x))))`. The goal is to find `x` such that `g(x)` equals `0`. If we relax the condition a bit, we can simply state that we want to find `x` such that `g` gets minimized. Does it ring a bell? This is of course an optimization problem, which we can solve with TensorFlow’s automatic differentiation and gradient descent.

###### Tip

Finding the minimum of `g` is called the “Turnip Seller Problem.”1 The solution can be simply obtained by setting the first derivative `g(x)'` to zero. As TensorFlow ...

Get What's New In TensorFlow 2.x? now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.