一、什么是张量
要想接下来这几个概念的维度是依次上升的。
1.标量:标量由只有一个元素的张量表示。在下面的代码中,我们实例化两个标量,并使用它们执行一些熟悉的算术运算,即加法、乘法、除法和指数。(单个的数)
2.向量:标量值组成的列表。
3.矩阵:多个向量组成矩阵
4.张量:矩阵的推广,有n维数据轴
import torch
A=torch.arange(20*2).reshape(2,5,4)
A
A就是一个张量,长下面这个样子
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],
[24, 25, 26, 27],
[28, 29, 30, 31],
[32, 33, 34, 35],
[36, 37, 38, 39]]])
可以看出,(2,5,4)中2代表两个矩阵,5代表5行,4代表4列。
二、计算张量元素的和(降维)
A_sum_axis0 = A.sum(axis=0)#以第一个维度为轴,求对应位置元素的和
A_sum_axis0, A_sum_axis0.shape
A_sum_axis0 = A.sum(axis=0)这句代码的理解就是按照0轴求和,第一个矩阵和第二个矩阵对应位置的和相加,降维之后运行结果应该有5行4列
(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]))
也可以按照两个维度求和
A_sum_axis0 = A.sum(axis=[0,1])
A_sum_axis0, A_sum_axis0.shape
A_sum_axis0 = A.sum(axis=[0,1])也就是说第一个第一个矩阵和第二个矩阵对应位置要想加,并且不同行对应位置也要相加,那么降维之后应该是一个长度为4的向量。
(tensor([180, 190, 200, 210]), torch.Size([4]))