pytorch中对形如a[0].data进行赋值时的一个坑点
假设我们定义了
import torch
a=torch(10,3)
c=torch(1,3)
现在想要对a[0]赋值成c,那么当然a[0]=c就可以完成这种操作。
但有时因为要隔绝梯度的原因(或者单纯就是脑抽了),可能我们会写成a[0].data=c,但这样做的话,你会发现a[0]完全没有变化,而如果你单独输出a[0].data却会看到它是等于c的。相反,如果你使用a.data[0]=c,那么a[0]会变成c,所以看上去这种方法更好一些。
为什么pytorch有这种奇怪的表现我也不是很懂,可能和python与pytorch的内存机制、计算图机制有一定关系吧,反正我被这个坑到了(