Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.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代码,是否有tf.py_function()的替代方法?_Python_Tensorflow Datasets_Tensorflow2.0 - Fatal编程技术网

对于自定义Python代码,是否有tf.py_function()的替代方法?

对于自定义Python代码,是否有tf.py_function()的替代方法?,python,tensorflow-datasets,tensorflow2.0,Python,Tensorflow Datasets,Tensorflow2.0,我已经开始使用TensorFlow 2.0,在一个方面有点不确定 假设我有这样一个用例:当使用tf.data.Dataset摄取数据时,我想对一些图像应用一些特定的增强操作。但是,我使用的外部库要求图像是一个numpy数组,而不是张量 当使用tf.data.Dataset.from_tensor_slices()时,流动数据需要为tensor类型。具体例子: def my_function(tensor_image): print(tensor_image.numpy() retur

我已经开始使用TensorFlow 2.0,在一个方面有点不确定

假设我有这样一个用例:当使用
tf.data.Dataset
摄取数据时,我想对一些图像应用一些特定的增强操作。但是,我使用的外部库要求图像是一个numpy数组,而不是张量

当使用
tf.data.Dataset.from_tensor_slices()
时,流动数据需要为tensor类型。具体例子:

def my_function(tensor_image):
   print(tensor_image.numpy()
   return


data = tf.data.Dataset.from_tensor_slices(tensor_images).map(my_function)
上面的代码无法生成

“Tensor”对象没有属性“numpy”错误

我已经阅读了TensorFlow 2.0的文档,其中指出,如果想要使用任意python逻辑,应该使用
tf.py_函数
或仅使用TensorFlow原语,具体如下:

我的问题如下:有没有比使用
tf.py_函数
更简单的方法在带有自定义装饰器的函数中使用任意python代码


老实说,在我看来,一定有比传递给
tf.py_函数
,转换成numpy数组,执行操作a、B、C、D,然后重新转换成张量并产生结果更优雅的方法

没有其他方法可以做到这一点,因为
tf.data.Dataset
s仍然以图形模式执行(我想,出于性能原因,它们将始终以图形模式执行),因此,您不能使用
tf.*
方法之外的任何方法,这些方法可以通过TensorFlow轻松转换为其图形表示形式

使用
tf.py_函数
是在使用
tf.data.Dataset
对象时混合Python执行(因此,您可以使用任何Python库)和图形执行的唯一方法(与使用TensorFlow 2.0时的情况相反,默认情况下,渴望允许这种混合执行)