目录
2.1 Linear Regression in 1D prediction
2.pytorch中:Linear类,如何通过nn.module自定义层
2.2 Linear Regression Training
2.1 Linear Regression in 1D prediction
1.linear regression
2.pytorch中:Linear类,如何通过nn.module自定义层
!!Pytorch中同时处理多个输入,认为每一行是一个样本
- Linear Regression
线性回归:拟合特征和值之间的线性关系
在pytorch中可以一次输入多个样本,只要其中每一行表示一个样本就行
2 Linear Class
图2.1-1 Linear模块
其中,in_features是每个输入样本的维度(输入的列数),out_features是输出的维度。
用model.parameters()方法查看模型中的参数,注意在前向传播的时候不需要显式调用forward函数,只需要用括号代理就会自动调用forward。
3 自定义Modules
表2.1-1 创建自定义modules |
|
可以使用 [model].state_dict()[‘key’].data[idx] 来修改模型中的参数(图2.1-2)
图2.1-2 用state_dict()方法修改模型参数
[model].state_dict()返回一个python字典,可以用keys()获得其键,用values()获得值(图2.1-3)
图2.1-3 用state_dict()方法的keys()和values()方法
2.2 Linear Regression Training
1.训练Training
2.损失Loss
1.训练Training
对于Linear Regression,对于噪声的假设是Gassian分布的(图2.2-1),当Gassian分布的标准差越大,数据分布越分散,样本的偏离程度就越大。
图2.2-1 左图中的横轴表示偏移直线的量,纵轴表示添加该噪声的概率
Linear Regression训练的过程就是找拟合数据点的最好的直线参数的过程,通过最小化均方误差和(MSE)来实现:(图2.2-2)
图2.2-2 MSE公式
- 损失Loss
Loss就是一个关于参数的函数,其值取决于参数的取值,提供了评判当前参数值好坏的标准。
1.Gradient Descent
梯度下降是找函数最小值的方法。
①梯度下降是什么
②学习率learning rate选择的问题
③何时停止梯度下降
④Cost
1.梯度下降是什么
图2.3-1 梯度下降
为了找寻最小值,需要将参数向梯度导数的负数方向移动一小段距离。
2.学习率learning rate选择的问题
学习率太大会跳过最小值,学习率太小导致训练次数增加。
3.何时停止梯度下降
设置迭代次数;看loss是否停止下降
4.Cost
一个batch上损失函数(loss)的总和或者平均叫代价函数(cost)。
2.Pytorch Slope
一个epoch是在整个数据集上迭代一次的过程,因此GD算法一次迭代就是一个epoch。而SGD则是多次迭代一个epoch。
图2.4-1 手动更新参数值
1.Pytorch Linear Regression Training Slope and Bias
图2.5-1 损失函数/w,b曲面—等高线图
图2.5-2 梯度方向垂直于等高线,指向最小值方向p
注:本文所有截图来自Coursera同名课程,感谢Coursera提供的学习资源~