通道洗牌的思想神了

大家好啊,我是董董灿。

昨天写了一篇关于分组卷积的文章:分组卷积的思想神了,然后有同学希望多了解下通道洗牌。

我个人感觉,通道洗牌这个算法,或者说这个思想,可以称之为小而精,并且是实际解决了大问题的经典算法。

今天就来一起看看。

1、通道洗牌的背景

分组卷积(Group Convolution)那篇文章中提到,分组卷积的好处是可以将一个大卷积在通道维度拆分成多个小卷积,来实现每个小卷积的并行计算,从而减少内存占用,提高性能。

但是分组卷积会带来一个副作用,那就是组与组之间的特征无法交互和融合,会使得整个神经网络最终的训练/推理效果不尽如人意。

怎么办呢?人们就想到了洗牌这一算法。

通道洗牌主要就是为了解决分组卷积带来的副作用,也就是组间的特征无法交互融合。

这里举一个例子说明一下这个问题。

一个年级共150人,如果你是年级主任,你肯定希望这150人的成绩都能达到最好,成绩好的帮助成绩差的,大家互相帮助,一起进步。

最理想的情况是,每个人都可以和其他人互帮互助,这样,150人中成绩最差的同学,也可以和成绩最好的同学交流,来提高自己的成绩。

但是,一个不好的现象便是,我们通常会将150人分班学习,假设150人分了3个班,每个班50人。

结果便是每个班内的同学交流很多,而班与班之间的交流却很少。

假设成绩最差的同学在3班,称他为学渣A,3班成绩最好的同学称他为学霸B,而3个班150人中的年级第一在1班,称他为学神C。

很显然,学渣A和学神C是很难在一起交流学习的,因为不在一个班。

而学渣A能够到的天花板,也就是本班的学霸B,而学霸B可能比学神A的平均成绩少20分。

这就会导致班与班之间学习发展不平衡。

一个很容易想到的解决办法就是学生走班制,让每个班的学生可以有机会去其他班上课。使3个班的平均成绩尽可能的接近。

通道洗牌就是类似于学生走班制。

在进行分组卷积之前,经过通道洗牌操作,可以把通道内的数据(150个学生)随机打乱或按一定规则打乱,然后分为三组。

记住每次计算分组卷积前都这么做,可以很有效的确保每次分到三个班的学生都是不同的,从而实现整体的信息交流。

图片

2、如何完成洗牌

利用程序完成洗牌有很多种方法,比如随机洗牌等,但一个更简单的完成洗牌的动作便是转置

我们假设有以下数据,用下图左侧图来表示,分组前橙色和蓝色是不在一个组里的。

经过对原始数据做转置(行与列互换)之后,可以看到每一组中都包含三种颜色的数据,也就完成了转置前不同组间的信息交流。

对于卷积的通道而言,利用转置来完成通道洗牌也很简单。

假设通道数为 c,分组卷积将通道数分为 g 组,每组 n 个特征,那么可以得到 c = g * n。

利用程序完成洗牌的逻辑便是,先将一维通道数据 reshape 成 (g, n) 的二维数据,然后转置变成 (n, g) 的数据,然后再 reshape 回一维数据,完成分组和通道洗牌操作。

伪代码如下

c = c.reshape((g, n))group_c = np.transpose(c, (1, 0))new_c = group_c.reshape((n, g))

三行代码就可以完成通道洗牌的操作,是不是很简单?

关于卷积的其他文章,感兴趣的小伙伴可以查看:

面试官问,1x1 的卷积有什么用?

空洞卷积 —— 给神经网络装上"放大镜"

5分钟入门卷积算法

5分钟理解什么是卷积的特征提取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/173201.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Chatgpt网页版根据关键词自动批量写原创文章软件【可多开自动登录切换gpt账号】

Chatgpt网页版根据关键词自动批量写原创文章软件介绍: 1、需要放入GPT账号和密码放入在账号库.txt里,可以放入多组账号密码,账号切换轮流使用。 2、可以自定义回答指令,也可多个回答指令随机切换。 3、可以给关键词加双标题&…

听GPT 讲Rust源代码--library/std(6)

题图来自 Why you should use Python and Rust together[1] File: rust/library/std/src/sys/unix/thread_parking/netbsd.rs 文件netbsd.rs位于Rust源代码的rust/library/std/src/sys/unix/thread_parking目录下。该文件是Rust标准库中用于Unix操作系统的线程等待和唤醒机制的…

CAN接口的PCB Layout规则要求汇总

随着时代高速发展,控制器局域网(CAN)接口的应用越来越广泛,尤其是在汽车电子、航空航天等领域中发挥着重要作用,为了确保CAN接口的可靠性和稳定性,工程师必须在其PCB Layout方面下功夫,下面来看…

git clone 遇到了 early EOF index-pack failed 问题

问题 由于仓库包含了很多文件,仓库过大,导致clone的时候一直报错: 解决方案 注意:过程中需要耐心等待,如果遇到失败,可以多尝试几遍。 压缩目标仓库文件 compression 是压缩的意思,从 clo…

拉扎维模拟CMOS集成电路设计西交张鸿老师课程P10~13视频学习记录

