type
status
date
slug
summary
tags
category
icon
password
报错信息
RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation: [torch.cuda.FloatTensor [518, 256]], which is output 0 of ReluBackward0, is at version 1; expected version 0 instead. Hint: the backtrace further above shows the operation that failed to compute its gradient. The variable in question was changed in there or anywhere later. Good luck!
问题分析
在程序前设置打印cuda栈的调用信息(这一步我忘记是不是必须得了,好像本文的错误自己就会给出报错的位置?)
这个报错大概率是因为新版本torch中的relu函数导致的。
本人遇到情况中,报错信息指示最后一次调用我的代码是一个Relu的函数,报错信息说是ReLU调用F.Relu,其中inplace属性有问题,inplace被设置成true了。
解决方法
- 设置Relu(inplace=False)。
- 改用LeakyRelu.
第一个不一定其效果,好像这个inplace参数在新版本中有点问题?一般第二个就能解决,换成LeakyReLU就好很多。
注意:ReLU和LeakyReLU的区别就是LeakyReLU允许设定的负值通过。
注意:ReLU和LeakyReLU的区别就是LeakyReLU允许设定的负值通过。
- Author:Kecilimu
- URL:https://kecilimu-notion.vercel.app//article/20241008133007
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!