python - 为什么不使用 retain_graph=True 会导致错误?
问题描述
如果我需要通过神经网络反向传播两次并且我不使用retain_graph=True,我会得到一个错误。
为什么?我意识到保留用于第一次反向传播的中间变量以用于第二次反向传播是很好的。但是,为什么不简单地重新计算它们,就像它们最初是在第一次反向传播中计算的那样?
解决方案
默认情况下,PyTorch 不存储中间梯度,因为 PyTorch 的主要功能是动态计算图,因此在反向传播之后,图将被释放,所有中间缓冲区都将被销毁。
推荐阅读
- java - JTable 从 DataModel 更改单元格背景颜色
- swift - 无法使用包含二进制目标 (xcframework) 的 Swift 包归档项目
- android - 如何使用 Picasso 将 imageView 中包含的图像保存到内部存储
- python - 登录屏幕在页面上不显示任何内容
- python - 使用 scipy 对截止频率进行建模
- java - 单击按钮时依次显示每个数组列表元素
- csv - 比较两个不同长度的 CSV 文件
- mongodb - 如何使用pymongo获取数组所有对象中特定元素的总和
- mongodb - Spring Web、Kotlin、Gradle、IntelliJ -> MongoRepository “未解决的参考:保存”问题
- azure-devops - 要求通过 Azure Pipeline 更新 Azure Function