【问题标题】:Is there any option at Pytorch autograd function for these problem?Pytorch autograd 功能是否有任何选项可以解决这些问题?
【发布时间】:2021-11-20 20:59:33
【问题描述】:

抱歉标题含糊不清,因为我不知道如何提问。

我现在正在使用 pytorch 的 autograd 功能,但我正在为我不理解的结果而苦苦挣扎。

按照常识,loss计算的grad就是每个参数在loss最小的方向上应该走多远。因为仅仅因为比例发生变化而改变值是没有意义的。

这意味着 $$ grad(loss) = 5grad(loss \frac 1 5) $$

但我的实际结果没有;t。所以

formulation explanation

这是我的实际代码:)

from torch.autograd import grad
train_loss = loss(models(adaptation_data), adaptation_labels)
grads = grad(train_loss , models.parameters(),create_graph=True)
grads_02 = grad(train_loss*0.2 , models.parameters(),create_graph=True)
grads[-1] == grads_02[-1] * 5
#result : False

the whole code

也许我做错了什么,或者 grad 函数有一个选项,但谁能告诉我?请

【问题讨论】:

    标签: python pytorch gradient tensor autograd


    【解决方案1】:

    您的代码屏幕截图显示,由于浮点截断错误,两个张量不同。不要将它们与== 符号进行比较,而是使用isclose() 函数

    torch.isclose(grads[-1], grads_02[-1] * 5)
    

    【讨论】:

      猜你喜欢
      • 2021-08-10
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      • 2015-03-05
      • 2020-05-12
      • 2018-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多