1 归并操作
在对 Tensor 进行归并操作时,会使输出的形状小于输入的形状,并可以沿着某一维度进行指定操作,如求和,既可以计算整个 Tensor
的和,也可以计算 Tensor
中每一行或者每一列的和。
2 具体实现
2.1 创建张量
首先使用 torch.linspace(0,14,8) 在 0~14 之间生成8个数组成的一维张量;
然后再使用 view() 方法,将上一步生成的一维张量转换为4行2列的二维张量。
2.2 常用的归并操作
函数 | 功能 |
mean/sum/median/mode | 均值/和/中位数/众数 |
norm/dist | 范数/距离 |
std/var | 标准差/方差 |
cumsum/cumprod | 累加/累乘 |
2.3 求和
使用 sum() 方法,可以实现对张量中元素进行求和:
- sum() 方法中不加任何参数,是对所有元素进行加和;
- sum() 方法中增加 dim 参数,即求和的方向,当 dim=0 时,表示按列进行加和,第一列为 0+4+8+12=24,第二列依此类推;当 dim=1 时,表示按行进行加和,第一行行 0+2=2,其他行依此类推;这种方式加和后,可以看到得到的结果中只有一个中括号,变为了一维张量。
- sum() 方法中增加 dim 参数,同时增加 keepdim=True 参数,表示求和后,仍然保持原张量的维度,即张量是二维,求和后的张量仍然是二维。如下图所示,dim=1时,按行加和后,结果得到一个4行1列的二维张量;当 dim=0,按列加和后,结果得到一个2列1行的二维张量。
2.4 累加
调用 cumsum() 方法,按照张量中的一个轴进行累计加和。
如 cumsum(dim=0) 时,在获得的结果中,第一行数据不变,第二行数据为第一行数据加上第二行数据的值,第三行数据为前边两行的数据加上第三行的数据,第四行数据为前边三行的数据加上第四行的数据。
因为累加是有方向的,所以参数中的 dim 必须要指定。
2.5 累乘
调用 cumprod() 方法,按照张量中的一个轴进行累乘运算。参数中累乘方向 dim 必须要指定。
值得注意的是,当第一个元素为0时,其后经过累乘计算出的所有元素都为0。