在深度学习的 数据操作 章节存在与本章大量重复的内容,下面只介绍未重复的几点。
1.转置
A.T A为张量名,T为转置函数,运行结果为交换矩阵的行和列,即转置
A = torch.arange(20).reshape(5, 4)
print(A)
print(A.T)
tensor([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19]])
tensor([[ 0, 4, 8, 12, 16],
[ 1, 5, 9, 13, 17],
[ 2, 6, 10, 14, 18],
[ 3, 7, 11, 15, 19]])
2.clone()
用于创建并返回一个对象的副本,这个副本具有和原始对象相同的数据,但是是一个新的对象,对其进行修改不会影响原始对象。
A.clone() A为原始对象名,clone()创建副本,中间用 “ . ” 连接。
3.降维求和以及求平均值
A.num(axis=?) 元素求和 , “?” 为轴
A.mean() == A.num()/A.numel() 求平均值的函数 或 元素求和除以总数
4.非降维求和
sum_A = A.sum(axis=1, keepdims=True)
如果我们想沿某个轴计算A
元素的累积总和, 比如axis=0
(按行计算),可以调用cumsum
函数。 此函数不会沿任何轴降低输入张量的维度。
A = torch.arange(20).reshape(5,4)
print(A.cumsum(axis=0))
tensor([[ 0., 1., 2., 3.],
[ 4., 6., 8., 10.],
[12., 15., 18., 21.],
[24., 28., 32., 36.],
[40., 45., 50., 55.]])
5.点积
torch.dot(x,y)
x = torch.arange(4, dtype = torch.float32)
y = torch.ones(4, dtype = torch.float32)
print(torch.dot(x,y))
tensor(6.)
注意,我们可以通过执行按元素乘法,然后进行求和来表示两个向量的点积:
x = torch.arange(4, dtype = torch.float32)
y = torch.ones(4, dtype = torch.float32)
print(torch.sum(x * y))
tensor(6.)
6.矩阵-向量积
在代码中使用张量表示矩阵-向量积,我们使用mv
函数。 当我们为矩阵A
和向量x
调用torch.mv(A, x)
时,会执行矩阵-向量积。 注意,A
的列维数(沿轴1的长度)必须与x
的维数(其长度)相同。
torch.mv(A,x) 矩阵A,向量x
7.矩阵-矩阵相乘
torch.mm(A,B) A,B为矩阵
A = torch.arange(20,dtype=torch.float32).reshape(5,4)
B = torch.ones(4, 3)
print(torch.mm(A, B))
tensor([[ 6., 6., 6.],
[22., 22., 22.],
[38., 38., 38.],
[54., 54., 54.],
[70., 70., 70.]])
8.范数 (未学)