pytorch中的线性代数

有不少大一欠下的东西,没想到还贷来的这么快quq

线性代数

只包含一个数值叫标量,向量可以看成标量组成的列表,标量值可以叫做向量的元素或分量

向量中某个元素可以下标引用,大量文献认为列向量是向量的默认方向

长度,维度,形状

  向量的维度被用来表示向量的长度,即向量或轴的元素数量。 然而,张量的维度用来表示张量具有的轴数。 在这个意义上,张量的某个轴的维数就是这个轴的长度

很好理解,向量的维度即其含有的元素数列,而张量维度表示为轴数(三维,四维等等),单独去看一个轴上的长度则是向量的维数

矩阵

基本概念

概念略过了,,直接看看pytorch如何实现矩阵的操作的

 可以对矩阵进行转置,特别的,对称矩阵的转置与原矩阵相同

 向量是一阶张量,矩阵是二阶张量,还有高阶张量,处理图像时张量十分重要

[0,1]和[2,3]两个一阶构成一个二阶,然后两个二阶构成一个三阶,两个三阶段构成四阶张量

可以理解成两张RGB图像

降维(求和 / 均值)

沿某个轴求和:

 这样就消掉了一维。比如对于(2,3,4),axis = 0消掉了2那层维度,axis = 1消掉了3那层维度,,,

我们还可以同时消去多个维度

 

 均值:

 .numel()返回的是元素的数量

平均数还可以沿着指定轴降低维度,shape为[5, 4],所以shape[0]指的是5的那层维度

 axis =  1同理:

 非降维求和

有时候可能要求在不降维条件下求和,这时加个参数keepdims即可

 要求在沿某个轴下的累计和(其实就是前缀和),可以使用cumsum

 点积

其实就是x1*x2 + y1*y2+ ......

这样可以先乘再求和

矩阵-向量积

A的列维数(沿轴1的长度)必须与x的维数(其长度)相同。

 这里的运算法则有点模糊,大概是这样

 每个ai是一个行向量,每个行向量与x向量点积,所以有了上述维数必须相同的要求,很显然将会算出一列个数为m的数,严谨点来说结果是长度为m的列向量,不过在pytorch中输出没有体现出来。

矩阵-矩阵乘法

就是线代里的矩阵乘法,简单来讲就是

结果里的Cij = Ai * Bj (点积),Ai表示行向量,Bj表示列向量

可以联系矩阵-向量乘法,一个行向量点积一个列向量等于一个数,n个行向量点积列向量结果为长度为n的列向量,B矩阵可以拆成m个列向量,相当于做m次矩阵向量乘法,最后结果为n行m列的矩阵,n行与A一致,m列与B一致

Hadamard积

其实就是两个矩阵对应元素相乘形成新矩阵

范数

线性代数中最有用的一些运算符是范数(norm) 非正式地说,一个向量的范数告诉我们一个向量有多大。 这里考虑的大小(size)概念不涉及维度,而是分量的大小。

在线性代数中,向量范数是将向量映射到标量的函数f

L2范数和L1范数:
 

 

 从这里我们可以知道,Lp范数的求法是各元素绝对值的p次方之和开p次方根

对于矩阵的Frobenius范数(Frobenius norm)是矩阵元素平方和的平方根,这里算法是和L2范数类似的,同样可以调用norm()函数求

 我的理解是范数其实就类似于高中接触的向量的模,来描述向量的大小,向量可以是任意维度的

范数与目标

在深度学习中,我们经常试图解决优化问题: 最大化分配给观测数据的概率; 最小化预测和真实观测之间的距离。 用向量表示物品(如单词、产品或新闻文章),以便最小化相似项目之间的距离,最大化不同项目之间的距离。 目标,或许是深度学习算法最重要的组成部分(除了数据),通常被表达为范数。

直接摘抄的,我的理解是比方说向量去表示某篇文章,而范数就代表了这篇文章的某些属性。

现在不理解的是什么叫最大化分配给观测数据的概率,等动手开始操作深度学习时可能理解概念了。

课后练习

 1-3:

4 - 6:

 

4,5: len总是输出最外层(最左边的维度)

6:矩阵除以张量,最后结果是每个行张量一一对应除。

7已经弄过了,8没看懂想干啥

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值