有没有办法在图像上有效地矢量化Tensorflow操作?

时间:2016-11-07 08:50:55

标签: python image-processing tensorflow

Tensorflow有大量的变换可以应用于表示图像([高度,宽度,深度])的3D张量,例如tf.image.rot90()tf.image.random_flip_left_right()

我知道它们意味着与队列一起使用,因此它们只能在一个图像上运行。

但是有没有办法对ops进行矢量化以将4D张量([batch_size,height,width,depth])转换为相同尺寸张量,并且沿着第一维应用图像方式,而不使用{明确地循环遍历它们{1}}?

编辑:关于tf.while_loop()从numpy rot90获取的聪明黑客将是:

rot90()

编辑2:事实证明这个问题已经被回答了很多次(one example)如果你想要优化它似乎是rot90=tf.reverse(x,tf.convert_to_tensor((False,False,True,False))) rot90=tf.transpose(rot90,([0,2,1,3]) 的方法版。我已经看过了,但我已经忘记了。我想这会使这个问题重复......

然而对于随机op或更复杂的op,有一个通用方法来矢量化现有函数会很好...)

1 个答案:

答案 0 :(得分:5)

尝试tf.map_fn

processed_images = tf.map_fn(process_fn, images)