PyTorch(线性回归)

给你一堆数据点,这里用下面的图来表示:

                                                    PyTorch(线性回归)

假设用一条直线去拟合:y=kx+b;

1.问题转化成选择什么样子的k,b来拟合,怎么选择。

             对于我们怎么来选择,是利用这个损失函数来表示的,损失函数中又有很多类型,这里就简单的用MSE(均方误差来表示)。

2. 问题转化成loss最小。

             不断调节参数,最终使得loss最小的过程,称为优化。现在我们就要优化。

3. 问题转化成怎么优化使得loss最小。

             不断调节参数,最终使得下面的图达到做低点。(图是关于loss,w,b的三维函数)

                               PyTorch(线性回归)

 最终选择采用 梯度下降的优化算法     对于上图中任意选取一个点A/B都可以最终达到谷底。

梯度下降有2个重要的参数 ,一个角度关于w的梯度、一个叫做学习率(个人理解一个代表、方向一个代表步长)。

 

4.实战

这里主要是把代码中需要注意的地方,先拿出来。

4.1 画图(torch 中 tensor 变量不能直接画图,要进行类型转换

                            PyTorch(线性回归)

4.2 得到矩阵X(y=X*w)-------将数据表示成为矩阵的形式,方便运算。(pytorch 的矩阵看起来好不爽)

                         PyTorch(线性回归)

                         PyTorch(线性回归)

                       PyTorch(线性回归) 

4.3 对w叶子节点,进行自动微分并在后面用梯度下降自动更新。

                         PyTorch(线性回归)

4.4 loss进行反向传播 并用w,grad进行梯度下降(用完要情况grad)

PyTorch(线性回归) 

4.5结果

 PyTorch(线性回归)