一.创建数据结构
例子:
代码:X = torch.arange(24).reshape(2,3,4)
从结果中不难看出,创建了一个三维的,x,y,z轴为3,4,2的三维矩阵。(或是两个3*4的矩阵)。
二.元素求和及运算
例子:
可以看到这是一个5*4的矩阵,接下来我们用sum函数。
得到结果:tensor(190)
而使用sum(axis=0,1)分别得到tensor([40,45,50,55])和tensor([ 6, 22, 38, 54, 70])
这说明,只用sum()会把所有元素求和获得一个标量,而运用axis可以把张量以特定维度求和获得小一维度的张量。
维度求和的顺序与reshape函数中相同,即如reshape(2,5,4)则axis=0时留下size(5,4)
axis=1时,是(2,4),axis=2时,是(2,5)
A.T表示A的转置
numel()表示元素个数,mean()表示元素均值,这两个函数也可用axis来计算各个维度数值。
三.其他
在上面我们看到,元素的求和会导致张量维度缩小,此时我们可以用keepims=True来避免维度减少:
可以看到,A在以列为单位求和后,还是保持了列的维度。
这样,就可以利用广播机制来让A进行(A/A的和 )等操作了
dot()函数可以对张量进行点积,即x*y再元素求和
矩阵-向量积
在此处注意了,这个tersor中列向量与行向量表示相同的,所以在上面的x中表示的是列向量,即5*4的矩阵✖4*1的矩阵得到5*1的矩阵,没有错误。
四.范数,此处主要讲L2范数
定义:线性代数中最有用的一些运算符是范数(norm)。 非正式地说,向量的范数是表示一个向量有多大。 这里考虑的大小(size)概念不涉及维度,而是分量的大小。
L2范数(针对向量):
torch中使用norm()函数
例子:
F范数(针对矩阵):
L1范数:
五.对于特定轴求和
shape:[5,4] axis:[0,1]aixs求和相当于消去axis对应的维度的向量。
当使用keepims保存维度时例如X=[2,5,4]在axis=1求和时,保留结果为size=[2,1,4]