了解 PyTorch CNN 频道
Understanding PyTorch CNN Channels
我对 CNN 和通道的工作方式有点困惑。具体来说,这两个实现为什么不相等?输出通道的数量不只是应用了很多过滤器吗?
self.conv1 = nn.Conv2d(1, 10, kernel_size=(3, self.embeds_size))
self.conv2 = nn.ModuleList([nn.Conv2d(1, 1, kernel_size=(3, self.embeds_size)) for f in range(10)])
...
conv1s = self.conv1(x)
conv2s = [conv(x) for conv in self.conv2]
conv2s = torch.stack(conv2s, 1).squeeze(2)
print(torch.equal(conv1s, conv2s))
检查不同模块的状态指令。除非你正在做一些你没有告诉我们的奇特的事情,否则 PyTorch 将随机初始化权重。具体来说,试试这个:
print(self.conv1.state_dict()["weight"][0])
print(self.conv2[0].state_dict()["weight"][0])
它们会有所不同。
我对 CNN 和通道的工作方式有点困惑。具体来说,这两个实现为什么不相等?输出通道的数量不只是应用了很多过滤器吗?
self.conv1 = nn.Conv2d(1, 10, kernel_size=(3, self.embeds_size))
self.conv2 = nn.ModuleList([nn.Conv2d(1, 1, kernel_size=(3, self.embeds_size)) for f in range(10)])
...
conv1s = self.conv1(x)
conv2s = [conv(x) for conv in self.conv2]
conv2s = torch.stack(conv2s, 1).squeeze(2)
print(torch.equal(conv1s, conv2s))
检查不同模块的状态指令。除非你正在做一些你没有告诉我们的奇特的事情,否则 PyTorch 将随机初始化权重。具体来说,试试这个:
print(self.conv1.state_dict()["weight"][0])
print(self.conv2[0].state_dict()["weight"][0])
它们会有所不同。