使用动态形状张量map_fn



我有一个关于张量流的问题。

假设我有一个黑白图像,我想只用黑色像素做一些事情。所以我使用 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,我将收到如下错误消息:

文件 "/opt/anaconda2-4.3.1/lib/python2.7/site-packages/tensorflow/python/framework/tensor_util.py",第 371 行,make_tensor_proto 引发 ValueError("不支持无值"。 值错误: 不支持无值。

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

谢谢 经验值

对于具有k黑色像素的形状(batch_size, n, m)的图像,您可以使用(batch_size, n*m, 2)数组,其中轴 1 中的前k值(即out[:, :k]( 对应于像素的 2D 坐标,以及对应于非黑色像素数的整数k

或者,您可以在to_do_something内执行tf.where

恐怕两者都不会特别快。

最新更新