【CNN记录】pytorch中shuffle_channel

ChannelShuffle是PyTorch中用于通道重组的操作,它将输入数据的通道分为指定数量的组,并对每组内的元素进行重新排序。例如,给定一个4x2x2的输入tensor,当groups设为2时,会先将通道reshape为2x2x2,然后进行转置,最后再reshape回原来的形状,从而实现通道的混洗。此操作常用于深度可分离卷积网络中。
摘要由CSDN通过智能技术生成

shuffle_channel

torch.nn.ChannelShuffle(groups)

将输入data的通道混洗重排,把所有通道分成group个组,并通过逐一从每个组中选择元素来组成新的顺序。

 

example:

input_data = torch.arange(0,16).view(1,4,2,2)

输入
tensor([[[[ 0,  1],
          [ 2,  3]],

         [[ 4,  5],
          [ 6,  7]],

         [[ 8,  9],
          [10, 11]],

         [[12, 13],
          [14, 15]]]])

channel_shuffle = nn.ChannelShuffle(2) #分成2组
output = channel_shuffle(input_data) #运行
结果
tensor([[[[ 0,  1],
          [ 2,  3]],

         [[ 8,  9],
          [10, 11]],

         [[ 4,  5],
          [ 6,  7]],

         [[12, 13],
          [14, 15]]]])

依据这个功能,可以由几个op融合成shuffle_Channel 

reshape1->transpose->reshape2

reshape1把channel分成对组

transpose组进行转置交换

reshape2组合并

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值