Machine learning 组合神经网络

Machine learning 组合神经网络,machine-learning,neural-network,computer-vision,pytorch,convolution,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)

我有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) 深度/可分离卷积(如google中的)是否会比串联输入的2d卷积产生任何优势。因此,卷积可以作为相似性度量,互相关和卷积是非常相似的

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


有关基本概念,请参见。

使用
nn.Conv2d
层,假设权重是可训练参数。但是,如果要用一个要素映射过滤另一个要素映射,可以深入研究并使用来显式定义输入和过滤:

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

a) 我不确定,你是如何使用卷积来计算相关性的?卷积类似于相关性,是的,但权重滤波器和输入之间的相关性,而不是两个串联输入之间的相关性。b) 当您使用group=2时,您不需要合并输出,如果您这样要求,它已经合并了。但我不确定conv2d提供了什么“输入”,它只提供了答案的权重!a) 我不是在试图计算相关性,而是通过卷积来定义相似性度量,即可学习的权重,但我不确定这是否合理。b) 输入将是out_conv3a、out_conv3b的连接层,因此是一组可学习的参数。可能是一个想法,双线性池将只是矩阵的外积。这就是我正在使用的,或者这将取代concat?如果是这样,有什么好处?