我实现了 MLP、RNN、CNN 的组合。批量大小为 420 时,一切似乎都运行良好(也就是我没有收到任何错误)。但是,一旦我将批次增加到 840,我就会收到以下错误:
Traceback (most recent call last):
File "train_cnn_rnn.py", line 152, in <module>
loss.backward()
File "/home/tbaumgae/.local/lib/python3.5/site-packages/torch/autograd/variable.py", line 146, in backward
self._execution_engine.run_backward((self,), (gradient,), retain_variables)
RuntimeError: CUDNN_STATUS_NOT_SUPPORTED. This error may appear if you passed in a non-contiguous input.
向前传球似乎工作正常。我检查所有变量是否连续并且它们是连续的。此外,我对损失计算的预测和目标是连续的,而且返回的损失也是连续的。但是随后在调用时会发生此错误backward()
。任何想法为什么会发生这种情况?
CUDA 版本 8.0.61
Python 3.5.2
评论摘要:
- 一个序列中有 210 张图像,因此,我的批量大小为 210 步。每个图像的形状为
[3, 250, 250]
. - 我正在向后使用 PyTorch,我自己还没有实现任何向后的方法。