Pytorch踩坑之transpose与view

博客介绍了在实际应用中对张量维度进行变换常用的transpose和view方法。transpose方法是维度交换,有dim1和dim2两个参数;view方法是重新定义维度,参数size可为元组或列表。通过例子展示了两者区别,提醒应用时注意避免误用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在实际应用中,经常会遇到需要对张量维度进行变换的情况,经常用到的就是transpose方法和view方法。但是这两种方法有着本质的区别,使用错误会导致难以察觉的错误。

transpose方法

transpose方法可以理解为维度交换,也就是转置。它有两个参数dim1和dim2,意义很简单,即交换dim1和dim2两个维度。

view方法

view方法则可以理解成对张量重新进行维度定义,它只有一个参数size,但这个size可以是元组或者列表,表示重新进行定义的维度。

两者的区别

具体看一个例子。

import torch

a = torch.tensor([[[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9],
                   [10, 11, 12]]])
print(a.shape)

这里我们定义了一个张量a,它的维度是(1,4,3),然后对比一下两个方法的区别:

b = a.transpose(1, 2)
c = a.view((1, 3, -1))
print("Here is Tensor b:\n")
print(b)
print(b.shape)
print("Here is Tensor c:\n")
print(c)
print(c.shape)

输出结果如下图

对比结果
很明显,transpose方法对a的后两维进行了转置交换,而view方法则是以行序对所有元素重新设定维度。

因此在实际应用时一定要注意自己需要实现怎样的维度变换,是交换两个维度还是重新定义维度,一旦误用很难发现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值