【发布时间】:2021-11-20 20:59:33
【问题描述】:
抱歉标题含糊不清,因为我不知道如何提问。
我现在正在使用 pytorch 的 autograd 功能,但我正在为我不理解的结果而苦苦挣扎。
按照常识,loss计算的grad就是每个参数在loss最小的方向上应该走多远。因为仅仅因为比例发生变化而改变值是没有意义的。
这意味着 $$ grad(loss) = 5grad(loss \frac 1 5) $$
但我的实际结果没有;t。所以
这是我的实际代码:)
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
也许我做错了什么,或者 grad 函数有一个选项,但谁能告诉我?请
【问题讨论】:
标签: python pytorch gradient tensor autograd