PYTORCH疑惑系列--permute,view,shape

本文探讨了深度学习中维度转换的重要性,通过一个实验展示了torch库中的view、reshape和permute函数。实验使用了一个4x4的张量,并通过batch_x展示了它们的不同应用。view和reshape在多数情况下等效,它们按照指定形状重新构建张量,但可能在特定场景下破坏数据结构。相比之下,permute函数允许灵活地交换张量的维度,确保数据结构的完整性。
摘要由CSDN通过智能技术生成

在深度学习中经常出现维度转换操作,但维度转换很可能会打乱数据。这次我们设置一些实验去了解原理。

bs = 8
x = torch.tensor([
                [ [1, 2],[3, 4],[5, 6],[7, 8] ],
               [ [9, 10],[11, 12],[13, 14],[15, 16] ],
               [ [17, 18],[19, 20],[21, 22],[23, 24] ],
               [ [25, 26],[27, 28],[29, 30],[31, 32] ]
              ] )
batch_x = torch.cat([(x+i).unsqueeze(0) for i in range(bs)])

我们打印batch_xshape 和自身可以得到:

现在我们有个需求:将通道维度换算到最后一维 ,现在有几个函数可以使用view, reshapepermute

  • view:
  • reshape
  • permute
可以看出对于程序来说,reshape和view的效果是相同的。但他们仅仅是按照最后一维展开直接重新构建张量。当在某些特殊的场合时会破坏程序的数据构成。而permute可以按照原定的维度进行维度交换,不会发生这样子的错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值