使用 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())
我正在尝试通过参数和 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())