在Tensorflow中,可以使用tf.gather()进行部分连接吗?

In Tensorflow, can I use tf.gather() for partial connection?

我正在尝试实现层之间的部分连接。比方说,我只想使用一些特征图,例如第一个和第三个。

代码:

# let say, L1 is layer1 output of shape [batch_size x image_size x image_size x depth1]
partL1 = L1[:, :, :, [0,2]]
# W2 is a tf variable of shape [5, 5, 2, depth2]
conv2 = tf.nn.conv2d(partL1, W2)

是,不是,是。 :-) (a) 是的,您可以按照您的建议使用 gather 来选择层的子集以传播到下一层。

(b) 不,很遗憾,您不能使用索引运算符。您需要显式调用 tf.gather().

(c) 是的,TensorFlow 会存储一份用于收集的索引副本,并将它们保存起来用于反向传播。如果您对如何查看操作的输入并使用这些输入传播回来感到好奇,您可以查看 the implementation of Gather's Gradient