我正在尝试在图层之间实现部分连接。比方说,我想只使用一些特征图,例如第一个和第三个。
代码:
# 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)
答案 0 :(得分:3)
是的,不,是的。 :-) (a)是的,您可以使用聚集来挑选图层的子集以传播到下一层,如您所建议的那样。
(b)不,遗憾的是,您无法使用索引运算符。您需要明确调用tf.gather()
。
(c)是的,TensorFlow将存储用于收集的索引的副本并将其保存为backprop。如果您对如何查看op的输入并使用这些输入进行传播,您可以看到the implementation of Gather's Gradient。