Tensor and Pytorch

Tensor and Pytorch
Tony CaoTensor and Pytorch
张量维度是深度学习框架基础,同时是后续维度变换基础;
抛去物理学的时间角度,用纯空间的角度理解张量维度;
高维张量由低维张量堆叠而成。torch.size(2,3,3) –> 这个结果是从最后一位看到前面的,最里面的代表list的length
tensor = 0
tensor = 1
tensor = 2
tensor = 3
tensor = 4
tensor = 5
1. torch.unsqueeze 详解
1 | torch.unsqueeze(input, dim, out=None) |
- 作用:扩展维度
返回一个新的张量,对输入的既定位置插入维度 1
- 注意: 返回张量与输入张量共享内存,所以改变其中一个的内容会改变另一个。
如果dim为负,则将会被转化dim+input.dim()+1
- 参数:
tensor (Tensor)– 输入张量dim (int)– 插入维度的索引out (Tensor, optional)– 结果张量
1 | import torch |
2. torch.squeeze 详解
- 作用:降维
1 | torch.squeeze(input, dim=None, out=None) |
将输入张量形状中的1 去除并返回。 如果输入是形如(A×1×B×1×C×1×D),那么输出形状就为: (A×B×C×D)
当给定dim时,那么挤压操作只在给定维度上。例如,输入形状为: (A×1×B), squeeze(input, 0) 将会保持张量不变,只有用 squeeze(input, 1),形状会变成 (A×B)。
- 注意: 返回张量与输入张量共享内存,所以改变其中一个的内容会改变另一个。
- 参数:
input (Tensor)– 输入张量dim (int, optional)– 如果给定,则input只会在给定维度挤压out (Tensor, optional)– 输出张量
为何只去掉 1 呢?
多维张量本质上就是一个变换,如果维度是 1 ,那么,1 仅仅起到扩充维度的作用,而没有其他用途,因而,在进行降维操作时,为了加快计算,是可以去掉这些 1 的维度。





