Pytorch 基于预训练vgg16模型的CUDNN误差

Pytorch 基于预训练vgg16模型的CUDNN误差,pytorch,Pytorch,我试图提取VGG16模型中最后一层的激活。 为此,我在模型上使用了一个装饰器,如下所示 当我将cuda张量传递给模型时,我会得到一个CUDNN\u状态\u内部\u错误以及以下回溯 有人知道我哪里出错了吗 回溯: File "/media/data1/iftachg/frame_glimpses/parse_files_to_vgg.py", line 80, in get_activation return model(image) File "/media/data1/ifta

我试图提取VGG16模型中最后一层的激活。 为此,我在模型上使用了一个装饰器,如下所示

当我将cuda张量传递给模型时,我会得到一个CUDNN\u状态\u内部\u错误以及以下回溯

有人知道我哪里出错了吗

回溯

  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

  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

显然,cudnn错误非常没有帮助,代码本身也没有问题-这只是我试图访问的GPU已经在使用中。

显然,cudnn错误非常没有帮助,代码本身也没有问题-这只是我试图访问的GPU已经在使用中。

就像一只张量成形虫。如上所述,CUDNN错误消息几乎毫无用处。要获得更直观的错误消息,请在CPU上运行代码

net.cpu()

这看起来像一个张量整形错误。如上所述,CUDNN错误消息几乎毫无用处。要获得更直观的错误消息,请在CPU上运行代码

net.cpu()

我不确定你的错误,但我认为可能有一种更简单的方法来做你想做的事情。请看我的回答,其中解释了如何使用预先训练的模型并从中构建新模型/仅提取其中的一部分来构建新模型:不确定您的错误,但我认为可能有一种更简单的方法来完成您试图做的事情。请看我的回答,其中解释了如何使用预训练模型并从中构建新模型/仅提取部分内容以构建新模型: