PyTorch深度学习基础之Tensor的变换、拼接和拆分

本文详细介绍了PyTorch中Tensor的几种关键操作,如形状变换(reshape,view)、轴操作(squeeze,unsqueeze)、转置(transpose)、矩阵拼接(cat,stack)和拆分(split,chunk),强调了它们之间的异同和适用场景。
摘要由CSDN通过智能技术生成

PyTorch提供了大量的对Tensor进行操作的函数或方法,这些函数内部使用指针实现对矩阵的形状变换,拼接,拆分等操作,使得我们无须关心Tensor在内存的物理结构或者管理指针就可以方便且快速的执行这些操作。

Tensor.nelement(),Tensor.ndimension(),ndimension.size()可分别用来查看矩阵元素的个数,轴的个数(维度数))以及维度,属性Tensor.shape也可以用来查看Tensor的维度。

在PyTorch中,Tensor.reshape和Tensor.view都能被用来更改Tensor的维度。

它们的区别在于,Tensor.view要求Tensor的物理存储必须是连续的,否则将报错,而Tensor.reshape则没有这种要求。 但是,Tensor.view返回的一定是一个索引,更改返回值,则原始值同样被更改,Tensor.reshape返回的是引用还是拷贝是不确定的。

它们的相同之处都接收要输出的维度作为参数,切输出的矩阵元素个数不能改变,可以在维度中输入-1,PyTorch会自动推断它的数值。

建议所有情况下使用reshape

torch.squeeze和torch.unsqueeze用来给Tensor去掉和添加轴(维度)。

torch.squeeze去掉维度为1的轴

torch.unsqueeze用于给Tensor的指定位置添加一个维度为1的轴

torch.t和torch.transpose用于转置二维矩阵。

这两个函数只接收二维Tensor,torch.t是torch.transpose的简化版。

转置矩阵

将矩阵的行列互换得到的新矩阵称为转置矩阵,转置矩阵的行列式不变。

torch.t和torch.transpose用于转置二维矩阵。

这两个函数只接收二维Tensor,torch.t是torch.transpose的简化版。

对于高维度Tensor,可以使用permute方法来变换维度。

PyTorch提供了torch.cat和torch.stack用于拼接矩阵。

torch.cat(tensors, dim): tensors里不同张量对应的待拼接维度的size可以不一致,但是其他维度的size要保持一致。

torch.stack(tensors, dim):tensors里所有张量的维度要保持一致,否则会报错

区别: torch.cat会在dim的维度上进行合并,不会扩展出新的维度。

torch.stack则会在dim的维度上拓展出一个新的维度,然后进行拼接,该维度的大小为tensors的个数。

torch.split和

torch.chunk用于拆分矩阵。

torch.chunk(input, chunks, dim):

chunks是均匀分割的份数,如果在进行分割的维度上的size不能被chunks整除,则最后一份tensor会略小(也可能为空)。

torch.split(input, split_size_or_sections, dim=0):

torch.split()可以说是torch.chunk()的升级版,它不仅可以按份数均匀分割,还可以按特定的方案进行分割。 如果第二个参数是分割份数,这就和torch.chunk()一样了;第二种是分割方案,是一个list类型的数据,待分割的张量将会被分割为len(list)份,每一份的大小取决于list中的元素。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值