在 Numpy 中预处理 Tensorflow 张量

2024-04-21

我在 Tensorflow 中设置了一个 CNN,用 TFRecordReader 读取数据。它工作得很好,但我想做一些比提供的更多的预处理和数据增强tf.image功能。我特别想做一些随机缩放。

是否可以在 Numpy 中处理 Tensorflow 张量?或者我是否需要删除 TFRecordReader 并在 Numpy 中进行所有预处理并使用 feed_dict 提供数据?我怀疑 feed_dict 方法在图像训练时很慢,但我可能是错的?


如果您可以创建一个自定义 I/O 管道,使用一个或多个线程从 TensorFlow 获取中间结果,应用任意 Python 逻辑,然后将它们输入队列进行后续处理。结果程序会稍微复杂一些,但我建议你看看线程和队列 HOWTO https://www.tensorflow.org/versions/master/how_tos/threading_and_queues/index.html有关如何开始的信息。


有一个实验性的功能可能会让这变得更容易,如果你从源安装 https://www.tensorflow.org/versions/master/get_started/os_setup.html#installing-from-sources.

如果您已经使用 TensorFlow 操作构建了预处理管道,那么添加一些自定义 Python 代码的最简单方法是使用tf.py_func() https://www.tensorflow.org/versions/master/api_docs/python/script_ops.html#py_func运算符,它接受一个列表Tensor对象,以及将一个或多个 NumPy 数组映射到一个或多个 NumPy 数组的 Python 函数。

例如,假设您有这样的管道:

reader = tf.TFRecordReader(...)
image_t = tf.image.decode_png(tf.parse_single_example(reader.read(), ...))

...你可以使用tf.py_func()应用一些自定义 NumPy 处理,如下所示:

from scipy import ndimage
def preprocess(array):
  # `array` is a NumPy array containing.
  return ndimage.rotate(array, 45)

image_t = tf.py_func(preprocess, [image_t], [tf.float32])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Numpy 中预处理 Tensorflow 张量 的相关文章

随机推荐