pytorch中维度扩展和维度交换-expand,repeat,permute,transpose

本文详细介绍了PyTorch中张量的维度扩展、重复和交换操作,包括expand、repeat和permute、transpose的使用方法及注意事项。通过实例演示了如何改变张量形状,以满足深度学习模型输入需求。

维度扩展

expand
a=torch.randn(1,32,1,1)
a.expand(4,32,14,14)
a.shape
torch.Size([4,32,14,14])

expand操作是在将该维度扩展成相应的维度,基于原来数据的基础上,推荐使用!注意,要扩展的维度必须是1维的!

repeat
a=torch.randn(1,32,1,1)
a.repeat(4,32,14,14).shape
a.shape

torch.Size([4,1024,14,14])
torch.Size([1,32,1,1])

repeat操作是将原有数据复制出来,在相应的维度上将数据复制多少份,原有的数据不变,耗内存,不建议使用!

维度交换

permute:
a=torch.rand(4,3,28,32)
a.permute(0,2,3,1).shape

torch.Size([4,28,32,3])

permute中的参数是要进行维度交换的tensor中的维度索引,就是将第几维度放在第0,1,2,3维度上

transpose
a=torch.rand(4,3,28,32)
a.transpose(1,3).shape

torch.Size([4,32,28,3])

transpose中只能是2个参数,表示哪两个维度进行交换!

PyTorch中的扩张维度操作可以使用`expand()`或`repeat()`函数实现。`expand()`函数将指定维度扩展为相应的维度大小,基于原来的数据。要注意的是,要扩展维度必须是1维的。而`repeat()`函数则是将整个张量在指定维度上进行复制。下面是一个示例: 对于扩张维度操作,可以使用`expand()`函数。例如,对于张量`a`的形状为`(1,32,1,1)`,可以通过`a.expand(4,32,14,14)`将第一个维度扩展为4,得到新的形状为`(4,32,14,14)`的张量。 而对于复制维度操作,可以使用`repeat()`函数。例如,对于张量`a`的形状为`(1,32,1,1)`,可以通过`a.repeat(4,32,14,14)`将整个张量在指定的维度上进行复制,得到新的形状为`(4,1024,14,14)`的张量。 另外,还可以使用`permute()`函数`transpose()`函数来交换张量的维度顺序。`permute()`函数根据参数中维度的索引,将对应的维度放在指定的位置上。`transpose()`函数则是将指定的维度进行转置。下面是一个示例: 对于交换维度顺序,可以使用`permute()`函数。例如,对于形状为`(4,3,28,32)`的张量`a`,可以通过`a.permute(1,3,2,0)`将第1个维度放在第0个位置,第3个维度放在第1个位置,第2个维度放在第2个位置,第0个维度放在第3个位置,得到新的形状为`(3,32,28,4)`的张量。 也可以使用`transpose()`函数来转置维度。例如,对于形状为`(4,3,28,32)`的张量`a`,可以通过`a.transpose(1,3)`将第1个维度第3个维度进行转置,得到新的形状为`(4,32,28,3)`的张量。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值