一般的卷积是在所有的输入特征图上做卷积,可以说是全通道卷积,是一种通道密集连接方式(channel dense connection);

分组卷积(Group convolution)是将输入层的不同特征图进行分组,然后采用不同的卷积核再对各个组进行卷积,这样可以降低卷积的计算量,但不利于通道组之间的信息流通,因此,与常规卷积相比,分组卷积是一种通道稀疏连接方式;

为了克服分组卷积带来的副作用,ShuffleNet v1 中提出了channel shuffle操作:对group convolution之后的特征图进行“重组”,这样可以保证下一步group convolution的输入来自不同的组,因此信息可以在不同组之间流转。

其实就是打乱原有特征顺序再进行重组:首先确定自己的特征图通道数多少,再确定组数多少,然后将通道分组后作为输入(input)就可以了。
在程序上实现channel shuffle流程:
假定将输入层分为 g 组,总通道数为 g × n :

import torch
def channel_shuffle(x, groups):batch_size, num_channels, height, width = x.size()channels_per_group = num_channels // groupsprint(channels_per_group)# reshape# b, c, h, w =======>  b, g, c_per, h, wx = x.view(batch_size, groups, channels_per_group, height, width)x = torch.transpose(x, 1, 2).contiguous()# flattenx = x.view(batch_size, -1, height, width)return xa = torch.randn(1,15,3,3) #1x15x3x3
print(a.shape)
groups = 3
x = channel_shuffle(a, 3)
print(x.shape)

channel shuffle通道洗牌相关推荐

  1. shuffle算法c语言,C#Shuffle算法(洗牌算法、抽样算法)

    Fisher-Yates Shuffle算法 1.创建一个新的list 2.随机取出当前0-list.Count其中一个数 3.把老list当前随机数位置添加到新list 4.老list删除这个数 5 ...

  2. 这或许是讲解Knuth(Shuffle)洗牌算法最好的文章

    1. 前言 看问题,洗牌,显然是一个随机算法了.随机算法还不简单?随机呗.把所有牌放到一个数组中,每次取两张牌交换位置,随机 k 次即可. 如果你的答案是这样,通常面试官会进一步问一下,k 应该取多少 ...

  3. js打乱数组内元素顺序(Fisher–Yates shuffle洗牌算法)

    如何将数组内元素顺序打乱呢?这里小shy向大家介绍一种算法. Fisher–Yates shuffle:洗牌算法. 通俗理解: 先将数组最后一位元素作为参考点,将这个参考点和数组其他位置的元素(使用随 ...

  4. 随机洗牌算法之Knuth-Durstenfeld Shuffle

    问题 设计一个公平的洗牌算法 问题分解 首先,必然明确这是一个随机算法 其次,要考虑公平 问题剖析 关于随机 看到随机我们大多数时候想起来的是,把所有的数都放到一个数组里,每次取两个数进行交换,随机 ...

  5. Channel Shuffle类

    ShuffleNet 中引入了 channel shuffle, 用来进行不同分组的特征之间的信息流动, 以提高性能.而Detectron2使用的pytorch版本一般较低,没有channel shu ...

  6. 洗牌、发牌算法 (打乱扑克牌顺序)

      #include <stdio.h> #include <stdlib.h> #include <time.h> int  d[6]; int  i,n,a,b ...

  7. R语言构造扑克牌自动发牌,洗牌

    在R语言构建自动洗牌,发牌 要求:自动洗牌.发牌 任务一:创建一副牌.学会如何使用R的数据类型和数据结构. 任务二:编写发牌和洗牌的函数.学习从一个数据集中抽取想要的数值. 首先需要创建一副牌(不包括 ...

  8. Unity | 三种洗牌算法

    拓展资料:C#Shuffle算法(洗牌算法.抽样算法) - 简书 代码: using System.Collections.Generic; using UnityEngine;/** * Write ...

  9. python实现洗牌算法_洗牌算法及 random 中 shuffle 方法和 sample 方法浅析

    对于算法书买了一本又一本却没一本读完超过 10%,Leetcode 刷题从来没坚持超过 3 天的我来说,算法能力真的是渣渣.但是,今天决定写一篇跟算法有关的文章.起因是读了吴师兄的文章 <扫雷与 ...

最新文章

  1. WebService(1)名词了解
  2. mysql里guest用户_MySQL用户权限分配
  3. MPDU 和 MSDU 的区别及关系
  4. ButtonRenderer
  5. 使用eclipse快速set/get
  6. android 安装卸载应用提醒_Android程序使用代码的安装和卸载!!!
  7. indesign拖进去颜色变灰_在 InDesign 中管理颜色
  8. Facebook的图片搜索技术揭秘
  9. 记一次自动提醒钉钉机器人的诞生
  10. [转]什么是UAT测试?
  11. VC++ 设置桌面壁纸
  12. matlab-液压阀仿真
  13. STM32单片机Flash模拟EEPROM
  14. 下载Android5.1源代码
  15. oracle oem登录xdb,XDB sys_nc_oid$递归调用的案例一则
  16. 互联网广告定价策略与算法
  17. 力扣刷题 DAY_80 贪心
  18. OLTP和OLAP有何区别?
  19. 网络上公开的华为一面、二面、三面、四面、五面过程的总结
  20. Multi-UA V Cooperative Exploringfor the Unknown Indoor EnvironmentBased on Dynamic Target Tracking翻译

热门文章

  1. Gradle 7.0+发布Gradle插件到私有maven仓库笔记
  2. 省级职称论文发表有没有字数的要求
  3. 回溯算法---四色图着色
  4. 视觉SLAM-回环检测
  5. CN2GIA香港、美国云服务器:三网快速云服务器怎么选择?
  6. 从事网络安全工作一定要科班出身吗?
  7. 2001-2009年日语能力考试(三级) 真题听力
  8. select Java Aplication ,eclipse弹出窗口
  9. php字符串的查找和替换
  10. 店铺管理也要996!和996相比,选个靠谱的店铺销售管理软件更重要