Pytorch中Trying to backward through the graph和one of the variables needed for gradient错误解决方案

简介: Pytorch中Trying to backward through the graph和one of the variables needed for gradient错误解决方案

Pytorch中Trying to backward through the graph a second time错误解决方案

一、项目代码运行过程中完整的错误如下:

RuntimeError: Trying to backward through the graph a second time (or directly access saved tensors after they have already been freed). Saved intermediate values of the graph are freed when you call .backward() or autograd.grad(). Specify retain_graph=True if you need to backward through the graph a second time or if you need to access saved tensors after calling backward.

二、错误内容翻译成中文就是:

运行错误:第二次尝试向后遍历图形(或在已释放的张量后直接访问已保存的张量)。调用时,图形的已保存中间值将被释放。向后()或自动标记。梯度()。如果需要再次向后浏览图形,或者如果需要在向后调用后访问保存的张量,请指定retain_graph=True。

三、根据错误提示,解决方案就是在反向传播的函数中设定“retain_graph=True”(默认为False),每次反向传播后暂时保留中间节点的梯度值,保存后重新运行项目代码。

Pytorch中one of the variables needed for gradient computation has been modified by an inplace operation错误一种解决方案

一、项目代码运行过程中完整的错误如下:

RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation: [torch.FloatTensor [512, 2]], which is output 0 of AsStridedBackward0, is at version 2; expected version 1 instead. Hint: enable anomaly detection to find the operation that failed to compute its gradient, with torch.autograd.set_detect_anomaly(True).

二、错误内容翻译成中文就是:

运行错误:梯度计算所需的变量之一已被一个就地操作修改:[torch.FloatTensor[512,2]],它是AsstridedBackard0的输出0,处于版本2;应该是版本1。提示:使用torch启用异常检测以查找未能计算其梯度的操作。签名。设置_检测_异常(真)。

三、解决问题心路历程:错误核心意思就是说在计算梯度的时候检查出某个Variable有被一个 inplace操作修改导致反向传播无法顺利进行。博主通过阅读大量资料和其他博主与此类似相关问题基本上是需要去寻找用户自己代码中进行inplace操作的地方进行修改,断绝inplace操作。但是博主通过一行一行排除寻找自己报错的代码发现自己代码中在Relu和view使用了inpalce操作,博主马上进行修改但是并没有解决问题。这时博主进行代码训练块部分顺序重构,将训练模型放进epoch循环里面发现能够顺利运行,此逻辑问题出在如果训练模型在epoch外,那么训练模型运行一次后的结果永远不会再变化,因为在epoch循环之外,即使已经反向传播更新了权重参数,但是无法起到重新训练作用。然后博主又测试将Relu和view还原使用了inpalce操作发现依旧正常运行,因此给出现此问题的码友们提供一个思路就是若修改了自己代码中的inplace操作的代码依旧报错,可以试一下代码部分顺序重构,发现可能存在的逻辑问题。


目录
打赏
0
0
0
0
14
分享
相关文章
英伟达新一代GPU架构(50系列显卡)PyTorch兼容性解决方案
本文记录了在RTX 5070 Ti上运行PyTorch时遇到的CUDA兼容性问题,分析其根源为预编译二进制文件不支持sm_120架构,并提出解决方案:使用PyTorch Nightly版本、更新CUDA工具包至12.8。通过清理环境并安装支持新架构的组件,成功解决兼容性问题。文章总结了深度学习环境中硬件与框架兼容性的关键策略,强调Nightly构建版本和环境一致性的重要性,为开发者提供参考。
413 7
英伟达新一代GPU架构(50系列显卡)PyTorch兼容性解决方案
SPDL:Meta AI 推出的开源高性能AI模型数据加载解决方案,兼容主流 AI 框架 PyTorch
SPDL是Meta AI推出的开源高性能AI模型数据加载解决方案,基于多线程技术和异步事件循环,提供高吞吐量、低资源占用的数据加载功能,支持分布式系统和主流AI框架PyTorch。
199 10
SPDL:Meta AI 推出的开源高性能AI模型数据加载解决方案,兼容主流 AI 框架 PyTorch
pytorch中非标量调用backward()的时候为什么要先进行sum操作
在《动手学深度学习》第二版教程中,当y为非标量的时候,调用backward()函数时,为什么先要求和呢(即y.sum().backward()),估计很多读者有点懵,今天小编给大家说说我的理解。
520 3
全套解决方案:基于pytorch、transformers的中文NLP训练框架,支持大模型训练和文本生成,快速上手,海量训练数据!
全套解决方案:基于pytorch、transformers的中文NLP训练框架,支持大模型训练和文本生成,快速上手,海量训练数据!
全套解决方案:基于pytorch、transformers的中文NLP训练框架,支持大模型训练和文本生成,快速上手,海量训练数据!
基于Pytorch运行中出现RuntimeError: Not compiled with CUDA support此类错误解决方案
基于Pytorch运行中出现RuntimeError: Not compiled with CUDA support此类错误解决方案
1731 0
基于Pytorch运行中出现RuntimeError: Not compiled with CUDA support此类错误解决方案
PyG (PyTorch Geometric) Dropbox系图数据集无法下载的解决方案(AMiner, DBLP, IMDB, LastFM)(持续更新ing...)
本文主要关注PyG官方提供的数据集中,因为数据下载源是Dropbox,所以不能直接下载的解决方案。

热门文章

最新文章

下一篇
oss创建bucket
目录
目录
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等