线性回归
线性模型
衡量预估质量
训练数据
参数学习
显式解
基础优化算法
梯度下降
选择学习率:不能太大,也不能太小
小批量随机梯度下降
选择批量大小:不能太大,也不能太小
总结
线性回归的从零开始实现
1.生成人造数据集,真值![在这里插入图片描述](https://img-blog.csdnimg.cn/20210706165457675.png)
features是每一行都包含一个二维数据样本呢,labels是每一啊很难过一个标量
定义一个data_iter
定义初始化模型参数,定义模型
定义损失函数,定义优化算法
此处/batch_size是在损失函数没有做,所以放到梯度这一块来做
训练过程
简洁实现
1.生成数据集
2.读取数据集(Dataset,DataLoader)
next(iter(data_iter))#通过iter构造python迭代器,next取第一项
3.定义模型
这里nn.Sequential是一个容器,放不同的网络层(类似list
4.初始化模型参数
5.定义损失函数
6.定义优化函数
这里,trainer是一个优化器
7.训练
在每一个epoch都会遍历一次数据集,从一个epoch中取一个小批量进行如下三步:
- 通过调用net(X)生成预测并计算损失l(正向传播)
- 通过反向传播来计算梯度
- 通过调用优化器来更新模型参数
注意点
- torc不区分行向量和列向量
- dataset:把输入的两类数据进行一一对应,dataload:随机选取样本,重新排序
- loss是一个向量,做sum成为标量
- 损失求平均,是为了解耦,不论随机选取样本数多大,都可以很好的调节学习率
- detach():数据 传入numpy的话,从梯度的计算图上取出,
- yield相比return,1.要一个batch就去run一次,2.习惯问题
- 网络的输出nan问题,inf问题(之后解决