IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Pytorch入门 - Day4 -> 正文阅读

[人工智能]Pytorch入门 - Day4

张量的线性代数运算

也就是BLAS(Basic Linear Algeria Subprograms)和LAPACK(Linear Algeria Package)的运算.

1. BLAS和LAPACK的概览

这两个模块提供了完整的线性代数基本方法,由于设计到函数种类较多, 因此对其进行简单分类.
具体包括:

  1. 矩阵的形变及特殊矩阵的构造方法: 包括矩阵的转置, 对角矩阵的创建, 单位矩阵的创建, 上/下三角矩阵的创建等;
  2. 矩阵的基本运算: 包括矩阵乘法, 向量内积, 矩阵和向量的乘法等, 当然,此处还包含了高维张量的基本运算, 将着重探讨矩阵的基本运算拓展至三维张量中的基本方法;
  3. 矩阵的线性代数运算: 包括矩阵的迹, 矩阵的秩, 逆矩阵的求解, 伴随矩阵和广义逆矩阵等;
  4. 矩阵分解运算: 特征分机, 奇异值分解和SVD分解等.

2. 矩阵的形变及特殊矩阵构造方法

函数描述
torch.t(t)t转置
torch.eye(n)创建包含n个分量的单位矩阵
torch.diag(t1)以t1中各元素,创建对角矩阵
torch.triu(t)取矩阵t中的上三角矩阵
torch.tril(t)取矩阵t中的下三角矩阵

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

3. 矩阵的基本运算

矩阵不同意普通的二维数组, 其具备一定的线性代数含义,而这些特殊的性质,其实就主要体现在矩阵的基本运算上,

函数描述
torch.dot(t1,t2)计算t1,t2张量内积
torch.mm(t1,t2)矩阵乘法
torch.mv(t1,t2)矩阵乘向量
torch.bmm(t1,t2)批量矩阵乘法
torch.addmm(t, t1, t2)矩阵相乘后相加
torch.addbmm(t, t1, t2)批量矩阵相乘后相加

dot\vdot: 点积运算

在Pytorch中, do和vdot只能作用于一维张量,且对于数值型对象,二者计算结果并没有区别. 两种函数只在进行复数运算时会有区别.

在这里插入图片描述
mm:矩阵乘法

在Pytorch中, 矩阵乘法其实是一个函数簇, 除了矩阵乘法以外,还有批量矩阵乘法,矩阵相乘相加, 批量矩阵相乘相加等等函数.

在这里插入图片描述
mv: 矩阵和向量相乘
Pytorch中提供了一类非常特殊的矩阵和向量相乘的函数, 可以将此过程看成是先将向量转化为列向量然后再相乘.

在这里插入图片描述
在这里插入图片描述
mv函数本质上提供了一种二维张量和一维张量相乘的方法, 在线性代数运算过程中,有很多矩阵乘向量的场景, 典型的如线性回归的求解过程,通常情况下我们需要将向量转化为列向量(或者某些编程语言就默认向量是列向量), 然后进行计算.

bmm: 批量矩阵相乘

三维张量的矩阵乘法. 根据此前对张量结构的理解, 我们知道, 三维张量就是一个包含了多个相同形状的矩阵的集合.
在这里插入图片描述

在这里插入图片描述
Point:
三维张量包含的矩阵个数需要相同
每个内部矩阵,需要满足矩阵乘法的条件,也就是左乘矩阵的行数要等于右乘矩阵 的列数.

addmm: 矩阵相乘后相加

addmm函数结构: addmm(input,mat1,mat2,beta=1,alpha=1)
输出结果: betainput+alpha(mat1*mat2)

在这里插入图片描述
addbmm: 批量矩阵相乘后相加

与addmm类似,都是先乘后加,并且可以设置权重.

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

4. 矩阵的线性代数运算

函数描述
torch.trace(A)矩阵的迹
matrix_rank(A)矩阵的秩
torch.det(A)计算矩阵A的行列式
torch.inverse(A)矩阵的迹
torch.lstsq(A)最小二乘法
torch.trace(A)矩阵的迹

矩阵的迹

迹就是矩阵对角线元素之和, 可以使用Trace函数进行计算
在这里插入图片描述

矩阵的秩

指矩阵中行或者列的极大线性无关数, 且矩阵中行,列极大无关数总是相同的. 任何矩阵的秩都是唯一值,满秩指的是方阵(行数和列数相同的矩阵)中行数,列数和秩相同. 满秩方阵有线性唯一解等重要特性,而其他矩阵也能通过解秩来降维. 同时, 秩也是奇异值分解等运算中涉及到的重要概念.

在这里插入图片描述

矩阵的行列式(det)

