我想在我的输入管道中随机翻转几个不同大小的输入图像。对于不同的图像,翻转需要保持一致——要么全部翻转,要么不翻转。由于使用tf.image.random_flip_left_right()不足以实现这一点,我改为这样做:
images = [img1, img2]
def fliplr(*args):
return [tf.image.flip_left_right(t) for t in args]
def id(*args):
return args
img1, img2 = tf.cond(tf.random_uniform([1]) > 0.5, fliplr(images), id(images), name='fliplr')
Run Code Online (Sandbox Code Playgroud)
这是tf.Dataset.map()使用我的输入数据集对象调用的函数的一部分。
但是,我从该flip_left_right行收到此错误:
ValueError:两个形状中的维度 1 必须相等,但分别为 3 和 1。形状为 [240,320,3] 和 [240,320,1]。
将形状 0 与其他形状合并。对于具有输入形状的“flip_left_right/image”(操作:“Pack”):[240,320,3]、[240,320,1]。
我认为这是因为我的图像大小不同(240x320,1 个或 3 个通道),但我不明白为什么这很重要。
我该如何解决这个错误?或者,有没有更好的方法来获得我想要的东西来避免这个错误?
我正在使用 TensorFlow-1.8(但如果需要可以升级)。
像这样?
do_flip = tf.random_uniform([]) > 0.5
img1 = tf.cond(do_flip, lambda: tf.image.flip_left_right(img1), lambda: img1)
img2 = tf.cond(do_flip, lambda: tf.image.flip_left_right(img2), lambda: img2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1842 次 |
| 最近记录: |