我输入了 2张图像, x1 和 x2 ,并尝试将卷积用作相似度度量 。这个想法是,学习的权重替代了更传统的相似性度量(互相关,NN等)。定义我的转发函数如下:
def forward(self,x1,x2):
out_conv1a = self.conv1(x1)
out_conv2a = self.conv2(out_conv1a)
out_conv3a = self.conv3(out_conv2a)
out_conv1b = self.conv1(x2)
out_conv2b = self.conv2(out_conv1b)
out_conv3b = self.conv3(out_conv2b)
现在使用相似性度量:
out_cat = torch.cat([out_conv3a, out_conv3b],dim=1)
futher_conv = nn.Conv2d(out_cat)
我的问题如下:
1)像Google paper中那样,深度/可分离卷积会比串联输入的2d卷积产生任何优势。为此,卷积可以作为相似性度量,互相关和卷积非常相似。
2)据我了解,conv2d中的groups = 2选项将提供2个单独的输入来训练权重,在这种情况下,每个先前的网络权重都将得到。以后如何将它们组合在一起?
有关基本概念,请参见here。
答案 0 :(得分:2)
使用nn.Conv2d
层,您会假设权重是可训练的参数。但是,如果要过滤一个要素地图和另一个要素地图,则可以更深入地研究并使用torch.nn.functional.conv2d
来明确定义输入和自己过滤:
out = torch.nn.functional.conv2d(out_conv3a, out_conv3b)