【无标题】

在这里插入图片描述

二维tensor

x = torch.arange(1,7).view(2,3)
#tensor[[1,2,3],
#		[4,5,6]]
x.permute(1,0)
#tensor[[1,4],
#		[2,5],
#		[3,6]]
# 二维的permute 类似于矩阵的转置

三维tensor

x = torch.range(1,24).view(2,3,4)
>>> x
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.]]])

x.permute(0,2,1)

x.permute(0,2,1)    就是转置操作  ==========》    x[i][j][k]-->x[i][k][j]
x 的值:
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.]]])
>>> x.permute(0,2,1)		# 类似于转置操作  【2,3,4】-》【2,4,3】
tensor([[[ 1.,  5.,  9.],
         [ 2.,  6., 10.],
         [ 3.,  7., 11.],
         [ 4.,  8., 12.]],

        [[13., 17., 21.],
         [14., 18., 22.],
         [15., 19., 23.],
         [16., 20., 24.]]])

x.permute(0,2,1)

x.permute(0,2,1)    ==========》    x[i][j][k]-->x[k][i][j]
x 的值:
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.]]])
>>> x.permute(2,0,1)		# 【2,3,4】-》【4,2,3】
tensor([[[ 1.,  5.,  9.],
         [13., 17., 21.]],			# x[0]

        [[ 2.,  6., 10.],
         [14., 18., 22.]],

        [[ 3.,  7., 11.],
         [15., 19., 23.]],

        [[ 4.,  8., 12.],
         [16., 20., 24.]]])

x.permute(1,0,2)

x.permute(1,0,2)    ==========》    x[i][j][k]-->x[j][i][k]
x 的值:
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.]]])
>>> x.permute(1,0,2)
tensor([[[ 1.,  2.,  3.,  4.],
         [13., 14., 15., 16.]],

        [[ 5.,  6.,  7.,  8.],
         [17., 18., 19., 20.]],

        [[ 9., 10., 11., 12.],
         [21., 22., 23., 24.]]])

目标检测过程中最常用的是:src.flatten(2).permute(2, 0, 1)
【其中颜色的不同 代表了特征图中的不同位置。将特征图 进行维度转换,就可以的得到HW * B * C , 是transformer中常见的维度转换操作。这样做后续 分多头注意力的时候 ,是在通道的维度分开 ,每一个 头 处理的是一些通道的特征。】

在这里插入图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值