学习机制与PyTorch自动求导的深入解析
1. 梯度函数的定义
在学习过程中,我们需要定义关于损失函数对参数 $w$ 和 $b$ 的梯度函数。以下是相关代码:
def dmodel_dw(t_u, w, b):
return t_u
def dmodel_db(t_u, w, b):
return 1.0
def grad_fn(t_u, t_c, t_p, w, b):
dloss_dtp = dloss_fn(t_p, t_c)
dloss_dw = dloss_dtp * dmodel_dw(t_u, w, b)
dloss_db = dloss_dtp * dmodel_db(t_u, w, b)
return torch.stack([dloss_dw.sum(), dloss_db.sum()])
这里的 grad_fn 函数将所有计算组合在一起,通过链式法则计算损失函数对 $w$ 和 $b$ 的梯度。我们对所有数据点进行平均(即求和并除以一个常数),以得到损失函数每个偏导数的单个标量值。
2. 迭代拟合模型
现在我们已经有了优化参数所需的一切。从参数的初始值开始,我们可以迭代更新参数,直到达到固定的迭代次数,或者 $w$ 和 $b$ 不再变化。这里我们使用固定的迭代次数作为停止条件。
我们引入一个术语“epoch”,它表示一次训练迭代,在这个迭代中我们更新所有训练样本的参数。以下是完整的训练循环代码:
超级会员免费看
订阅专栏 解锁全文
942

被折叠的 条评论
为什么被折叠?



