RuntimeError:cuDNN 错误:CUDNN_STATUS_NOT_INITIALIZED 在 Torch 中向后传递

问题描述 投票:0回答:0

我正在研究自动编码器的 Pytorch 代码。训练集包含形状为

batchsize*3*height*width
的图像。该模型的代码太大,无法放在这里。一些代码是:

model = Network()
model.cuda()
#loss = nn.CrossEntropyLoss()
loss = nn.BCELoss()
optim = torch.optim.Adam(model.parameters())

我简单地得到了前向传递的输出:

y_pred = model( torch.tensor(train, dtype= torch.float).cuda())

这给出形状

batchsize*3*height1*width1
的输出。我做了相同形状的groundtruth。

损失由这条线单独调用:

l = loss(y_pred, my_list_resized.cuda())

到目前为止它运行良好......

然而,当我在循环中尝试它时:

for epoch in range(1):
    y_pred = model( torch.tensor(train, dtype= torch.float).cuda())
    l = loss(y_pred, my_list_resized.cuda())
    optim.zero_grad()
    l.backward()
    optim.step()

这给出了 l.backward() 行的错误:

RuntimeError                              Traceback (most recent call last)
<ipython-input-31-99d4765682f1> in <module>
----> 1 l.backward()

~\anaconda3\lib\site-packages\torch\tensor.py in backward(self, gradient, retain_graph, create_graph)
    219                 retain_graph=retain_graph,
    220                 create_graph=create_graph)
--> 221         torch.autograd.backward(self, gradient, retain_graph, create_graph)
    222 
    223     def register_hook(self, hook):

~\anaconda3\lib\site-packages\torch\autograd\__init__.py in backward(tensors, grad_tensors, retain_graph, create_graph, grad_variables)
    128         retain_graph = create_graph
    129 
--> 130     Variable._execution_engine.run_backward(
    131         tensors, grad_tensors_, retain_graph, create_graph,
    132         allow_unreachable=True)  # allow_unreachable flag

RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED

在 epcoh 之外单独运行 l.backward() 也会出现此错误。请问有什么解决办法吗?

python pytorch torch
© www.soinside.com 2019 - 2024. All rights reserved.