您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Pytorch-RuntimeError:尝试第二次向后浏览图形,但缓冲区已被释放

Pytorch-RuntimeError:尝试第二次向后浏览图形,但缓冲区已被释放

问题出在我的训练循环中:它不会在批次之间分离或重新包装隐藏状态?如果是这样,则loss.backward()尝试一直反向传播直到时间开始,该时间适用于第一批而不适用于第二批,因为第一批的图形已被丢弃。

有两种可能的解决方案。

1)在批次之间分离/重新包装隐藏状态。至少有三种方法可以做到这一点(我选择了这种解决方案):

 hidden.detach_()
 hidden = hidden.detach()

2)将loss.backward()替换为,loss.backward(retain_graph=True)但知道每个连续的批处理都将比前一个批处理花费更多的时间,因为它将必须一直反向传播直到第一个批处理的开始。

其他 2022/1/1 18:39:35 有204人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