Python TensorFlow 2.0:带有@tf.Function decorator的函数不';不接受numpy函数
我正在编写一个函数来实现TensorFlow 2.0中的一个模型。它接受Python TensorFlow 2.0:带有@tf.Function decorator的函数不';不接受numpy函数,python,numpy,tensorflow,tensorflow2.0,Python,Numpy,Tensorflow,Tensorflow2.0,我正在编写一个函数来实现TensorFlow 2.0中的一个模型。它接受image\u batch(numpy RGB格式的一批图像数据)并执行我需要的一些特定数据增强任务。给我带来问题的线路是: @tf.function def augment_data(image_batch, labels): import numpy as np from tensorflow.image import flip_left_right image_batch = np.appen
image\u batch
(numpy RGB格式的一批图像数据)并执行我需要的一些特定数据增强任务。给我带来问题的线路是:
@tf.function
def augment_data(image_batch, labels):
import numpy as np
from tensorflow.image import flip_left_right
image_batch = np.append(image_batch, flip_left_right(image_batch), axis=0)
[ ... ]
numpy
的.append()
函数在我将@tf.function
装饰器放在上面时不再工作。它返回:
ValueError:无法连接零维数组
当我在函数外部使用np.append()
命令时,或者在顶部没有@tf.function
时,代码运行没有问题
这正常吗?我是不是为了让它正常工作而被迫把装饰器拆了?或者这是一个bug,因为TensorFlow 2.0仍然是测试版?在这种情况下,我如何解决这个问题呢?只需将numpy操作包装到
tf.py\u函数中即可
def追加(图像批处理,tf函数):
返回np.append(image\u batch,tf\u func,axis=0)
@功能
def增强_数据(图像_批处理):
image=tf.py\u函数(append,inp=[image\u batch,tf.image.flip\u left\u right(image\u batch)],Tout=[tf.float32])
返回图像
嗨,我已经试过你的代码了。只有一件事返回了错误:您必须编写np.append
,而不仅仅是append
。除此之外,感谢您的回复。在本例中,append是一个用户定义的函数,但它也可以使用np.append。我是否应该使用tf.py_函数
,即使对于更“基本”的函数,如int()
?我现在强制一个数字为整数,得到:TypeError:“int”对象不可调用
。这是同一个问题吗?谢谢我认为关于int()
这是另一个问题。