The difference between the two is muddled in my head, notwithstanding the nuances of what is eager and what isn\'t. From what I gather, the @tf.function
decorator h
They do indeed start to resemble each other as they are improved, so it is useful to see where they come from. Initially, the difference was that:
@tf.function
turns python code into a series of TensorFlow graph nodes.tf.py_function
wraps an existing python function into a single graph node.This means that tf.function
requires your code to be relatively simple while tf.py_function
can handle any python code, no matter how complex.
While this line is indeed blurring, with tf.py_function
doing more interpretation and tf.function
accepting lot's of complex python commands, the general rule stays the same:
tf.function
.tf.py_function
.