torch.squeeze
torch.squeeze(input, dim=None) → Tensor
torch.squeeze的作用是进行矩阵压缩,减少数组input指定的维度dim,如果dim不指定,则删除所有大小为1的维度。举例:如果 input 的形状为 (A×1×B×C×1×D),那么返回的tensor的形状则为 (A×B×C×D)。
当给定 dim 时,那么只在给定的维度(dimension)上进行压缩操作,注意给定的维度大小必须是1,否则不能进行压缩。举例:如果 input 的形状为 (A×1×B),squeeze(input, dim=0)后,返回的tensor不变,因为第0维的大小为A,不是1;squeeze(input, 1)后,返回的tensor将被压缩为 (A×B)。
torch.squeeze
torch.unsqueeze(input, dim) → Tensor
torch.unsqueeze的作用是升维,在指定的dim位置增加一个维度,dim的取值范围是[-input.dim() - 1, input.dim() + 1]。举例:两行三列的数组A维度为(2,3),那么这个数组就有三个位置可以增加维度,分别是( [位置0] 2,[位置1] 3 [位置2] )或者是 ( [位置-3] 2,[位置-2] 3 [位置-1] ),如果执行torch.unsqueeze(A,1),数据的维度就变为了(2,1,3)。
squeeze_和unsqueeze_
squeeze_和unsqueeze_与squeeze和unsqueeze的区别在于是否改变原来张量。加上下划线将会直接改变原始张量,否则不直接改变原始张量。