--------------------------------------------------------------------------------------------------------------------------------- p10 短沟道,除了沟长调,还可能出现速度饱和问题; 但是在拉扎维这本书里面没有考虑这个问题&#…

python安装库

查看安装的库 按下开始r 输入cmd 查看python版本 查看python所有库 安装一个库 在pycharm里面查看库文件 在pycharm里面安装库 在anaconda里面安装库和查看库

SpreadJS 16.2.2 + GcExcel 6.2.3 相结合,还有更强的吗

SpreadJS GcExcel 相结合,还有更强的吗? 内容摘自互联网,,, 设计思路篇 Excel是我们日常办公中最常用的电子表格程序,不仅可满足报表数据的计算需求,还可提供绘图、数据透视分析、BI和Visual…

GPT的广泛应用会对互联网公司造成挑战吗?——探讨GPT在实际使用中的应用和影响

文章目录 前言GPT 技术的背景和发展历程GPT 技术对互联网行业的影响GPT 技术在互联网行业中的应用GPT 技术对于用户隐私和数据安全的威胁GPT 技术对于人类工作岗位的影响加强 AI 伦理和监管加强 AI 安全性和隐私保护推动 AI 创新和发展,避免过度依赖 AIGPT 技术是一…

C++设计模式_15_Proxy 代理模式

Proxy 代理模式也是属于“接口隔离”模式,通过增加一层间接层来解决问题的模式。 文章目录 1. 动机( Motivation)2. 模式定义3. 结构( Structure )4. 代码演示Proxy 代理模式4.1 常规方法4.2 Proxy 代理模式 5. 要点总结6. 其他参考 1. 动机( Motivation) 在面向对…

基于AI与物联网技术的智能视频监控系统架构剖析

智能视频监控系统正逐渐成为我们日常生活和工作中不可或缺的一部分。基于物联网的智能监控系统架构为我们在各个领域提供了更高效、智能化和安全的监控解决方案。本文将以旭帆科技EasyCVR视频监控云平台为例,介绍基于AI、物联网的智能监控系统的架构,并探…

【Linux】:进程程序替换

进程程序替换 一.替换原理二.替换函数三.exec类函数 一.替换原理 用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程的用户空间代码和数据完全…

STM32 TIM(四)编码器接口

STM32 TIM(四)编码器接口 编码器接口简介 Encoder Interface 编码器接口 编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的…

Java中级面试题记录(四)

一面面试题 1.Innodb的行数据存储模式 https://baijiahao.baidu.com/s?id1775090633458928876&wfrspider&forpc 2.行数据包含哪些信息? https://baijiahao.baidu.com/s?id1775090633458928876&wfrspider&forpc 3.MySQL在进行存储VARCHAR的时…

python:使用Scikit-image对遥感影像进行尺度空间特征提取(scale-space)

作者:CSDN @ _养乐多_ 在本博客中,我们将介绍如何使用Scikit-Image来进行尺度空间特征提取,并且提供一个示例代码,演示了如何在单波段遥感图像上应用这些方法。 尺度空间特征提取是一种处理图像的方法,旨在检测不同尺度下的特征和结构。这对于处理遥感图像非常有用,因为…

Hexo + NexT 博客评论系统(Valine)配置小记

这几天刚配置了船新的 Hexo 博客,然后看到使用的 NexT 主题支持很多评论系统。我尝试配置了一下,发现里面坑太多了,真的挺费周章。于是想水一篇分享一下~ 1. 为什么不是…… NexT 主题一共支持如下的几个评论系统: 其中我觉得最…

2023年第四届MathorCup大数据竞赛(A题)|坑洼道路检测和识别|数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为2021年美国大学生数学建模比赛的O奖得主,我为大家提供了一套优秀的解题思路,让你轻松应对各种难题。 希望这些想法对大家的做题有一定的启发和借鉴意义。 让我们来…

UE VaRest 从本地读取写入JSON(蓝图)

写入简单JSON到本地项目目录 写入位置:项目根目录 文件名:writjson.Json 写入内容:{“ke1”:“key1value”,“ke2”:“ke2value”} 从本地项目目录加载json 加载位置:项目根目录 文件名:writjson.Json 加载内容&…

React-快速搭建开发环境

1.安装 说明:react-excise-01是创建的文件名 npx create-react-app react-excise-01 2. 打开文件 说明:we suggest that you begin by typing:下面即是步骤。 cd react-excise-01 npm start 3.显示

python—openpyxl操作excel详解

前言 openpyxl属于第三方模块,在python中用来处理excel文件。 可以对excel进行的操作有:读写、修改、调整样式及插入图片等。 但只能用来处理【 .xlsx】 后缀的excel文件。 使用前需要先安装,安装方法: pip install openpyxl…

RabbitMQ (4)

RabbitMQ (4) 文章目录 1. 死信的概念2. 死信的来源3. 死信代码案例3.1 TTL 过期时间3.2 超过队列最大长度3.3 拒绝消息 前言   上文我们已经学习完 交换机 ,知道了几个交换机的使用 ,下面我们来学习一下 死信队列 1. 死信的概念 先从概念解释上搞清楚这…