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

标签 python tensorflow-datasets tensorflow2.0

我已经开始使用 TensorFlow 2.0,并且在某一方面有点不确定。

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

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

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


data = tf.data.Dataset.from_tensor_slices(tensor_images).map(my_function)

上面的代码不起作用产生一个

'Tensor' object has no attribute 'numpy' error.



我已经阅读了关于 TensorFlow 2.0 的文档,说明如果想要使用任意的 Python 逻辑,应该使用 tf.py_function 或仅 TensorFlow 原语 根据:
How to convert "tensor" to "numpy" array in tensorflow?

我的问题是以下 :是否有另一种方法可以在带有自定义装饰器的函数中使用任意 Python 代码/比使用 tf.py_function 更简单的方法?

老实说,对我来说,似乎必须有一种比传递给 tf.py_function 更优雅的方式。 ,转换为 numpy 数组,执行操作 A、B、C、D,然后重新转换为张量并产生结果。

最佳答案

没有其他方法可以做到,因为 tf.data.Dataset s 仍然(我想,出于性能原因,它们将始终以图形模式执行),因此,您不能使用 tf.* 之外的任何内容。方法,可以很容易地被 TensorFlow 转换为它的图形表示。

使用 tf.py_function是在使用 tf.data.Dataset 时混合 Python 执行(因此,您可以使用任何 Python 库)和图形执行的唯一方法对象(与使用 TensorFlow 2.0 时发生的情况相反,默认情况下急切允许这种混合执行自然)。

关于python - 对于自定义 Python 代码,是否有替代 tf.py_function() 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59497372/

相关文章:

python - 是否有任何支持 Windows 7 样式文件选择器的 python GUI 框架?

python - 如果2秒内找不到元素如何让驱动程序退出

python - Wand 无法打开现有文件

python - Tensorflow:如何找到 tf.data.Dataset API 对象的大小

python - python中r替代的rm()函数

python - 迭代 tf.data.Dataset 的有效方法

python - 如何使用嵌套形状的 tf.data.Dataset.padded_batch?

tensorflow - Tensorflow 中 LSTM 层的门权重顺序

python - 在 tf 函数内迭代 tf.Tensor 以生成基于 NamedTuple 的数据集项列表

tensorflow2.0 - Tensorflow 2.X 错误 - 在 Colab 上运行的二进制文件中未注册 Op 类型 'CaseFoldUTF8'