Group Convolution 分组卷积

Group Convolution 分组卷积GroupConvolution分组卷积最早见于AlexNet——2012年Imagenet的冠军方法,GroupConvolution被用来切分网络,使其在2个GPU上并行运行,AlexNet网络结构如下:ConvolutionVSGroupConvolution如果输入featuremap尺寸为C∗H∗W,卷积核有N个,输出featuremap与卷积核的数量相同也是N,每…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

Group Convolution分组卷积
最早见于AlexNet——2012年Imagenet的冠军方法,Group Convolution被用来切分网络,使其在2个GPU上并行运行,AlexNet网络结构如下:
在这里插入图片描述

Group Convolution 原理

如果输入feature map尺寸为 C ∗ H ∗ W C*H*W CHW,卷积核有N个,输出feature map与卷积核的数量相同也是N,每个卷积核的尺寸为 C ∗ K ∗ K C*K*K CKK,N个卷积核的总参数量为 N ∗ C ∗ K ∗ K N*C*K*K NCKK。如下图所示,传统卷积方法和分组卷积方法。
在这里插入图片描述
Group Convolution,则是对输入feature map进行分组,然后每组分别卷积。其实也就是,原本应该是 C ∗ H ∗ W C*H*W CHW 的图片,用N个传统的卷积核 C ∗ K ∗ K C*K*K CKK,就可以生成 N ∗ H ∗ W N*H*W NHW(假设经过池化,图片尺寸不变)这样其实,是一个通道为C来进行整体卷积生成一个图片。而分组卷积,是一个通道为 C G \frac{C}{G} GC来进行整体卷积生成一个图片。
具体来说就是,假设输入feature map的尺寸仍为 C ∗ H ∗ W C*H*W CHW,输出feature map的数量为N个,如果设定要分成G个groups,则每组的输入feature map数量为 C G \frac{C}{G} GC,每组的输出feature map数量为 N G \frac{N}{G} GN,每个卷积核的尺寸为 C G ∗ K ∗ K \frac{C}{G}*K*K GCKK,卷积核的总数仍为N个,每组的卷积核数量为 N G \frac{N}{G} GN,卷积核只与其同组的输入map进行卷积,卷积核的总参数量为 N ∗ C G ∗ K ∗ K N∗\frac{C}{G}*K*K NGCKK,可见,总参数量减少为原来的 1 G \frac{1}{G} G1

Group Convolution的用途

  1. 减少参数量,分成G组,则该层的参数量减少为原来的 1 G \frac{1}{G} G1
  2. Group Convolution可以看成是structured sparse,每个卷积核的尺寸由 C ∗ K ∗ K C*K*K CKK 变为 C G ∗ K ∗ K \frac{C}{G}*K*K GCKK,可以将其余 ( C − C G ) ∗ K ∗ K (C−\frac{C}{G})*K*K (CGC)KK的参数视为0,有时甚至可以在减少参数量的同时获得更好的效果(相当于正则)。

参考文献
https://www.cnblogs.com/shine-lee/p/10243114.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/213579.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Redis(2.8版本)配置文件参数中文详解

    Redis(2.8版本)配置文件参数中文详解

  • python上的表白代码_用Python实现表白代码

    python上的表白代码_用Python实现表白代码这篇文章带大家实现表白代码看过很多用批处理写的表白,就想着用Python实现一个实现用的是tkinter点击关闭按钮无法关闭defcloseWindow():messagebox.showinfo(title=”警告”,message=”关不掉吧,气不气”)return点击不喜欢的事件defnoLove():no_love=Toplevel(window)no_love.geometr…

    2022年10月14日
  • LoadRunner使用教程

    LoadRunner使用教程1.了解Loadrunner1.1 LoadRunner 组件有哪些?LoadRunner 包含下列组件:➤ 虚拟用户生成器用于捕获最终用户业务流程和创建自动性能测试脚本(也称为虚拟用户脚本)。➤ Controller 用于组织、驱动、管理和监控负载测试。➤ 负载生成器用于通过运行虚拟用户生成负载。➤ Analysis 有助于您查看、分析和比较性能结果。➤ Launch

  • JavaScript如何将Unit8Array图片数据转换为JPG图片

    JavaScript如何将Unit8Array图片数据转换为JPG图片网页端JavaScript如何将Unit8Array图片数据转换为JPG图片

  • ADC RF中频采样 Vivado Verilog 联合 matlab 进行带通滤波器设计与仿真

    ADC RF中频采样 Vivado Verilog 联合 matlab 进行带通滤波器设计与仿真1.滤波器参数计算RF中频信号的频率范围为70MHz±2MHz,采样频率为40.625MHz。采样后信号的频谱是原信号频谱以40.625MHz为周期的频谱搬移,根据奈奎斯特采样定理,40.625MHz采样率的奈奎斯特采样区为[N*20.3125,(N+1)*20.3125]MHz(N为自然数)。频谱搬移在第一奈奎斯特采样区为11.25MHz±2MHz(负频率向右的两次频移)。所以滤波器的通带需要设计为9.25MHz~13.25MHz通过的带通滤波器。2.通过matlab的fdatool工具进行滤波器

  • 静态内部类和内部类的区别_内部类不能定义为抽象类

    静态内部类和内部类的区别_内部类不能定义为抽象类今天稍微复习一下静态内部类和内部类的相关知识,平常很少用静态内部类静态内部类,不能访问外部类的非静态成员静态内部类不需要创建外部类的对象就可访问(外部类名.内部类比如newMyMain.Person().display();就创建了静态内部类对象)静态内部类可以有public、protected、默认的、private等多种类型(这个功能我倒是从来没听说,通过实验的确ok…

    2022年10月11日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号