У меня 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) Насколько я понимаю, опция groups = 2 в conv2d предоставит 2 отдельных входа для обучения весов, в этомслучай каждой из предыдущих сетей весов.Как они впоследствии объединяются?
Базовую концепцию см. здесь .