pytorch学习-刘二大人第一遍

本文介绍了线性模型的训练过程,包括训练集和测试集的划分,过拟合的概念,以及权重初始化和损失函数。接着讨论了不同的梯度下降算法,如全体梯度、随机梯度和Mini-Batch梯度下降。重点讲解了反向传播算法在PyTorch中的实现,包括构建计算图、求梯度和更新权重的过程。此外,还提到了多分类问题,特别是手写体识别中的softmax层应用,以及卷积神经网络的基础知识,包括卷积、池化和全连接层的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习链接:
https://www.bilibili.com/video/BV1Y7411d7Ys/?spm_id_from=333.999.0.0

一、线性模型

1.数据集分为 训练集和测试集
2.过拟合:训练的时候非常好,测试的时候差强人意
泛化能力好:对没有训练过的照片也能很好的识别
3.权重w先随机设定
loss指的是每一个数据的误差
目标是使整个训练集成本cost最小
4.线性模型
在这里插入图片描述
在这里插入图片描述
w使用穷举法,绘图w与cost关系图
在这里插入图片描述
5.np.meshgrid()绘制3D图

二、梯度下降算法

(一) 全体的梯度下降算法
1.首先要根据数据集,选取最合适的模型
2.穷举法不可取,维度爆炸
3.更新w的方法
在这里插入图片描述
4.cost函数是非凸函数,则很难找到全局最优
在这里插入图片描述
5.整体梯度下降算法
在这里插入图片描述

(二)随机梯度下降算法
1.若使用全体数据进行梯度下降算法,
在这里插入图片描述
2.随机梯度算法,求梯度是对 每一个样本对 的loss(x,y)求 梯度gradient(x,y)
在这里插入图片描述
3.随机梯度算法 时间复杂度太高了

(三) Mini-Batch 梯度下降算法

三.Back Propagation 反向传播算法
1.简单的线性模型
在这里插入图片描述
2.但对于复杂的网络,权重特别多,几乎无法计算
在这里插入图片描述
3.需了解 矩阵求导数 的公式
线性模型,不管多少层神经网络,其实没有影响
在这里插入图片描述
4.对于非线性模型,需要在输出后加上激活函数,比如sigmoid等,即是H1=sigmoid(WX+b),H1指的是第一层隐藏层
在这里插入图片描述
5.前向传播 后向传播
前向传播求y_hat,loss与后向传播求梯度
在这里插入图片描述

在这里插入图片描述
6.pytorch语言使用tensor来保存data以及grad
pytorch关于tensor的代码是在构建计算图
(1)数据集以及设置w初始值,将w设为需要计算梯度
在这里插入图片描述
(2)前向传播计算y_hat,x是标量,w是tensor,相乘后wx即y_hat自动转化为tensor,即y_hat也需要计算梯度;

在这里插入图片描述
(3)对每一对样本进行loss计算,后向传播求梯度l.backward()**指的是l对w求梯度,在此之后该计算图被释放,相当于清空计算图;
只要是关于tensor张量的量,就会生成计算图;
取得梯度.grad;
如果只需要更新数值,则需要加.data;
更新完数值后需要w.grad.data.zero()
,将w梯度数据清零**
在这里插入图片描述

三.pytorch构建梯度下降模型具体思路及代码

**

步骤:前馈 损失值 反馈 清零 更新

**
1.初始化w,注意一定要创建张量tensor类型的w
定义损失函数loss即构建了计算图
在这里插入图片描述
2.使用l.backward()反向计算w的梯度;注意w.grad也是梯度
**更新w,使用w.data以及w.grad.data来构建,**不可有任何张量在公式中
更新完毕,将梯度值清零,否则每次反向传播,都会将梯度与之前的梯度累加
在这里插入图片描述

四、(重点)pytorch建立线性模型

步骤:前馈 求损失值 梯度清0 反馈(求得模型中参数梯度) 更新(更新参数值)

1.随机梯度下降算法核心是求解loss对w的梯度,进而更新w
2.(1)构造数据集 (2)构建模型 (3)计算loss和建立优化器 (4)迭代周期
3.
(1)数据集
(2)构造模型
自己的模型定义为一个class,必须继承torch.nn.Module
自己的模型必须实现两个函数:init()以及forward()
创建一个线性单元对象linear= torch.nn.Linear(输入的特征数量,输出的特征数量)
linear(x)是一个可调用的对象,__call__函数。
在这里插入图片描述

