今天写代码的时候出现了这样的报错:
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.
大概的意思就是,反向传播的时候计算图被释放了,不能backward,但是我的代码中只有一个backward啊,后来查找了一些资料,对于pytorch计算图有了新的认识
这里有几篇好的博文可以供大家参考一下:
https://blog.csdn.net/weixin_44618906/article/details/107435076
https://blog.csdn.net/rothschild666/article/details/124170794
https://blog.csdn.net/xiecheng1995/article/details/118296092

总结一下:一个变量加入到计算图之后,他就会一直存在与计算图中,我们使用的backward()会将梯度适释放掉,但是计算图的连接仍旧会保存,这个时候由于某个值在每个batch或者epoch都出现的时候,在第二个batch或者第二个epoch就会出现这个错误
(自己根据自己的错误总结的,不是很确定对不对,如果有不对的希望大家能够指出,互相学习)
然后说一下我的问题,我是在写SNN(脉冲网络)的时候遇到这个问题的,后来经过网上的学习,觉得可以是初始的阈值电压由于没有被重置,导致了链式求导,所以查找资料使用LIFNode类中的.reset()方法

def reset_net(net: nn.Module):""":param net: 任何属于 ``nn.Module`` 子类的网络:return: None将网络的状态重置。做法是遍历网络中的所有 ``Module``,若含有 ``reset()`` 函数,则调用。reset()函数即是LIFNode类中的方法"""for m in net.modules():if hasattr(m, 'reset'):m.reset()

在参数更新后重置模型的初始阈值电压

loss.backward()
optimizer.step()
reset_net(model)

报错解决方案- backward相关推荐

  1. TFS 报错解决方案:tf400324

    TFS 报错解决方案:tf400324 参考文章: (1)TFS 报错解决方案:tf400324 (2)https://www.cnblogs.com/xiaz/p/7443805.html 备忘一下 ...

  2. vue-cli打包构建时常见的报错解决方案

    vue-cli打包构建时常见的报错解决方案 参考文章: (1)vue-cli打包构建时常见的报错解决方案 (2)https://www.cnblogs.com/bester-ace/articles/ ...

  3. kali linux 安装 Mysql Can‘t read from messagefile 报错解决方案

    kali linux 安装 Mysql Can't read from messagefile 报错解决方案 参考文章: (1)kali linux 安装 Mysql Can't read from ...

  4. CentOS 6安装Oracle报错解决方案

    CentOS 6安装Oracle报错解决方案 参考文章: (1)CentOS 6安装Oracle报错解决方案 (2)https://www.cnblogs.com/lonecloud/p/689568 ...

  5. IDEA配置maven报错解决方案

    IDEA配置maven报错解决方案 参考文章: (1)IDEA配置maven报错解决方案 (2)https://www.cnblogs.com/7758521gorden/p/8778496.html ...

  6. yum安装出现Error: Package: glibc-headers-2.17-157.el7.x86_64 (centos7.3)类似报错解决方案

    yum安装出现Error: Package: glibc-headers-2.17-157.el7.x86_64 (centos7.3)类似报错解决方案 参考文章: (1)yum安装出现Error: ...

  7. 项目pom.xml第一行报错解决方案

    项目pom.xml第一行报错解决方案 参考文章: (1)项目pom.xml第一行报错解决方案 (2)https://www.cnblogs.com/wantfly/p/9307476.html 备忘一 ...

  8. Eclipse中创建SpringBoot项目流程,及报错解决方案

    Eclipse中创建SpringBoot项目流程,及报错解决方案 参考文章: (1)Eclipse中创建SpringBoot项目流程,及报错解决方案 (2)https://www.cnblogs.co ...

  9. “TypeError: list indices must be integers or slices, not str”有关报错解决方案

    "TypeError: list indices must be integers or slices, not str"有关报错解决方案 参考文章: (1)"TypeE ...

最新文章

  1. R语言ggplot2可视化使用ggsave将可视化图像结果保存为SVG文件实战
  2. ​阿里达摩院金榕:从技术到科学,中国 AI 将何去何从?
  3. 光伏组件清洗的7大注意事项
  4. css+隐藏+左侧菜单栏,放在网页左侧的DIV+CSS隐藏菜单代码
  5. windows无法安装到这个磁盘。选中的磁盘采用GPT分区形式
  6. 海盗云商插件_推销自己的海盗猫王运营商
  7. virtualbox 使用
  8. Linux调优(文件系统)
  9. MYSQL-交换表中2行2字段的值
  10. es6 Promise.race()方法
  11. 【ASK】设置网卡启动遇到的事!
  12. linq与数据库之添加
  13. python时间序列预测不连续怎么办_手把手教你用Python处理非平稳时间序列(附代码)...
  14. YOLOv5训练自己的数据集(超详细完整版)
  15. 文本挖掘带你分析 “苏轼” 的一生!(附视频)
  16. 【Adobe Illustrator 教程】4. 认识渐变工具
  17. python 爬虫 | selenium换页问题
  18. 高斯函数的傅里叶变换
  19. darts.h注释 - 滴水穿石 - 歪酷博客 Ycool Blog
  20. 随手练——字符串按最小(大)字典序拼接

热门文章

  1. Python,写校歌
  2. 百度超级链捐赠开放原子开源基金会一周年,XuperChain成果一览
  3. HTML Flex布局教程
  4. 【平头哥蓝牙Mesh网关开发套件试用体验】测试网关+PHY6220蓝牙mess 智能灯
  5. ADAS-开源环视360全景拼接代码原理分析与实现(一)
  6. 10.9 安卓WallpaperManager(壁纸管理器)
  7. 大数据架构-使用HBase和Solr配置存储与索引
  8. python中import matplotlib.pyplot as plt解决办法
  9. 第05期:Prometheus 数据查询(一)
  10. linux系统的笔记本,Linux:开源的免费操作系统_笔记本电脑_笔记本评测-中关村在线...