Если у вас есть функция без декорации, вы можете правильно использовать numpy()
для извлечения значения tf.Tensor
def f():
a = tf.constant(10)
tf.print("a:", a.numpy())
Когда вы декорируете функцию, объект tf.Tensor
меняет семантику,становясь тензором вычислительного графа (простой старый объект tf.Graph
), метод .numpy()
исчезает, и если вы хотите получить значение тензора, вам просто нужно его использовать:
@tf.function
def f():
a = tf.constant(10)
tf.print("a:", a)
Следовательно, вы не можете просто украсить нетерпеливую функцию, но вы должны переписать ее, думая, как в Tensorflow 1.x.
Я предлагаю вам прочитать эту статью (и часть 1) для лучшего пониманиякак работает tf.function
: https://pgaleone.eu/tensorflow/tf.function/2019/04/03/dissecting-tf-function-part-2/