我们如何将线性层的输出提供给 PyTorch 中的 Conv2D?
How can we provide the output of a Linear layer to a Conv2D in PyTorch?
我正在构建一个自动编码器,我需要在其中将图像编码为长度为 100 的潜在表示。我正在为我的模型使用以下架构。
self.conv1 = nn.Conv2d(in_channels = 3, out_channels = 32, kernel_size=3)
self.conv2 = nn.Conv2d(in_channels=32,out_channels=64,kernel_size=3,stride=2)
self.conv3 = nn.Conv2d(in_channels=64,out_channels=128,kernel_size=3,stride=2)
self.linear = nn.Linear(in_features=128*30*30,out_features=100)
self.conv1_transpose = nn.ConvTranspose2d(in_channels=128,out_channels=64,kernel_size=3,stride=2,output_padding=1)
self.conv2_transpose = nn.ConvTranspose2d(in_channels=64,out_channels=32,kernel_size=3,stride=2,output_padding=1)
self.conv3_transpose = nn.ConvTranspose2d(in_channels=32,out_channels=3,kernel_size=3,stride=1)
有什么方法可以将 Linear
图层的输出提供给 Conv2D
或 ConvTranspose2D
图层,以便重建我的图像?如果删除 Linear
层,输出将恢复。我想知道如何在保持 Linear
层
的情况下重建我的图像
如有任何帮助,我们将不胜感激。谢谢!
你可以使用另一个线性层:
self.linear2 = nn.Linear(in_features=100, out_features=128*30*30)
然后将输出重塑为 3D 体积并将其传递到反卷积层。
我正在构建一个自动编码器,我需要在其中将图像编码为长度为 100 的潜在表示。我正在为我的模型使用以下架构。
self.conv1 = nn.Conv2d(in_channels = 3, out_channels = 32, kernel_size=3)
self.conv2 = nn.Conv2d(in_channels=32,out_channels=64,kernel_size=3,stride=2)
self.conv3 = nn.Conv2d(in_channels=64,out_channels=128,kernel_size=3,stride=2)
self.linear = nn.Linear(in_features=128*30*30,out_features=100)
self.conv1_transpose = nn.ConvTranspose2d(in_channels=128,out_channels=64,kernel_size=3,stride=2,output_padding=1)
self.conv2_transpose = nn.ConvTranspose2d(in_channels=64,out_channels=32,kernel_size=3,stride=2,output_padding=1)
self.conv3_transpose = nn.ConvTranspose2d(in_channels=32,out_channels=3,kernel_size=3,stride=1)
有什么方法可以将 Linear
图层的输出提供给 Conv2D
或 ConvTranspose2D
图层,以便重建我的图像?如果删除 Linear
层,输出将恢复。我想知道如何在保持 Linear
层
如有任何帮助,我们将不胜感激。谢谢!
你可以使用另一个线性层:
self.linear2 = nn.Linear(in_features=100, out_features=128*30*30)
然后将输出重塑为 3D 体积并将其传递到反卷积层。