我想从2D图像重建3D对象。为此,我尝试使用卷积自动编码器。但是,我应该在哪一层提升维度?
我在下面写了一个代码,但是,它显示了一个错误:
"运行时错误:参数 2 无效:大小 '[1 x 1156 x 1156]' 对于在 pytorch-src/torch/lib/TH/THStorage.c:41 输入 2312 个元素无效">
class dim_lifting(nn.Module):
def __init__(self):
super(dim_lifting, self).__init__()
self.encode = nn.Sequential(
nn.Conv2d(1, 34, kernel_size=5, padding=2),
nn.MaxPool2d(2),
nn.Conv2d(34, 16, kernel_size=5, padding=2),
nn.MaxPool2d(2),
nn.Conv2d(16, 8, kernel_size=5, padding=2),
nn.MaxPool2d(2),
nn.LeakyReLU()
)
self.fc1 = nn.Linear(2312, 2312)
self.decode = nn.Sequential(
nn.ConvTranspose3d(1, 16, kernel_size=5, padding=2),
nn.LeakyReLU(),
nn.ConvTranspose3d(16, 32, kernel_size=5, padding=2),
nn.LeakyReLU(),
nn.MaxPool2d(2))
def forward(self, x):
out = self.encode(x)
out = out.view(out.size(0), -1)
out = self.fc1(out)
out = out.view(1, 1156, 1156)
out = self.decode(out)
return out
错误发生在这里
out = out.view(1, 1156, 1156)
我无法测试我的建议,因为您的示例不完整。我想你的台词应该喜欢
out = out.view(x.size(0), -1)
这样,您就可以平展输入。