有不少大一欠下的东西,没想到还贷来的这么快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没看懂想干啥