'Tensor'对象在TF 2.0中的tf.function中没有属性'numpy'

时间:2019-04-09 15:41:16

标签: python tensorflow2.0

在TensorFlow 2.0中,tensor.numpy()内是否有tf.function以外的替代方法?问题是,当我尝试在修饰的函数中使用它时,在外部运行时收到错误消息'Tensor' object has no attribute 'numpy',没有任何问题。

通常,我会选择tensor.eval()之类的东西,但只能在TF会话中使用,而在TF 2.0中不再有会话。

1 个答案:

答案 0 :(得分:2)

如果您具有未修饰的功能,则可以正确地使用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/