DAY4 深度学习之李沐大神笔记(2)

DAY4 深度学习之李沐大神笔记(2)


今天主要是完成线性代数相关的知识回顾以及常用代码梳理。


通过arange列出20个元素,再通过reshape构建成5行4列的矩阵:

A = torch.arange(20).reshape(5,4)
A

将A矩阵进行矩阵的转置:

A.T

判断是否为对称矩阵:

B == B.T

向量就是标量的推广,矩阵是向量的推广,我们可以构建具有更多轴的数据结构:

X = torch.arange(24).reshape(2,3,4)
X#这就是一个三维的张量,4是行数,3是列数,2是分维度

结果如下:

tensor([[[ 0,  1,  2,  3],
         [ 4,  5,  6,  7],
         [ 8,  9, 10, 11]],
        [[12, 13, 14, 15],
         [16, 17, 18, 19],
         [20, 21, 22, 23]]])

指定求和汇总张量的轴:

A = torch.arange(40).reshape(2,5,4)
A.shape,A.sum()
A_sum_axis0=A.sum(axis=0)#按照以一个维度求和把剩下的两个维度留下来
A_sum_axis0,A_sum_axis0.shape

结果如下:

(tensor([[20, 22, 24, 26],
         [28, 30, 32, 34],
         [36, 38, 40, 42],
         [44, 46, 48, 50],
         [52, 54, 56, 58]]),
 torch.Size([5, 4])

一个与求和相关的量是平均值(mean或average),平均值只能用于float,即arange时就需要将数定义为浮点型,代码如下:

A = torch.arange(40,dtype=torch.float32).reshape(2,5,4)
A.shape,A.sum()
A.mean(axis=0),A.sum(axis=0)/A.shape[0]

计算总和或均值时保持轴数不变:

sum_A= A.sum(axis=1,keepdims=True)
sum_A#keepdims=True将所变化轴数保留为1,这样就可以通过广播机制将A除以sum_A

某个轴计算A元素的累加总和:

A.cumsum(axis=0)

点积是相同位置的按元素乘积的和(结果应为标量):

torch.dot(x,y)

矩阵与向量相乘:

torch.mv(A,x)

矩阵与矩阵相乘:

torch.mm(A,B)

L2范数(向量元素平方和的平方根):

u = torch.tensor([3.0,-4.0])
torch.norm(u)

L1范数,他表示为向量元素的绝对值之和:

torch.abs(u).sum()

矩阵的佛罗贝尼乌斯范数是矩阵元素的平方和的平方根:

torch.norm(torch.ones((4,9)))

今天掌握了pytorch处理张量的一些基本技能。

你可能感兴趣的:(pytorch,深度学习)