使用卷积自动编码器从2D到3D

时间:2017-11-19 03:26:05

标签: python machine-learning deep-learning pytorch autoencoder

我想从2D图像重建3D对象。 为此,我尝试使用卷积自动编码器。但是,我应该在哪一层提升维度?

我在下面编写了一个代码,但它显示错误:

  

“RuntimeError:无效参数2:size'[1 x 1156 x 1156]'对于输入2312个元素在pytorch-src / torch / lib / TH / THStorage.c:41”

无效
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)

1 个答案:

答案 0 :(得分:1)

我无法测试我的建议,因为你的例子并不完整。 我认为你的行应该

out = out.view(x.size(0), -1)
这样你就可以平息你的输入。