李沐-线性回归+基础优化算法

线性回归

线性模型
在这里插入图片描述
衡量预估质量
在这里插入图片描述
训练数据
在这里插入图片描述
参数学习
在这里插入图片描述
在这里插入图片描述
显式解
在这里插入图片描述
在这里插入图片描述

基础优化算法

梯度下降
在这里插入图片描述
在这里插入图片描述
选择学习率:不能太大,也不能太小
小批量随机梯度下降
在这里插入图片描述
选择批量大小:不能太大,也不能太小
总结
在这里插入图片描述

线性回归的从零开始实现

1.生成人造数据集,真值在这里插入图片描述

y=Xw+b+
在这里插入图片描述
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问题(之后解决
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值