Tensor,又称"张量",其实就是n维度数组。不同维度的Tensor示意图如下:
reshape函数可以处理总元素个数相同的任何新形状,【3,2,5】->【3,10】->【5,6】这个流程如下图所示:
有时需要对Tensor按照某一维度进行求和,那么实际上就是将所求和的维度从向量降维成标量
import torch
# 创建一个 2*3*4 的三秩张量
X = torch.arange(24).reshape(2,3,4)
# 以下是X内部的值:
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]]])
# 分别对 X 从 0轴、1轴、2轴进行求和
X.sum(0, keepdim=True), X.sum(1, keepdim=True),X.sum(2, keepdim=True)
------------------下面是求和后的 X------------------
# 0轴
(tensor([[[12, 14, 16, 18],
[20, 22, 24, 26],
[28, 30, 32, 34]]])
# 1轴
tensor([[[12, 15, 18, 21]],
[[48, 51, 54, 57]]])
# 2轴
tensor([[[ 6],
[22],
[38]],
[[54],
[70],
[86]]]))
单从输出上来看也许不是很直观,那么可以借助图像来显示【按维度求和】具体发生了什么,如下所示: