报错 RuntimeError: Trying to backward through the graph a second time, but the saved intermediate results have already been freed. Specify retain_graph=True when calling .backward() the first time.
去网上搜了一下,一般有三种情况:
- 训练模型中有多个损失函数导致的,所以按照报错提示的内容在前面的几个(除了最后一个)loss.backward() 的括号里加上retain_graph=True,就解决了。
- 计算图中有环,循环依赖,可以用 detach() 解决。
- 特定的网络会出现这种问题,比如GAN、RNN等,参考其他博客。
我的情况不属于上面三种。是在模型的 init 中定义了一个二维的 vector,并使用了 F.normalize(),错就错在这。把 F.normalize() 用在 forward() 里,而不是 init 里,就解决了。因为啥我也不知道,希望大神给我讲讲。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1755027593a5228488.html
评论列表(0条)