将 Conv2d 转换为 Linear

问题描述 投票:0回答:2

我有一个 PyTorch

Conv2d
层:

Conv2d(96, 1000, kernel_size=torch.Size([10, 10]), stride=(1, 1))

我知道

Conv2d
层是
Linear
层的特例。如何在 PyTorch 中将
Conv2d
层转换为
Linear
层?

deep-learning pytorch
2个回答
0
投票

我不会将卷积层称为“线性层的特例”。但对于你的问题:你的意思是如何将转换层输出展平为线性层?因为您需要转换矩阵。对于向量线性层,您必须将矩阵展平,例如形状为 (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 现在可以传递到展平层中。希望有帮助!


0
投票

您可以使用托普利茨矩阵来做到这一点。

您可以在 PyTorch 论坛中找到一些代码:https://discuss.pytorch.org/t/obtaining-toeplitz-matrix-for-convolution/52968

© www.soinside.com 2019 - 2024. All rights reserved.