收藏 (0)  打赏  点赞 (0)

迷你哀 3个月前


您好,按照您的结论:中继节点可以多次反传,可以提前反传,每传一次梯度累积一次; 根节点默认只能传播一次,梯度累积。
但是在“分步求梯度,梯度累积”代码中,根节点为l,中间节点为在z,d,e,叶节点为x,y。

那为什么中间节点z,d,e反传后,根节点l却无法反传呢?

事实上我试了一下各种情况,结果显示e和l是共享计算图的,只要其中有一个运行了backward(),又没有指明retain_graph=True的话,另外一个再运行.backward()就会报错:RuntimeError: Trying to backward through the graph a second time, but the buffers have already been freed. Specify retain_graph=True when calling backward the first time.

所以是不是e应该为根节点,或者这个结论本身就是不对的呢

(0) 回复

江户川柯兰 回复 迷你哀 2个月前

好久了,我 我 我忘了

(0) 回复

powerd by studyai.com 2017