对于自定义Python代码,是否有tf.py_function()的替代方法?
我已经开始使用TensorFlow 2.0,在一个方面有点不确定 假设我有这样一个用例:当使用对于自定义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
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时的情况相反,默认情况下,渴望允许这种混合执行)