使用 Pytorch 的梯度矩阵 (NxWxEPOCH)

Gradient Matrix (NxWxEPOCH) using Pytorch

我正在尝试通过参数和 EPOCH 创建一个梯度矩阵,其中包含每个观测值的梯度。如果我的模型有 100 个 obs、1000 个参数和 10 个 Epoch,我的矩阵应该是 (100,1000,10).

问题是我无法获得这些渐变。参数和观察设置为 required_gradient=True.

每次观察通过网络后,我都尝试运行这个:

 for p in net.parameters():
     paramgradlist.append(p.grad)

但是每个参数的梯度保持不变,所有观察值都保持不变。

谢谢

您没有复制数据,而是存储对渐变的引用。最后,这意味着您的所有观察结果都将相同(梯度的最终值)。

相反,您可以先克隆渐变,然后再将它们添加到 列表:

for p in net.parameters():
    paramgradlist.append(p.grad.clone())