PyTorch(线性回归)
给你一堆数据点,这里用下面的图来表示:
假设用一条直线去拟合:y=kx+b;
1.问题转化成选择什么样子的k,b来拟合,怎么选择。
对于我们怎么来选择,是利用这个损失函数来表示的,损失函数中又有很多类型,这里就简单的用MSE(均方误差来表示)。
2. 问题转化成loss最小。
不断调节参数,最终使得loss最小的过程,称为优化。现在我们就要优化。
3. 问题转化成怎么优化使得loss最小。
不断调节参数,最终使得下面的图达到做低点。(图是关于loss,w,b的三维函数)
最终选择采用 梯度下降的优化算法 对于上图中任意选取一个点A/B都可以最终达到谷底。
梯度下降有2个重要的参数 ,一个角度关于w的梯度、一个叫做学习率(个人理解一个代表、方向一个代表步长)。
4.实战
这里主要是把代码中需要注意的地方,先拿出来。
4.1 画图(torch 中 tensor 变量不能直接画图,要进行类型转换)
4.2 得到矩阵X(y=X*w)-------将数据表示成为矩阵的形式,方便运算。(pytorch 的矩阵看起来好不爽)
4.3 对w叶子节点,进行自动微分并在后面用梯度下降自动更新。
4.4 loss进行反向传播 并用w,grad进行梯度下降(用完要情况grad)
4.5结果