Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TensorFlow 2.0:带有@tf.Function decorator的函数不';不接受numpy函数_Python_Numpy_Tensorflow_Tensorflow2.0 - Fatal编程技术网

Python TensorFlow 2.0:带有@tf.Function decorator的函数不';不接受numpy函数

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

我正在编写一个函数来实现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.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()
这是另一个问题。