2017-09-24 5 views
0

VGG16モデルの最後のレイヤーのアクティベーションを抽出しようとしています。 その目的のために、私は以下のようにモデル上にデコレータを使用しました。pretrained vgg16モデルを使用したCUDNNエラー

モデルにcudaテンソルを渡すと、次のトレースバックでCUDNN_STATUS_INTERNAL_ERRORが得られます。

誰かが間違っていたことを知っていますか?

トレースバック

File "/media/data1/iftachg/frame_glimpses/parse_files_to_vgg.py", line 80, in get_activation 
    return model(image) 
    File "/media/data1/iftachg/miniconda2/lib/python2.7/site-packages/torch/nn/modules/module.py", line 206, in __call__ 
    result = self.forward(*input, **kwargs) 
    File "/media/data1/iftachg/frame_glimpses/partial_vgg.py", line 24, in forward 
    x = self.vgg16.features(x) 
    File "/media/data1/iftachg/miniconda2/lib/python2.7/site-packages/torch/nn/modules/module.py", line 206, in __call__ 
    result = self.forward(*input, **kwargs) 
    File "/media/data1/iftachg/miniconda2/lib/python2.7/site-packages/torch/nn/modules/container.py", line 64, in forward 
    input = module(input) 
    File "/media/data1/iftachg/miniconda2/lib/python2.7/site-packages/torch/nn/modules/module.py", line 206, in __call__ 
    result = self.forward(*input, **kwargs) 
    File "/media/data1/iftachg/miniconda2/lib/python2.7/site-packages/torch/nn/modules/conv.py", line 237, in forward 
    self.padding, self.dilation, self.groups) 
    File "/media/data1/iftachg/miniconda2/lib/python2.7/site-packages/torch/nn/functional.py", line 39, in conv2d 
    return f(input, weight, bias) 
RuntimeError: CUDNN_STATUS_INTERNAL_ERROR 

クラス

class partial_vgg(nn.Module): 

    def __init__(self): 
     super(partial_vgg, self).__init__() 
     self.vgg16 = models.vgg16(pretrained=True).cuda() 
     for param in self.vgg16.parameters(): 
      param.requires_grad = False 

    def forward(self, x): 

     x = self.vgg16.features(x) 
     x = x.view(x.size(0), -1) 
     for l in list(self.vgg16.classifier.children())[:-3]: 
      x = l(x) 
     return x 
+2

あなたのエラーについてはわかりませんが、あなたがしようとしていることを行う簡単な方法があると思います。あらかじめ訓練されたモデルを使って新しいモデルを構築する方法/その一部だけを抽出して新しいモデルを作成する方法については、私の答えを見てください:https://stackoverflow.com/questions/44146655/how-to-convert -pretrained-fc-layers-to-conv-layers-in-pytorch/44410334#44410334 – mexmex

答えて

1

どうやらcudnnエラーは非常に助けにならないで、コード自体に問題がなかった - それは私がしようとしていた単純なGPUでありますアクセスは既に使用中です。

1

これはテンサーシェーピングバグのようです。上記のように、CUDNNのエラーメッセージはほとんど役に立ちません。より直感的なエラーメッセージを表示するには、CPU上でコードを実行します。

net.cpu() 
関連する問題