学习链接:
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可以解决,有跳连接


建议

pytorch学习-刘二大人第一遍相关推荐

  1. 【Pytorch深度学习实践】B站up刘二大人课程笔记——目录与索引(已完结)

    从有代码的课程开始讨论 [Pytorch深度学习实践]B站up刘二大人之LinearModel -代码理解与实现(1/9) [Pytorch深度学习实践]B站up刘二大人之 Gradient Desc ...

  2. 【卷积神经网络CNN 实战案例 GoogleNet 实现手写数字识别 源码详解 深度学习 Pytorch笔记 B站刘二大人 (9.5/10)】

    卷积神经网络CNN 实战案例 GoogleNet 实现手写数字识别 源码详解 深度学习 Pytorch笔记 B站刘二大人 (9.5/10) 在上一章已经完成了卷积神经网络的结构分析,并通过各个模块理解 ...

  3. 【Pytorch深度学习实践】B站up刘二大人之 Gradient Descend-代码理解与实现(2/9)

    开篇几句题外话: 以往的代码,都是随便看看就过去了,没有这样较真过,以至于看了很久的深度学习和Python,都没有能够形成编程能力: 这次算是废寝忘食的深入进去了,踏实地把每一个代码都理解透,包括其中 ...

  4. 【 数据集加载 DatasetDataLoader 模块实现与源码详解 深度学习 Pytorch笔记 B站刘二大人 (7/10)】

    数据集加载 Dataset&DataLoader 模块实现与源码详解 深度学习 Pytorch笔记 B站刘二大人 (7/10) 模块介绍 在本节中没有关于数学原理的相关介绍,使用的数据集和类型 ...

  5. 【从线性回归到 卷积神经网络CNN 循环神经网络RNN Pytorch 学习笔记 目录整合 源码解读 B站刘二大人 绪论(0/10)】

    深度学习 Pytorch 学习笔记 目录整合 数学推导与源码详解 B站刘二大人 目录传送门: 线性模型 Linear-Model 数学原理分析以及源码详解 深度学习 Pytorch笔记 B站刘二大人( ...

  6. B站刘二大人-数据集及数据加载 Lecture 8

    系列文章: <PyTorch深度学习实践>完结合集-B站刘二大人 Pytorch代码注意的细节,容易敲错的地方 B站刘二大人-线性回归及梯度下降 Lecture3 B站刘二大人-反向传播L ...

  7. 【多输入模型 Multiple-Dimension 数学原理分析以及源码详解 深度学习 Pytorch笔记 B站刘二大人 (6/10)】

    多输入模型 Multiple-Dimension 数学原理分析以及源码源码详解 深度学习 Pytorch笔记 B站刘二大人(6/10) 数学推导 在之前实现的模型普遍都是单输入单输出模型,显然,在现实 ...

  8. 《PyTorch深度学习实践》完结合集--B站刘二大人学习总结

    本篇主要是各类模型的基本介绍及应用,不涉及深层技术. 学习视频指路→B站指路 代码实践指路→代码指路 课件获取:通过百度网盘分享的文件:PyTorch深- 链接:https://pan.baidu.c ...

  9. 【刘二大人 - PyTorch深度学习实践】学习随手记(一)

    目录 1. Overview 1.Human Intelligence 2.Machine Learning 3.How to develop learning system? 4.Tradition ...

最新文章

  1. UI培训分享:如何提升自己的UI设计能力
  2. 《计算机组成原理》----1.5 存储程序的概念
  3. 键盘各个键对应的ASCLL值
  4. tomcat java环境变量配置
  5. 开发springboot项目,遇到的一些问题总结
  6. CSRF攻击原理与防御方法
  7. 9.1 LSMW程序创建操作手册 第1 2步
  8. 大型企业网络设备管理
  9. 一个函数返回参数二进制中1的个数
  10. unity摄影机depth模式_[蛮牛教程] Unity3D 浅析-Camera(摄像机)
  11. BadBoy下载安装
  12. nuxt 低版本浏览器不兼容处理
  13. 穷人和富人的距离0.05厘米
  14. 典故:一文钱难倒英雄汉
  15. Web端网页QQ临时会话在线咨询
  16. AFX_EXT_CLASS的使用
  17. Win10重装后无法激活问题解决办法
  18. 移动文件需要计算机管理员权限,win7系统提示“需要管理员权限才能移动文件夹”的解决方法...
  19. 用Python绘制数学函数图像
  20. 易语言取计算机的ip,易语言怎样取IP物理地址

热门文章

  1. 为什么发电机要用D45XT100-ASEMI三相整流桥
  2. 终端字体放大缩小快捷键
  3. ROS下Python读取ft_300传感器数据
  4. 【小程序源码】检讨书生成微信小程序工具源码-安装搭建简单
  5. Can Spatiotemporal 3D CNNs Retrace the History of 2D CNNs and ImageNet?
  6. C语言中头文件和源文件的注意事项
  7. 画论57 沈宗骞《芥舟学画编》
  8. WPS文字如何将纸张大小由A4调整为A3默认纸张大小是A4
  9. 一招搞定拼车顺风车小程序过审问题,还适用职介招聘小程序、房产中介小程序 以及相亲交友等
  10. 为反击中国面板企业,三星研发双层堆叠OLED面板