结合神经网络火炬

时间:2018-10-02 21:52:47

标签: machine-learning neural-network computer-vision pytorch convolution

我输入了 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

1 个答案:

答案 0 :(得分:2)

使用nn.Conv2d层,您会假设权重是可训练的参数。但是,如果要过滤一个要素地图和另一个要素地图,则可以更深入地研究并使用torch.nn.functional.conv2d来明确定义输入和自己过滤:

out = torch.nn.functional.conv2d(out_conv3a, out_conv3b)