Tim*_*lin 5 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)
Run Code Online (Sandbox Code Playgroud)
上面的代码不起作用产生一个
“张量”对象没有属性“numpy”错误。
我已经阅读了关于 TensorFlow 2.0 的文档,指出如果想要使用任意的 Python 逻辑,则应该使用tf.py_function 或仅使用TensorFlow 原语:
How to convert "tensor" to "numpy" array in tensorflow?
我的问题如下:是否有另一种方法可以在带有自定义装饰器的函数中使用任意 python 代码/比使用更简单的方法tf.py_function?
老实说,对我来说,似乎必须有一种比传递给 a 更优雅的方法tf.py_function,转换为 numpy 数组,执行操作 A、B、C、D,然后重新转换为张量并产生结果。
没有其他方法可以做到这一点,因为tf.data.Datasets 仍然(我想,出于性能原因,它们将始终)以图形模式执行,因此,您不能使用tf.*方法之外的任何内容,这些方法可以通过以下方式轻松转换TensorFlow 到其图形表示。
使用tf.py_function是在使用tf.data.Dataset对象时混合 Python 执行(因此,您可以使用任何 Python 库)和图形执行的唯一方法(与使用 TensorFlow 2.0 时发生的情况相反,默认情况下,急切允许这种混合执行自然) .