在TensorFlow 2.0中,tensor.numpy()
内是否有tf.function
以外的替代方法?问题是,当我尝试在修饰的函数中使用它时,在外部运行时收到错误消息'Tensor' object has no attribute 'numpy'
,没有任何问题。
通常,我会选择tensor.eval()
之类的东西,但只能在TF会话中使用,而在TF 2.0中不再有会话。
答案 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/