Pytorch学习笔记(二)torch.optim(优化)+线性模型实例
2024-03-12 13:22 作者:佚名
1.torch.optim
在机器学习或者深度学习中,我们需要通过修改参数使得损失的数最小化(或最大化),优化算法就是一种调整模型参数更新的策略。
1.1一阶优化算法
使用参数的梯度值来更新参数,最常用的是梯度下降。梯度是导数的多变量表达式,函数的梯度形成了向量场,同时也是一个方向,这个方向导数最大,等于梯度。
梯度下降的功能是寻找最小值,控制方差,更新模型参数最终使模型收敛,网络的参数更新公式是:
1.2.二阶优化算法
二阶优化算法使用了二阶导数(Hessian)最小化或最大化损失函数。计算成本高
我们可以直接调用Pytorch自带的实现优化算法的包,大多数常见的算法都可以调用包来实现,比如随机梯度下降,添加动量的随机梯度下降,自适应学习率等。
在调用的时候将需要优化的参数传入,这些参数都必须是variable,然后传入一些基本的设定,比如学习率和动量。
例子:
2.线性模型实例
从最简单的线性模型入手,给多个数据点,找到一个函数来拟合这些数据点使其误差最小
一维线性回归代码实现:
概述下整体流程:
①建立模型
②建立数据集
③由于矩阵是numpy,要转化成tensor
④如果有GPU,可以放入GPU跑,分别放入模型,输入,目标。
⑤定义损失函数和优化器
⑥训练模型:
1)前向传播
(给模型输入参数)
(求损失函数)
2)反向传播
(梯度归零)
(loss.backward)
(更新参数)
(每隔几段时间就打印损失函数看看)
⑦验证看看效果