【问题标题】:Gradient Matrix (NxWxEPOCH) using Pytorch使用 Pytorch 的梯度矩阵 (NxWxEPOCH)
【发布时间】:2021-10-09 00:42:18
【问题描述】:

我正在尝试使用参数和 EPOCH 的每个观察值的梯度创建一个梯度矩阵。如果我的模型有 100 个 obs、1000 个参数和 10 个 Epoch,我的矩阵应该是 (100,1000,10)。

问题是我无法获得那些渐变。参数和观测值设置为 required_gradient=True。

我尝试在每次观察通过网络后运行它:

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

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

谢谢

【问题讨论】:

    标签: pytorch gradient


    【解决方案1】:

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

    相反,您可以在将渐变附加到 list 之前克隆渐变:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-25
      • 1970-01-01
      • 1970-01-01
      • 2016-07-21
      • 2018-05-16
      • 1970-01-01
      • 2016-03-02
      相关资源
      最近更新 更多