受到之前MATLAB的矩阵输入格式的影响,一直没能很好的体会numpy和torch.tensor的维度表示方式。
在MATLAB中,可以通过分号或换行的形式表示不同的维度或方向。
但是在numpy以及基于numpy的众多数据格式中,是没有分号这一概念的。每一个维度方向必须用对应该维度方向的中括号[ ]括起来
。
- 第零个维度方向囊括整体的数据分布,故该维度的中括号在最外边;
- 第一维度方向次之,该维度方向的中括号在次外边,以此类推。
继续理解:其实高维数据
可以看成是广义低维数据
,这点很重要。如果从第零个维度方向去看该数据有多少element,则我们要去看有多少个第一维度方向的并列元素个数,再往下的二维三维方向都是包含在第一维度方向中,从第一维度方向视角我们看不到。如果从第一维度方向的视角去看一维方向内部有多少element,就去数其内部有多少个第二维度方向的并列的元素个数,以此类推。其实这种查看方式本质上就是递归。可以一直查看到什么什么程度呢?查看到其内部的element是scalar,我们知道,scalar的shape是0,向量的shape是(1, )
通常查看每一个tensor的shape或size是个什么规格的,可以利用上述的描述来检查核对 (shape是每一个tensor都有的属性)。
#这里我们用numpy来举例,numpy在这方面其实和torch.tensor是一致的
import numpy as