具有动态形状张量的map_fn

时间:2018-08-13 17:08:05

标签: tensorflow

我对张量流有疑问。

假设我有一个黑白图像,并且我只想用黑色像素做一些事情。所以我正在使用tf.where来获取这些像素的位置,并将这些位置传递给tf.map_fn,例如:

def to_do_something(pixel):
    to_do_some_fancy_thing
    return

indices = tf.where(black_white_image)
tf.map_fn(to_do_something, indices)

但是现在我面临的问题是索引的长度是未知的,但是map_fn()需要一个已知的形状。如果我将索引传递给map_fn,则会收到如下错误消息:

  

make_tensor_proto中的文件“ /opt/anaconda2-4.3.1/lib/python2.7/site-packages/tensorflow/python/framework/tensor_util.py”,行371       引发ValueError(“不支持任何值。”)   ValueError:不支持任何值。

有什么办法可以解决这个问题?

谢谢, XP

1 个答案:

答案 0 :(得分:0)

对于形状为(batch_size, n, m)且像素为k的黑色图像,可以使用(batch_size, n*m, 2)数组,其中第1个轴上的前k个值(即{{1} })对应于像素的2D坐标,以及对应于非黑色像素数量的整数out[:, :k]

或者,您可以在k内进行tf.where

我担心两个都不会特别快。