PyTorch基础入门

目录

  • 前言
  • 一、[张量的广播&基本运算](https://www.bilibili.com/video/BV1Gg411u7Lr/?spm_id_from=333.999.0.0)
    • 1. 张量的广播特性
    • 2. 逐点&规约&比较运算
  • 二、张量的线性代数运算
    • 1. BLAS & LAPACK
    • 2. 矩阵形变及特殊矩阵构造
    • 3. 矩阵基本运算
    • 4. 矩阵的线性代数运算
    • 5. 矩阵的分解(eig/svd)
  • 三、基本优化思想与最小二乘法
    • 1. 简单线性回归的机器学习建模思路
    • 2. 机器学习建模一般流程
    • 3. 第一个优化算法:最小二乘法
    • 4. 反向验证导数为0——autograd求导
  • 四、动态计算图与梯度下降入门
    • 1. AutoGrad的回溯机制与动态计算图
    • 2. 反向传播与梯度计算
      • 2.1. 阻止计算图追踪
      • 2.2. 识别叶节点(输入节点)
    • 3. 梯度下降基本思想
    • 4. 梯度下降的数学表示
  • 总结


前言

有点Matlab基础,从这里开始刚好
补充点Python中的Numpy/Pandas等基础知识


一、张量的广播&基本运算

在这里插入图片描述

1. 张量的广播特性

  • 相同形状的张量计算
    根据官网说法,“same shapes are always broadcastable”,相同形状数组总是可以进行广播计算。这里简单强调一下,虽然我们往往觉得不同形状之间的张量计算才是应用到广播特性,但其实相同形状的张量计算(一个三维,三个一维),尽管是对应位置元素进行计算,但本质上也是应用到了广播特性。
  • 不同形状张量只要 不同的维度为1即可广播
    在这里插入图片描述在这里插入图片描述
  • 利用reshape修改张量形状:在这里插入图片描述

2. 逐点&规约&比较运算

在这里插入图片描述在这里插入图片描述
这些调整函数不会对原对象进行调整,如果要对原对象进行修改可以加一个下划线方法_()
在这里插入图片描述

  • 科学运算的静态性(只能是张量参与运算,且要为浮点型的)
    在这里插入图片描述
  • 规约运算(通常后面加一个参数表示计算的维度,默认0按行算)
    在这里插入图片描述
    在这里插入图片描述
  • 比较运算在这里插入图片描述在这里插入图片描述

二、张量的线性代数运算

1. BLAS & LAPACK

在这里插入图片描述

2. 矩阵形变及特殊矩阵构造

在这里插入图片描述

  • 对角矩阵dig
    在这里插入图片描述
  • 下三角矩阵triu
    在这里插入图片描述
  • 下三角矩阵
    在这里插入图片描述

3. 矩阵基本运算

在这里插入图片描述

  • 点积dot/vdot(复数运算时有差别)在这里插入图片描述
  • 矩阵乘法mm在这里插入图片描述在这里插入图片描述
  • 矩阵和向量相乘mv 在这里插入图片描述在这里插入图片描述
  • 批量矩阵相乘bmm在这里插入图片描述在这里插入图片描述
  • 矩阵相乘后相加addmm在这里插入图片描述在这里插入图片描述
  • 批量矩阵相乘后相加addbmm在这里插入图片描述

4. 矩阵的线性代数运算

在这里插入图片描述

  • 矩阵的迹trace在这里插入图片描述
  • 矩阵的秩matrix_rank在这里插入图片描述在这里插入图片描述
  • 行列式det在这里插入图片描述在这里插入图片描述
  • 矩阵表示线性方程组在这里插入图片描述
  • 逆矩阵inverse(计算y=x+1)在这里插入图片描述

5. 矩阵的分解(eig/svd)

在这里插入图片描述

  • 特征分解eig在这里插入图片描述在这里插入图片描述在这里插入图片描述
  • 奇异值分解svd
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

三、基本优化思想与最小二乘法

在正式开始进行神经网络建模之前,我们还需要掌握一些基本数学工具,在PyTorch中,最核心的基础数学工具就是梯度计算工具,也就是PyTorch的AutoGrad(自动微分)模块。虽然对于任何一个通用的深度学习框架,都会提供许多自动优化的算法和现成的loss function,PyTorch也不例外,但如果希望能够更深入的理解神经网络、希望对深度学习的建模不仅仅停留在调包和调参的层次,那我们就必须深入一些数学领域、掌握一些数学工具,从底层提升自己的数学能力,以期能够在日后的使用深度学习算法的过程中能够更加灵活的解决问题、取得更好的建模效果。而AutoGrad模块,就是PvTorch提供的最核心的数学工具模块,我们可以利用其编写一系列的最优化方法,当然,要使用好微分工具,就首先需要了解广泛应用于机器学习建模的优化思想。
所谓优化思想,指的是利用数学工具求解复杂问题的基本思想,同时也是近现代机器学习算法在实际建模过程中经常使用基础理论在实际建模过程中,我们往往会先给出待解决问题的数值评估指标,并在此基础之上构建方程、采用数学工具、不断优化评估指标结果,以期达到可以达到的最优结果。本节,我们将先从简单线性回归入手,探讨如何将机器学习建模问题转化为最优化问题,然后考虑使用数学方法对其进行求解。

1. 简单线性回归的机器学习建模思路

在这里插入图片描述

  • 转化为优化问题在这里插入图片描述在这里插入图片描述

2. 机器学习建模一般流程

在机器学习领域,大多数优化问题都是围绕目标函数(或者损失函数)进行求解。在上述问题中,我们需要围绕SSE求最小值。SSE是一个关于a和b的二元函数,要求其最小值,需要借助数学工具,也就是所谓的最优化方法。选择优化方法并执行相应计算,可以说是整个建模过程中最核心也是相对较难的部分,很多时候这个过程会直接决定模型的性能。

  • 最优化问题的求解方法
    在这里插入图片描述
  • 函数的凹凸性
    在这里插入图片描述在这里插入图片描述
  • 凸函数的最小值
    在这里插入图片描述在这里插入图片描述
  • SSE最小值在这里插入图片描述
  • 流程梳理
    在这里插入图片描述在这里插入图片描述

3. 第一个优化算法:最小二乘法

前面提到,利用优化方法求解目标函数其实是机器学习建模过程中最为核心的环节,因此,我们有必要将围绕上述简单线性回归问题,进一步讨论最小二乘法背后的数学逻辑和优化思想,同时简单探讨数据的矩阵表示方法和基本矩阵运算。虽然最小二乘法并不是主流的深度学习损失函数的优化算法,但从最小二乘法入手了解优化算法背后的数学逻辑,却是非常有必要,同时,线性方程也是构建神经网络模型的基础,因此,我们有必要深入探讨线性模型建模细节以及最基本的优化算法:最小二乘法。

  • 代数表示方法在这里插入图片描述在这里插入图片描述

  • 矩阵表示方法在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

SSE是求的2范数(先平方后开根号),后面跟了平方,最后就是误差平方和
其中的 X X X必须是满秩的

  • 最小二乘法的简单实现在这里插入图片描述在这里插入图片描述在这里插入图片描述

4. 反向验证导数为0——autograd求导

当然,我们也可以反向验证,看下损失的数SSEa=1,b=1时偏导数是否都为0。此时就需要借助PyTorch中的autograd模块来进行偏导计算。严格意义上来讲,autograd模块是PyTorch中的自动微分模块,我们可以通过autograd模块中的函数进行微分运算,在神经网络模型中,通过自动微分运算求解梯度是模型优化的核心。关于微分计算梯度进而执行优化的相关方法我们会在后续逐步介绍,此处我们仅适用autograd模块来进行简单的微分计算尝试,也就是对SSE进行偏导计算,判断a、b同时取值为1时偏导是否为0。
对于目前我们所适用的PyTorch 1.7.1版本来说,我们可以直接在张量Tensor中进行微分运算。目前市面上流通的PyTorch教材有些会介绍Variable类,在进行微分运算时需提前将Tensor类转化为Variable类,但其实在PyTorch 0.4版本以后Tensor就已经不仅仅是一个纯计算的载体,而是可以支持微分运算,Variable的概念被逐渐弱化,可微分性也变成了Tensor的一个基本属性,我们只需要在创建Tensor时,通过设置requires_grad属性为True、规定张量可微分即可。

在这里插入图片描述在这里插入图片描述

四、动态计算图与梯度下降入门

1. AutoGrad的回溯机制与动态计算图

新版PyTorch中的张量已经不仅仅是一个纯计算的载体,张量本身也可支持微分运算,这种可微分性其实不仅体现在我们可以使用grad函数对其进行求导,更重要的是这种可微分性会体现在可微分张量参与的所有运算中。

  • 可微分性在这里插入图片描述在这里插入图片描述

  • 张量计算图在这里插入图片描述在这里插入图片描述

2. 反向传播与梯度计算

我们曾使用autograd.grad进行函数某一点的导数值得计算,其实,除了使用函数以外,我们还有另一种方法,也能进行导数运算:反向传播。当然,此时导数运算结果我们也可以有另一种解读:计算梯度结果。
注:此处我们暂时不区分微分运算结果、导数值、梯度值三者区别,目前位置三个概念相同,后续讲解梯度下降时再进行区分。

在这里插入图片描述

  • 反向传播(只保留叶节点的grad值)
    在这里插入图片描述在这里插入图片描述

  • 中间节点反向传播和输出节点反向传播的区别在这里插入图片描述

  • 中间节点梯度保存在这里插入图片描述在这里插入图片描述

2.1. 阻止计算图追踪

在这里插入图片描述在这里插入图片描述

  • 创建一个不可导的相同张量detach()在这里插入图片描述

2.2. 识别叶节点(输入节点)

在这里插入图片描述

3. 梯度下降基本思想

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述

  • 方向与步长

当然,梯度下降的基本思想好理解,但实现起来却并不容易(这也是大多数机器学习算法的常态)。在实际沿着目标函数下降的过程中,我们核心需要解决两个问题,其一是往哪个方向走,其二是每一步走多远。以上述简单线性回归的目标函数为例,在三维空间中,目标函数上的每个点理论上都有无数个移动的方向,每次移动多远的物理距离也没有明显的约束,而这些就是梯度下降算法核心需要解决的问题,也就是所谓的方向和步长(学习率)。

在这里插入图片描述在这里插入图片描述

4. 梯度下降的数学表示

  • 代数表示在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
  • 矩阵表示在这里插入图片描述在这里插入图片描述在这里插入图片描述
  • 举个栗子
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
  • 编写函数执行梯度下降在这里插入图片描述在这里插入图片描述

总结

对应视频链接🔗,适合入门讲的很细,看完去实战看小土堆刚好

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/492045.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

XXE靶机攻略

XXE-Lab靶场 1.随便输入账号密码 2.使用bp抓包 3.插入xml代码,得到结果 xxe靶机 1.安装好靶机,然后输入arp-scan -l,查找ip 2.输入ip 3.使用御剑扫描子域名 4.输入子域名 5.输入账号密码抓包 6.插入xml代码 7.使用工具解码 8.解码完毕放入文…

计算机知识笔试

一、计算机网络 1.网络分类 树型、总线型、环型一般是局域网所用的拓扑结构,广域网和远程计算机网络普遍采用网状拓扑结构。 2.OSI模型各层功能 比特、帧、端到端 3.传输层协议 TCP:传输控制协议 UDP:用户数据报协议 传输层、可靠、连接 4.网络层协议 IP协议是…

设计规规范:【App 配色】

文章目录 引言I App 配色组成色彩象征 & 联想II 知识扩展设计流程图UI设计交互设计UI交互设计引言 设计规范,保持设计一致性,提高设计效率。宏观上对内统一,管理与合作变得容易。 按类型管理颜色、文本样式、图标、组件(symbol)。 蓝湖设计规范云 https://lanhuapp.co…

计算生物学与系统生物学

计算生物学 计算生物学是一个利用数学、统计学、计算机科学和生物学知识来解决生物学问题的学科。它的核心目标是通过开发和应用计算方法来分析和解读大量的生物数据,以揭示生命现象的规律和机制。 1. 基因组学分析 计算生物学在基因组学中的应用主要集中在基因的…

timestamp 时间戳转换成日期的方法 | java.util

时间戳通常是一个long数据(注意java中赋值时需要带上L标识是long整型,否则int过长报错) 代码实现 常用工具类: java.util.Datejava.time.Instantjava.time.format.DateTimeFormatter toInstant() 方法的功能是将一个 Date 对象…

【OpenCV计算机视觉】图像处理——平滑

本篇文章记录我学习【OpenCV】图像处理中关于“平滑”的知识点,希望我的分享对你有所帮助。 目录 一、什么是平滑处理 1、平滑的目的是什么? 2、常见的图像噪声 (1)椒盐噪声 ​编辑(2) 高斯噪声 &a…

在IDE中使用Git

我们在开发的时候肯定是经常使用IDE进行开发的,所以在IDE中使用Git也是非常常用的,接下来以IDEA为例,其他的VS code ,Pycharm等IDE都是一样的。 在IDEA中配置Git 1.打开IDEA 2.点击setting 3.直接搜索git 如果已经安装了会自…

数据可视化-1. 折线图

目录 1. 折线图适用场景分析 1. 1 时间序列数据展示 1.2 趋势分析 1.3 多变量比较 1.4 数据异常检测 1.5 简洁易读的数据可视化 1.6 特定领域的应用 2. 折线图局限性 3. 折线图代码实现 3.1 Python 源代码 3.2 折线图效果(网页显示) 1. 折线图…

Linux -- 线程控制相关的函数

目录 pthread_create -- 创建线程 参数 返回值 代码 -- 不传 args: 编译时带 -lpthread 运行结果 为什么输出混杂? 如何证明两个线程属于同一个进程? 如何证明是两个执行流? 什么是LWP? 代码 -- 传 args&a…

es 开启slowlog

在 Elasticsearch 中,slowlog(慢日志)是用来记录查询和索引操作的性能数据,帮助你诊断性能瓶颈。你可以为查询 (search slowlog) 和索引 (index slowlog) 配置慢日志。 数据准备 POST /products/_doc/1 {"product_name&quo…

【韩顺平 Java满汉楼项目 控制台版】MySQL+JDBC+druid

文章目录 功能界面用户登录界面显示餐桌状态预定显示所有菜品点餐查看账单结账退出满汉楼 程序框架图项目依赖项目结构方法调用图功能实现登录显示餐桌状态订座显示所有菜品点餐查看账单结账退出满汉楼 扩展思考多表查询如果将来字段越来越多怎么办? 员工信息字段可…

知道一个服务器IP地址如果attack服务器地址

CSDN提醒:亲爱的用户:你好! 你的账号于2024-12-17 19:04:04在美国美国登录,登录IP为:47.238.159.124。若非本人登录,请及时修改密码。 莫名其妙显示美国登录了我的CSDN博客 卧槽 服务器的IP地址是一个用于…

3大Excel免费功能

推荐几个免费excel图表绘制工具 Power Map Power Map是Excel的内置功能 Power Map可在Windows用户的Excel 2013或者Excel 2016或者Office 365中使用,如下图, 看案例 动态地图1 动态地图2

前端面试问题集合

0 HTML5相关 websocket WebSocket 使用ws或wss协议,Websocket是一个持久化的协议,相对于HTTP这种非持久的协议来说。WebSocket API最伟大之处在于服务器和客户端可以在给定的时间范围内的任意时刻,相互推送信息。WebSocket并不限于以Ajax(或X…

强化学习路径规划:基于SARSA算法的移动机器人路径规划,可以更改地图大小及起始点,可以自定义障碍物,MATLAB代码

一、SARSA算法概述 SARSA(State-Action-Reward-State-Action)是一种在线强化学习算法,用于解决决策问题,特别是在部分可观测的马尔可夫决策过程(POMDPs)中。SARSA算法的核心思想是通过与环境的交互来学习一…

通过基于几何的网格自适应增强 CFD 网格划分

CFD 仿真中的网格质量问题 在 CFD 仿真中,网格质量直接影响分析精度和效率。结构良好的网格可以准确地捕捉物理现象,确保可靠的结果,而质量差会导致错误和代价高昂的设计缺陷。高质量的网格在复杂的几何体中至关重要,因为流体行为…

Dockerfile文件编写

目录 Dockerfile文件编写 1.什么是Dockerfile 2. Dockerfile作用 3.dockerfile 的基本结构: 4.dockerfile指令: FROM 指定基础镜像,dockerfile构建镜像的第一个指令 LABEL 指定镜像维护人信息 ADD/COPY 复制本地文件/目录到镜像中 …

ARM学习(38)多进程多线程之间的通信方式

ARM学习(38)ARM学习(38)多进程多线程之间的通信方式 一、问题背景 笔者在调试模拟器的时候,碰到进程间通信的问题,一个进程在等另外一个进程ready的时候,迟迟等不到,然后通过调试发现,另外一个进程变量已经变化了,但是当前进程变量没变化,需要了解进程间通信的方式…

pytest -s执行的路径

pytest -s执行的路径: 直接写pytest -s,表示从当前路径下开始执行全部.py的文件。 执行具体指定文件:pytest -s .\testXdist\test_dandu.py 下面这样执行pytest -s 会报找不到文件或没权限访问, 必须要加上具体文件路径pytest -s…

XXE练习

pikachu-XXE靶场 1.POC:攻击测试 <?xml version"1.0"?> <!DOCTYPE foo [ <!ENTITY xxe "a">]> <foo>&xxe;</foo> 2.EXP:查看文件 <?xml version"1.0"?> <!DOCTYPE foo [ <!ENTITY xxe SY…