在这里插入图片描述
3.构造损失函数和优化器(训练器)
在这里插入图片描述
4.迭代周期
在这里插入图片描述
在这里插入图片描述

四、pytorch建立logistic回归模型

1.logistic函数,将实数映射到0-1
在这里插入图片描述
2.与线性回归区别
在这里插入图片描述
在这里插入图片描述

全部代码以及深度学习pytorch代码流程

在这里插入图片描述

五、处理多维特征的输入(分类)----重点

向量化运算有效提高cpu并行运行速度
神经网络层数太多,说明它学习能力非常强,但泛化不一定好,过拟合了,把噪音也学习了

1.糖尿病数据集,8维即8个特征即8列
在这里插入图片描述

2.模型代码改变
8列的x,1列的y
在这里插入图片描述
3.非线性降维 8维 降为6维 降为2维
在这里插入图片描述

如若建立下列模型,写代码

在这里插入图片描述

一、导入数据集
numpy转torch函数:torch.from_numpy()
[-1]与-1的去区别
在这里插入图片描述
二、建立模型
在这里插入图片描述
三、损失值、优化器
在这里插入图片描述
四、周期、前馈、清零、反馈、更新
在这里插入图片描述

六、pytorch中数据集 Dataset和Dataloader类

随机梯度下降算法是对每一个样本进行训练,优点是模型会更优,极大概率忽略鞍点的影响,缺点是没有利用gpu、cpu并行能力
minibatch即是综合梯度下降算法和随机梯度下降算法
1.epoch batchsize 和 iterations区别
假如样本数为10000,batch-size为1000,则iterations为10
epoch是所有的样本都要跑epoch次,放在最外面
2.Dataset 是一个抽象类,不可实例化【下标、长度】
__init__函数 里面需要有所有的x,y
__getitem__函数 需要return(x,y)
__len__函数需要return len
在这里插入图片描述

3.Dataloader 可以实例化
在这里插入图片描述

七、多分类问题——重点

1.手写字体识别,有10个类别,如何创建模型?
要求输出的时候是个分布,10个加起来得为1
在这里插入图片描述
把sigmoid换为softmax层后,输出的总和为1,并且输出结果都大于0
在这里插入图片描述
在这里插入图片描述
2.代码 多分类最后一层不需要加激活函数,激活函数包括在交叉熵函数里
在这里插入图片描述在这里插入图片描述

利用softmax训练手写字

代码
在这里插入图片描述

x.view(-1,784)将图像转化为向量
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

八、卷积神经网络

1.全连接神经网络定义:多个线性层串联起来
在这里插入图片描述
2.对于图像分类来说,如果运用全连接层训练,则会丧失空间的特性
卷积+下采样 称为特征提取器
下采样是池化层
全连接层称为 分类器
下采样:减少数据量,降低后续运算
图像whc必须转为cwh
在这里插入图片描述
3.卷积操作
(1)单通道 看中心点位置
在这里插入图片描述
(2)多通道卷积
1)355图像 对应333卷积核 至 卷积结果133
在这里插入图片描述
2)卷积结果通道数不为1,则需要多个卷积核
在这里插入图片描述
(3)代码
卷积需要的参数 输入通道、输出通道、卷积核大小
padding可以使得卷积后图像大小与输入一样,即在最外层添加0
stride是步长,有效降低图像宽度高度
在这里插入图片描述
在这里插入图片描述

简单的神经网络

filter5*5,则原图像减(5//2)*2=4圈
在这里插入图片描述
2.代码
卷积 池化 全连接
在这里插入图片描述
加载至gpu
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

复杂卷积神经网络1

1.简单串行网络结构
在这里插入图片描述
2.稍微复杂一点的googlenet,这时候需要减少代码冗余,通过类
在这里插入图片描述
3.11卷积核
在这里插入图片描述
**1
1的卷积核可以改变(减小 )通道数,使得运算量大大减小**
在这里插入图片描述
4.
在这里插入图片描述
在这里插入图片描述

复杂卷积神经网络2——Residual Net

1.梯度消失——residualNet可以解决,有跳连接
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

建议

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值