RuntimeError: cudnn RNN backward can only be called in training mode

Posted 沉迷单车的追风少年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RuntimeError: cudnn RNN backward can only be called in training mode相关的知识,希望对你有一定的参考价值。

问题描述:

RuntimeError: cudnn RNN backward can only be called in training mode

问题分析:

原因是反向传播的时候不能是非train状态。

我的代码里面在反向传播之前加了个Alexnet,Alexnet计算loss后会自己反向传播,此时在整体LSTM反向传播的时候就会出现这个非train状态的问题。

解决:

百度一下:

第一页的方法我都试过,全都没有用。。。

彻底解决:

在开始训练之前加上:

torch.backends.cudnn.enabled=False

 即可彻底解决!!!

以上是关于RuntimeError: cudnn RNN backward can only be called in training mode的主要内容,如果未能解决你的问题,请参考以下文章

RuntimeError:cuDNN 错误:CUDNN_STATUS_NOT_INITIALIZED 使用 pytorch

RuntimeError: cuDNN error: CUDNN_STATUS_INTERNAL_ERROR

RNN - RuntimeError:输入必须有 3 维,得到 2

Pytorch RNN 错误:RuntimeError:输入必须有 3 个维度得到 1

RuntimeError: Expected hidden size (2, 24, 50), got (2, 30, 50)

将 CudnnGRU 参数转换为正常的权重和偏差