【问题标题】:Is there a way to efficiently vectorize Tensorflow ops on images?有没有办法有效地矢量化图像上的 Tensorflow 操作?
【发布时间】:2016-11-23 01:10:36
【问题描述】:

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

我知道它们旨在与队列一起使用,因此它们仅对一个图像进行操作。

但是有没有一种方法可以将操作向量化以将 4D 张量 ([batch_size,height,width,depth]) 转换为相同大小的张量,并且 op 沿第一维以图像方式应用,而无需使用 @ 明确循环它们987654324@?

(编辑:关于rot90(),从 numpy rot90 中提取的一个聪明的技巧是:

rot90=tf.reverse(x,tf.convert_to_tensor((False,False,True,False)))
rot90=tf.transpose(rot90,([0,2,1,3])

编辑 2: 事实证明,这个问题已经被回答了好几次了 (one example) 如果你想要一个优化的版本,似乎 map_fn 是要走的路。我已经看过了,但我忘记了。我想这会使这个问题重复......

但是对于随机运算或更复杂的运算,最好有一个通用的方法来矢量化现有函数...)

【问题讨论】:

    标签: python image-processing tensorflow


    【解决方案1】:

    试试tf.map_fn

    processed_images = tf.map_fn(process_fn, images)
    

    【讨论】:

    • 谢谢!看起来很有希望!
    • 我认为,tf.map_fn 不是矢量化操作。在下面,它在范围内按顺序循环。您可能需要查看tf.vectorized_map
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多