2017-11-19 23 views
0

2D画像から3Dオブジェクトを再構成したいと思います。 そのため、私は畳み込み式の自動エンコーダを使用しようとしています。しかし、どのレイヤーで次元を上げるべきですか?畳み込みオートエンコーダーを使用した2Dから3Dへ

私は以下のコードを書きましたが、しかし、それはエラーを示しています

“RuntimeError: invalid argument 2: size ‘[1 x 1156 x 1156]’ is invalid for input of with 2312 elements at 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) 
+0

'out = out.view(1、1156、1156)'で指定された寸法は正しいですか? 1 * 1156 * 1156 = 1336336で2312要素の入力に適合できないようです –

答えて

1

あなたの例が完了していないので、私は私の提案をテストすることはできませんが起こります。 私はあなたのラインが

out = out.view(x.size(0), -1) 

、あなたの入力を平坦化しているこの方法のようにすべきだと思います。

関連する問題