所谓行列式,可以简单将其理解为矩阵的一个基本性质或者属性, 通过行列式的计算, 我们能够知道矩阵是否可逆, 从而可以进一步求解矩阵所对应的线性方程. 专业解释为, 矩阵进行线性变换的伸缩因子.

在这里插入图片描述

5. 线性方程组的矩阵表达形式

对于矩阵, 把高维空间中的一个个数看成是向量, 而由这些向量组成的数组看成一个矩阵. 例如(1,2),(3,4) 是二维空间中的两个点, 矩阵A就代表这两个点所组成的矩阵.
在这里插入图片描述
如果更进一步, 我们希望在二维空间中找到一条直线, 来拟合这两个点,也就是所谓的构建一个线性回归模型, 我们可以设置线性回归方程如下

y=ax+b

在这里插入图片描述
用矩阵表示线性方程组, 则是矩阵的另一种常用用途, 接下来,我们可以通过上述矩阵方程组来求解系数向量x.

首先一个基本思路是, 如果有个和A矩阵相关的另外一个矩阵, 假设为 A ? 1 A^{-1} A?1, 可以使得二者相乘之后等于1, 也就是A * A ? 1 A^{-1} A?1 = 1, 那么在方程组左右两边同事左乘该矩阵, 等式右边的计算结果 A ? 1 ) A^{-1}) A?1) * B 就将是 x系数向量的取值, 而此处的 A ? 1 ) A^{-1}) A?1) 就是所谓的A的逆矩阵.

逆矩阵的定义:
如果存在两个矩阵 A, B, 并在举证乘法运算下, A* B = E(单位矩阵), 则我们称A, B互为逆矩阵.

inverse函数: 求解逆矩阵

在这里插入图片描述

在这里插入图片描述

6. 矩阵的分解

常见的分解有QR分解, LU分解, 特征分解, SVD分解等.
大多数情况下,矩阵分解成如下形式:
A= V U D

特征分解

特征分解中, 矩阵分解形势为:

A = Q Q Q ? \bigwedge ? Q ? 1 Q^{-1} Q?1

Q Q Q Q ? 1 Q^{-1} Q?1 互为逆矩阵, 并且 Q Q Q的列就是A的特征值所对应的特征向量, 而 ? \bigwedge ?为矩阵A的特征值按照降序排列组成的对角矩阵.

torch.eig函数: 特征分解

在这里插入图片描述
输出结果中, eigenvalues表示特征值向量, 即A矩阵分解后的?矩阵的对角线元素值,并按照从大到小排列

eigenvectors表示A矩阵分解后的𝑄矩阵,此处需要理解特征值,所谓特征值,可简单理解为对应列在矩阵中的信息权重, 如果该列能够简单线性变换来表示其他列, 则说明该列信息权重较大,反之则较小.

特征值概念和秩的概念有点类似, 但不完全相同, 矩阵的秩表示矩阵列向量的最大线性无关数,而特征值的大小则表示某列向量能多大程度解读矩阵列向量的变异度,即所包含信息量,秩和特征值关系可以用下面例子来进行解读.

在这里插入图片描述
在这里插入图片描述
特征值一般用于表示矩阵对应线性方程组解空间以及数据降维,当然,由于特征分解值能作用于方阵, 大多数实际情况下矩阵行列数未必相等,此时要进行类似的操作就需要采用和特征值分解思想类似的奇异值分解(SVD).

奇异值分解(SVD)

SVD来源于代数学中的矩阵分解问题,对于一个方阵来说, 我们可以利用矩阵特征值和特征向量的特殊性质(矩阵点乘特征向量等于特征值数乘特征向量),通过求特征值与特征向量达到矩阵分解的效果

A A A = Q Q Q ? \bigwedge ? Q ? 1 Q^{-1} Q?1

实际问题中大多数矩阵是奇异矩阵形式, 而不是方阵的形式出现的, 奇异值分解是特征值分解在奇异矩阵上的推广形式, 它将一个维度为m X n 奇异矩阵A 分解为三个部分
A A A = U U U ∑ \sum V T V^T VT

其中 U U U V V V 是两个正交矩阵,其中的每一行(每一列)分别被称为左奇异向量和右奇异向量, 他们和 ∑ \sum 中对角线上的奇异值对应,通常情况下我们这只需要保留前k个奇异向量和奇异值即可, 其中 U U U 是m x k 矩阵, V V V 是n x k 矩阵, ∑ \sum 是k x k的方阵, 从而达到减少存储空间的效果, 即

在这里插入图片描述

svd奇异值分解函数

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

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-17 11:54:48  更:2021-07-17 11:55:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/22 11:22:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码