Ошибка cuDNN: CUDNN_STATUS_BAD_PARAM.Кто-нибудь может объяснить, почему я получаю эту ошибку и как я могу ее исправить?

#pytorch #cudnn

#pytorch #cudnn

Вопрос:

Я пытаюсь реализовать символьный LSTM с помощью Pytorch.Но я получаю ошибки cudnn_status_bad_params.Это цикл обучения.Я получаю ошибку при выводе строки = model (input_seq).

 for epoch in tqdm(range(epochs)):
  for i in range(len(seq)//batch_size):
   sidx = i*batch_size
   eidx = sidx   batch_size
   x = seq[sidx:eidx]
   x = torch.tensor(x).cuda()
   input_seq =torch.nn.utils.rnn.pack_padded_sequence(x,seq_lengths,batch_first = True)
   y = out_seq[sidx:eidx]
   output = model(input_seq)
   loss = criterion(output,y)
   loss.backward()
   optimizer.step()
/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py in __call__(self, *input, **kwargs)
    487             result = self._slow_forward(*input, **kwargs)
    488         else:
--> 489             result = self.forward(*input, **kwargs)
    490         for hook in self._forward_hooks.values():
    491             hook_result = hook(self, input, result)   
/usr/local/lib/python3.6/dist-packages/torch/nn/modules/rnn.py in forward(self, input, hx)
    180         else:
    181             result = _impl(input, batch_sizes, hx, self._flat_weights, self.bias,
--> 182                            self.num_layers, self.dropout, self.training, self.bidirectional)
    183         output = result[0]
    184         hidden = result[1:] if self.mode == 'LSTM' else result[1]

 RuntimeError: cuDNN error: CUDNN_STATUS_BAD_PARAM
  

Ответ №1:

Я получил ту же ошибку, если вы переключитесь на CPU, вы получите гораздо лучшее описание ошибки. В моем случае проблема заключалась в типе ввода, который я передавал в сеть. Я отправлял, я думаю long , в то время как модель была необходима float . Я внес следующие изменения, и код заработал. В принципе, переключение на cpu дает лучшие описания ошибок.

 input_seq = input_seq.float().cuda()
  

Комментарии:

1. «если вы переключитесь на CPU, вы получите гораздо лучшее описание ошибки » absolute gold

Ответ №2:

Я бы прокомментировал ответ Prateek, но я не могу, поэтому я добавляю это здесь для будущих поколений:

Я запустил модель на процессоре, и моя ошибка была обновлена до другой неполезной ошибки, для которой я не смог найти в Интернете решение:

 RuntimeError: could not create a descriptor for a dilated convolution forward propagation primitive
  

Для меня это был слой conv, ошибочно определенный с расширением = 0 вместо 1. Итак, согласно исходной ошибке (CUDNN_STATUS_BAD_PARAM), убедитесь, что параметры для слоя, подверженного ошибкам, действительны.

Комментарии:

1. Спасибо! Я повторил ту же ошибку.

Ответ №3:

У меня была такая же проблема, и проблема была с torch == 1.6. Решение можно найти здесь проблема с git. Взгляните. Возможно, это и ваше решение.

Ответ №4:

Я сталкиваюсь с той же ошибкой. Вот решение.

Вы должны изменить тип ввода с float64 на float32 , что означает, что вы должны ввести:

 input_seq = input_seq.float()
  

Комментарии:

1. Это точная копия ответа, уже опубликованного за год до вашего.

2. Извините, пожалуйста, укажите источник, откуда я скопировал, если вы думаете, что это не origin!!! Кроме того, я упомянул, где я получаю решение.