在PyTorch中,可以对Tensor进行操作的一些函数:view、permute、squeeze、unsqueeze等
tensor是深度学习中非常实用的数据类型,PyTorch包含了一些可以操作tensor的工具,比如重塑、维度变换、维度压缩(不考虑内存底层的具体情况),这些操作都不改变tensor原本的shape。
1. 查看Tensor的shape,可以用tensor.size()或tensor.shape
2. 重塑tensor,tensor.view(),只改变显示的视图,不改变原来的shape
此操作相当于把tensor展开成一维数据(数据存储地址是连续的),然后映射一个新的shape,
torch.Tensor()区别于torch.tensor(),当输入数值是整型时,前者生成浮点数,后者生成整数
3. 维度变换,tensor.permute(),交换维度的位置,同样不会改变原有的shape,
4. 维度压缩,tensor.squeeze(),去掉大小为1的维度,不会改变原有的shape,
5. 维度扩展,tensor.unsqueeze(),展开指定的某一维度,对其增加1,不会改变原有的shape,
6. 扩展tensor大小,tensor.expand(),被扩展的维度重复该维度已有的数值,只有该维度的大小是1时才能被扩展,
还可以在第0维增加一个维度,
7. tensor展平,torch.flatten(),将指定的几个维度展开成一个维度,其他维度不变,还有torch.nn.Flatten(),
torch.flatten(input, start_dim=0, end_dim=-1) # 从第start_dim维开始,到第end_dim维结束,将这些维展平成一个维度
8. 拼接tensor,torch.cat(),将2个tensor沿某个维度拼接成1个tensor,除要拼接的维度外,其他维度大小要相同
9. 堆叠tensor,torch.stack(),增加1个维度,并沿该维度堆叠,两个tensor的shape完全相同才能堆叠,
10. 拆分tensor,tensor.split(),沿指定维度,按大小比例来拆分,其他维度不变
11. 均等拆分tensor,tensor.chunk(),当维度大小不能被等分份数整除时,可能不会报错,但结果可能与预期不同,