结合神经网络 Pytorch

Combining Neural Networks Pytorch

我有 2 张图像 作为输入,x1x2 并尝试使用卷积作为相似性度量。这个想法是学习的权重替代了更传统的相似性度量(互相关,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) Depthwise/Separable 卷积是否会像 google paper 中那样产生优于串联输入的 2d 卷积的任何优势。就此而言,卷积可以作为相似性度量吗,互相关和卷积非常相似。

2) 据我了解,conv2d 中的 groups=2 选项将提供 2 个单独的输入来训练权重,在这种情况下,每个先前的网络权重。这些后来如何组合?

有关基本概念,请参阅 here

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

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