我有一个关于张量流的问题。
假设我有一个黑白图像,我想只用黑色像素做一些事情。所以我使用 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
。
恐怕两者都不会特别快。