我想实现以下算法,取自本书第13.6节:我不明白如何在pytorch中实现更新规则(w的规则与theta的规则非常相似)。
作为……
我试试看。
.backward() 不需要丢失函数,它只需要一个可微分的标量输出。它近似于模型参数的梯度。让我们看一下值函数更新的第一种情况。
.backward()
我们有一个渐变出现在v,我们可以近似这个渐变
v = model(s) v.backward()
这给了我们一个渐变 v 它具有模型参数的尺寸。假设我们已经计算了其他参数更新,我们可以计算实际的优化器更新:
v
for i, p in enumerate(model.parameters()): z_theta[i][:] = gamma * lamda * z_theta[i] + l * p.grad p.grad[:] = alpha * delta * z_theta[i]
然后我们可以使用 opt.step() 使用调整后的渐变更新模型参数。
opt.step()