【发布时间】:2019-04-29 18:25:16
【问题描述】:
我正在尝试使用带有 tensorflow 后端的 keras 编写 GAN 生成器模型的代码。我希望生成器输出是精确坐标中图像值的向量(对于批次中的每个图像大小相同)。这些坐标也作为生成器的输入给出。
我尝试使用 tf.gather_nd 作为函数来执行类似 numpy 的操作,从精确坐标中提取值。
img 是由 shape=(?,28,28,1) 的噪声图像生成的,
coordinates 是形状为 (?,80,2) 的输入张量,从生成的图像img 中提取 80 个点,
vect是一个输出向量,应该是(?, 80)的大小,
在哪里 ?是批量大小。
vect = Lambda(lambda x: tf.gather_nd(x, tf.cast(coordinates, 'int64')))(img)
最后这个函数的输出形状是 (?,80,28,1) 而不是 (?,80)。
如何更好地提取这些点?
【问题讨论】:
-
所以从这个输出向量,大小为
(?, 80),你想制作一个图像,将这80个值放在coordinates给出的坐标中,对吧?我认为你需要tf.scatter_nd。输出图像的形状是什么,是不是也是(?, 28, 28, 1)?没有值的图像点应该为零吗? -
不,我只想从图像中提取精确坐标中的值。所以输出只是一个大小为
(?,80)的向量,其中?是一个批量大小 -
嗯,好吧,所以你想获得
(?,80)向量,抱歉,我以为你输入的是这个。你说得对,你需要tf.gather_nd,我会修正我的答案。 -
更新了我的答案,希望现在真正解决您的问题。
标签: python tensorflow keras