结合神经网络 Pytorch
Combining Neural Networks Pytorch
我有 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) 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)
我有 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) 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)