Conv2d
层:
Conv2d(96, 1000, kernel_size=torch.Size([10, 10]), stride=(1, 1))
我知道
Conv2d
层是 Linear
层的特例。如何在 PyTorch 中将 Conv2d
层转换为 Linear
层?
我不会将卷积层称为“线性层的特例”。但对于你的问题:你的意思是如何将转换层输出展平为线性层?因为您需要转换矩阵。对于向量线性层,您必须将矩阵展平,例如形状为 (m, n) 的矩阵将变成向量 (m*n, 1)。以下是如何在 Pytorch 中执行此操作:
x = nn.Conv2d(96, 1000, kernel_size=torch.Size([10, 10]), stride=(1, 1))
x = x.view(-1, x.size()[1] * x.size()[2] * x.size()[3])
x 现在可以传递到展平层中。希望有帮助!
您可以使用托普利茨矩阵来做到这一点。
您可以在 PyTorch 论坛中找到一些代码:https://discuss.pytorch.org/t/obtaining-toeplitz-matrix-for-convolution/52968