对pytorch中张量的形状和维度的理解

本人也是pytorch新手一枚,如有错误,欢迎及时指正
1 张量的概念和定义
对pytorch中张量的形状和维度的理解
0 维张量 是 标量 (单纯的数字)
1维张量 是 向量
2 维张量 是数组
3维张量 可以看成多个形状相同数组
同理,我们可以推导更高维度的张量

  1. 张量的形状
    创建两个张量,形状均为[2,3,6],也就是有2个3*6的数组。
    对pytorch中张量的形状和维度的理解
    对pytorch中张量的形状和维度的理解
    对pytorch中张量的形状和维度的理解
    也可以使用x.size(index)来取出某个维度上的大小。在这里我们可以将张量的形状看成是列表[2,3,6],这样在使用x.size(index)取维度的大小时,就可以应用列表的规则。如上图所示
  2. 对张量维度的理解
    依然使用上面 x 的例子,x有三个维度 0 ,1 ,2 。
    对pytorch中张量的形状和维度的理解
    x[0]取出的是第一个维度上的第一个元素
    对pytorch中张量的形状和维度的理解
    对pytorch中张量的形状和维度的理解
    也可以使用这种方法,取出任意维度上的任意起始位置的元素。
  3. 对于torch.cat()函数维度的理解
    对于上例中的 x 来说,维度有 0,1,2
    对pytorch中张量的形状和维度的理解
    在0维上进行拼接,相当于是在叠罗汉,一层一层累加,不过这些罗汉的形状要相同,即第1维和第2维的大小要相同。
    拼接后的形状是436
    对pytorch中张量的形状和维度的理解
    在1 维上进行拼接,按纵向进行拼接,可以看成有两个形状相同方阵的罗汉,一个方阵的罗汉需要站到另一个方阵的后面去。其他两维的大小要相同。
    对pytorch中张量的形状和维度的理解
    在2 维上进行拼接,按横向拼接,可以看成本来有两排罗汉,现在要合并成一排,其他两个维度的大小要相同。

张量的形状可以看成列表,同理张量的维度也可以看成列表。
对于上例中的 x 来说,维度有 0,1,2,将其看成列表[0,1,2]
在dim = -1 上拼接就相当于在 dim = 2 上进行拼接
0 1 2 > 从大粒度到小粒度
-1 -2 -3 > 从小粒度到大粒度