1.
变量是未知的标量,标量是只有一个元素的张量,标量是向量的元素或者分量
2.矩阵
aij 第i行j列的元素
矩阵的转置,如果B=AT 那么Bij=Aji 对称矩阵:A=AT
对于形状相同的矩阵可以进行按元素计算

3.张量算法

两个矩阵的按元素乘法称为Hadamard积
将张量乘以或加上一个标量不会改变张量的形状,其中张量的每个元素都将与标量相加或相乘。
4.求和与平均值(降维与非降维)
降维求和
求和的时候会降维,使之变成标量进行运算
1)axis=0是一列一列的计算最后得到4个数 axis=1是一行一行的计算最后得到5个数 (5,4)代表着五行四列 也或者一行四个元素 axis=1给出的解释是"指定axis=1将通过汇总所有列的元素降维(轴1)" 但其实他是一行一行相加 最后得到的数字是5 (一列有五个元素)那么是否可以认为,对于axis 和 dim 都可以说变化最后体现在n维上 axis转换(如下图)所以对于axis=(n-1)和dim=(n-1)最后都体现出行(第一维度)的变化
对于cat函数就是扩展这一行 对于sum就是压缩这一行 (dim/axis=1)

这里的变化就是最直观的形状上的变化,因为对于axis降维函数来说,相当于把数字压缩成一行 本质是对列进行操作 但是反映出来我们看到或者得到的是行(当axis=0时) 为了方便记忆我这么变换了一下说法 为了函数什么的统一理解,不过后续发现很多直接记忆就可以的话再重申(毕竟目前对我来说这个还是有一点点绕 到底怎么记住维度呢 代表的都是什么变换呢) 个人有个人理解,欢迎讨论!

2)A.sum(axis=[0,1])=a.sum()沿行列求和和直接求和是一样的
降维求平均值
因为mean()函数只支持浮点型or复数型,所以单纯整数会报错
A.mean(axis=0)=A.sum(axis=0)/A.numel()

非降维求和
保留他的轴数或者行数

如果我们想沿某个轴计算A元素的累积总和, 比如axis=0(按行计算),可以调用cumsum函数。 此函数不会沿任何轴降低输入张量的维度。

拿axis=1说明:第一列是初始数字,最后一列就是他们的和(和降维求和结果相同) 而其他的则是 第二列则是沿着行方向,以每行第一个元素为基础,依次加上该行后续元素。比如第一行的1是第一个元素0加上第二个元素1,第二行的9是第一个元素4加上第二个元素5(假设原始张量第二行第二列值为5 ) 总之,是按照指定轴方向进行累积求和运算
5.点积
1.相同位置 按元素乘积 的和

2.权重为非负数且和为1时,点积表示加权平均
3.当两个向量规范化得到单位长度后,点积表示夹角的余弦
6.矩阵向量积

Q. 为什么行向量x==列向量 那么列向量x的矩阵向量积==行向量吗?
A. 1)点积的结果是一个标量,在计算ax时,对a的每一行都进行这样的点积操作,因为a有m行,所以得到m个标量,这些标量构成了一个ax维的列向量
2)a的列向量表现出来的是[a11,.....,a1n] 实际上不符合矩阵是二维结构这个要求 列向量和x的点积是标量

(m,)的向量可以看作是(m,1)的列矩阵
矩阵乘法 (m, n) * (n,) 的语境下,框架会自动将那个 (n,) 的向量当作 (n, 1) 的列向量来处理,然后输出一个 (m, 1) 的列向量,最后再为了方便显示,将其"压缩"回一维形式 (m,) 展示给我们。
(m,n)m行n列 (n,1)n行1列 行数由第一个矩阵m决定 列数由第二个矩阵的1决定 最后得到(m,1)m行1列 >>其实我还是有一点点不懂
举一个例子

这里4是 第一行(1,2,3)分别和(2,1,0)按元素相乘再求和得到的 13是(4,5,6)与(2,1,0)点积得到 有几行最后得到几个数

7.矩阵矩阵积/矩阵乘法
依旧是A决定行数B决定列数 类似于矩阵向量积 m*k @ k*n=m*n m行n列

看下面这个例子 但注意(m,k)(k,n)这个k一定要相等方便对应维度


8.小练

1.验证可以使用2.1学到的逻辑运算符来验证


3.逻辑分析 :对于A,A.T表示他的转置矩阵 Aij=A.Tji (A+A.T)12=A12+A.T12=A12+A21 (A+A.T)21=A21+A.T21=A21+A12 结果相同 所以也是
对称矩阵:A=A.T,方阵代表m=n行数等于列数的矩阵

如果是普通矩阵就会是这种情况:

4.len(x)访问第0维(最高纬度)的长度 也称访问向量的维度(这里的维度和一维二维不一样),你可以理解为这一维度有几个部分

5.对于多个维度的张量 len()表示他最高维度的部分数 对于一维向量来说 len()表示长度(这个长度就是我们数值的长度)

6.对于方阵来说是可以进行的 因为你对某一维求和得到的结果和行or列数相同

但对于普通的矩阵 你得到的行数or列数是肯定有出入的 没办法保证完全相同,无法进行运算
Q不是学习了广播机制,为什么不能进行呢
A 广播机制是需要保证维度对齐要不相等要不一方为1的(不存在==1)对于下面这个来说 (4,3)得到的是(3,) 对(3,4)来说得到的是(4,)无法对其 无法运行


7.(3,4)(2,4)(2,3)根据结果你会发现 对哪个维度求和就把哪个维度取消了相当于(这里对于维度0,1,2我和之前dim一个解释 0,1,2一次从最高维度向最低维度)
其实根据这个练习对于上面的二维 降维求和,可以这么记忆,就可以往下延申猜出是哪个部分进行计算得到答案

