【发布时间】:2018-10-09 22:01:56
【问题描述】:
我有一个形状为 [batch_size, num_kernels, kernel_dim] 的张量。然后我从中导出两个张量,一个形状为[batch_size, num_kernels, kernel_dim, 1],另一个形状为[1, num_kernels, kernel_dim, batch_size],然后从第一个中减去第二个,得到[batch_size, num_kernels, kernel_dim, batch_size]的形状(通过numpy、tensorflow等)。这是怎么回事?每个维度的含义是什么?例如,num_kernel 是否仍然表示内核数作为原始张量,为什么?
更新:
这就是我的问题出现的地方。它基本上描述了 Tim Salimans 等人在论文“Improved Techniques for Training GANs”中介绍的 minibatch 判别。
我不明白为什么 tensorflow 中的代码成功地计算了上面描述的过程。更具体地说,我想知道第 2 步和第 3 步如何匹配代码。
【问题讨论】:
-
维度并没有真正的意义,至少不是脱离上下文。结果中第一个
batch_size对应于第一个数组的第一个维度。第二个batch_size对应于第二个数组的最后一个维度。但是是你赋予了那个维度一些意义或身份。可能是您通过转置原始数组得出第二个数组,也可能您做了其他事情,它的大小为batch_size只是巧合。 -
嗨,@hpaulj。我的意思是使其大小为
batch_size。假设得到的张量是t,我不确定tf.transpose(tf.reduce_sum(t, 0), [2, 0, 1] )是否等于`tf.reduce_sum(t, 3) -
我在我的答案中添加了对这些总和替代方案的测试。