Repvgg推理时融合BN

news2024/11/29 9:52:07

Batch Normalization是谷歌研究员于2015年提出的一种归一化方法,其思想非常简单,一句话概括就是,对一个神经元(或者一个卷积核)的输出减去统计得到的均值,除以标准差,然后乘以一个可学习的系数,再加上一个偏置,这个过程就完成了。

一般而言BN层是在训练是更新均值 μ \mu μ、方差 σ 2 \sigma^2 σ2 γ \gamma γ β \beta β。是一直在更新的。但是在推理的时候通常是要BN参数是固定的,均值方差是来自于训练样本的数据分布。(有想关注训练阶段BN层以及BN具体公式推导的可以观看吴恩达视频或者其他博客,此处就不再做详细介绍了)

因此在介绍BN融合时,训练阶段是conv+bn的构造,而在推理阶段才是convbn构造。接下来就简单介绍一下推理时convbn是如何进行的。

BN推理时怎么做

在推理时BN,计算公式可以变形为:
y i = γ x i − μ σ 2 + ε + β = x i γ σ 2 + ε + ( β − γ μ σ 2 + ε ) y_i=\gamma\dfrac{x_i-\mu}{\sqrt{\sigma^2+\varepsilon}}+\beta=x_i\dfrac{\gamma}{\sqrt{\sigma^2+\varepsilon}}+(\beta-\dfrac{\gamma\mu}{\sqrt{\sigma^2+\varepsilon}}) yi=γσ2+ε xiμ+β=xiσ2+ε γ+(βσ2+ε γμ)
而在方差均值都是固定值时,公式可以改写为
y i = a x i + b y_i = ax_i+b yi=axi+b
其中 a = γ σ 2 + ε , b = β − γ μ σ 2 + ε a=\dfrac{\gamma}{\sqrt{\sigma^2+\varepsilon}},b=\beta-\dfrac{\gamma\mu}{\sqrt{\sigma^2+\varepsilon}} a=σ2+ε γ,b=βσ2+ε γμ,接下来我们以一个三神经元作为输入的全连接网络为例进行过程分析,如下图:
在这里插入图片描述
首先我们未融合BN层的全连接层的输入为:
x i = w 1 ⋅ z 1 + w 2 ⋅ z 2 + w 3 ⋅ z 3 + c x_i=w_1\centerdot z_1+w_2\centerdot z_2+w_3\centerdot z_3+c xi=w1z1+w2z2+w3z3+c
其中c为偏置,那么全连接+BN层的输出则为:
y i = a x i + b = a ( w 1 ⋅ z 1 + w 2 ⋅ z 2 + w 3 ⋅ z 3 + c ) + b y_i=ax_i+b=a(w_1\centerdot z_1+w_2\centerdot z_2+w_3\centerdot z_3+c)+b yi=axi+b=a(w1z1+w2z2+w3z3+c)+b
也就是:
y i = a x i + b = a w 1 ⋅ z 1 + a w 2 ⋅ z 2 + a w 3 ⋅ z 3 + ( a c + b ) y_i=ax_i+b=aw_1\centerdot z_1+aw_2\centerdot z_2+aw_3\centerdot z_3+(ac+b) yi=axi+b=aw1z1+aw2z2+aw3z3+(ac+b)
而由于BN是一个线性的操作,也即一个缩放+一个偏移,也就完全可以把这个线性操作叠加到前面的全连接层或者卷积层。仅需将全连接层或者卷积层权重乘一个系数a,偏置从c变成ac+b就可以了。过程如右上图所示

在框架中进行融合的代码参考:AIZOO人工智能乐园
在此处需要注意的是融合BN仅限于Conv+BN或者是BN+Conv结构,中间不能加非线性层,例如Conv+ReLu+BN那就不行了。当然,一般结构都是Conv+BN+ReLu结构。而如何在部署的时候使用由于目前博主的水平未涉及暂不知,等以后操作过了进行更新。

Repvgg中使用

在这里插入图片描述
之所以要进行融合BN调研原因是因为在调研的时候遇到了Repvgg这篇文章,这篇文章有一个"结构重参数化"的思想,其具体过程如上图所示。
在Repvgg中推理过程会将三个分支进行合并融合,而在这过程中原文实验证明了将BN层和卷积层一起进行融合效果会更好。

本文参考链接:
进击的程序员
元峰
如有什么错误之处希望各位大佬给予指正,此文仅作个人记录所用,如有侵权请联系删除。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数字孪生|可视化图表之堆叠面积图

上一篇文章为大家介绍了分组条形图的相关内容,本文介绍的是堆叠面积图。 堆叠面积图是一种特殊的面积图,可以用来比较在一个区间内的多个变量。堆叠面积图和普通的面积图基本一样,唯一的区别就是堆叠面积图每个数据系列的起点都是基于前一个数…

再学C语言30:函数——ANSI C的函数原型

一、ANSI C关于函数原型的规则 ANSI C在函数声明中同事说明所使用的的参数类型,即在函数原型中声明返回值类型、参数、参数个数、参数类型 int function(int a, int b); // 形式一 int function(int, int); // 形式二// 以上两种形式的定义均满足规范要求 好…

基于无线通信物联网的水库安全监测系统

水库安全监测一直是我国防洪防汛工作的重点,库区的雨量、水位的实时监测,建立水库监测系统能够有效防止洪涝灾害的发生,确保水库和下游地区的安全。 物通博联推出的水库安全监测系统是基于无线通信物联网技术打造的系统平台,由雨…

路由器基础

交换机基本功能 1.基于源MAC地址学习2.基于目标MAC地址转发3.数据过滤4.防环 交换机基于MAC地址表进行转发,MAC地址表默认自动产生,MAC地址组成三元组:Mac地址、端口、VLAN。默认MAC条目信息存活时间为300s并且可以修改 泛洪(洪…

局域网主机状态管理工具LanNeighborManager

有鉴于以下两种需求,做了一个小工具,查看局域网内的IP占用情况及联通状态:1)在现场需要分配静态IP,但是不确定已经被占用的IP地址;2)查看当前局域网内当前活跃的IP地址。该工具的主要功能有&…

华宏转债上市价格预测

华宏转债基本信息转债名称:华宏转债,评级:AA-,发行规模:5.15亿元。正股名称:华宏科技,今日收盘价:17.68,转股价格:15.65。当前转股价值 转债面值 / 转股价格…

2023.1.2-1.18 AI行业周刊(第131期):程序员的艰辛和感悟

转眼间,还有两周不到的时间,就要到除夕了。今年的春节和元旦离得很近,只有二十多天的时间。 班上部门的同事,一个个也都开始阳康,回到工作岗位,做春节前产品的最后一次版本迭代。 一晃从去年三月份进入新…

3-计算字符串的编辑距离(华为机试)

题目 Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。编辑距离的算法是首先由俄国科学…

Bonitasoft认证绕过和RCE漏洞分析及复现(CVE-2022-25237)

一、漏洞原理 漏洞简述 Bonitasoft 是一个业务自动化平台,可以更轻松地在业务流程中构建、部署和管理自动化应用程序; Bonita 是一个用于业务流程自动化和优化的开源和可扩展平台。 Bonita Web 2021.2版本受到认证绕过影响,因为其API认证…

没有为请求的 URL 配置默认文档,并且没有在服务器上启用目录浏览

1、问题 使用asp.net mvc写了个网站&#xff0c;部署后出现&#xff1a; 没有为请求的 URL 配置默认文档&#xff0c;并且没有在服务器上启用目录浏览 这个问题 2、解决办法 网上搜了下&#xff0c;无非是两种方法&#xff1a; 1、在web.config中添加 <system.webServ…

概率论【合集】--猴博士爱讲课

重点章节 条件概率&#xff0c;期望等等 第一课 随机事件和概率 1/6 无放回类题目(一次摸多个) 例1.盒子里有3绿4红共7个小球&#xff0c;无放回的摸3个试求摸出1绿2红的概率例2.钱包里有3张100元&#xff0c;5张10元&#xff0c;3张5元的纸币&#xff0c;随机摸3张&#xff0…

excel图表美化:堆栈式柱状图让趋势变化更明显

平时大家都是怎么做图表的呢&#xff1f;是不是直接在Excel上点击插入图表&#xff0c;就完事儿了&#xff1f;虽然这样也能做出图表&#xff0c;但是必定没什么亮点&#xff0c;老板看久了&#xff0c;自然也就腻了&#xff01;我们每个人都想让自己的的图表看起来漂亮&#x…

BGP基础实验(1.10)

目标: 1、首先为所有路由器配置接口ip和环回 r1&#xff1a; [r1]int lo0 [r1-LoopBack0]ip add 1.1.1.1 24 [r1-LoopBack0]int gi 0/0/0 [r1-GigabitEthernet0/0/0]ip add 12.1.1.1 24 r2&#xff1a; [r2]int lo0 [r2-LoopBack0]ip add 2.2.2.2 24 [r2-LoopBack0]int gi …

怎么开发自己的微信小程序_微信小程序快速开发步骤

小程序开发除了专业人士会自己开发之外&#xff0c;就是外包开发和模板搭建这两种方法。 外包小程序开发需要持续不断地与外包团队沟通&#xff0c;投入的精力也不少&#xff0c;总体价格不低&#xff0c;基本在万元左右&#xff0c; 最适合新手的还是小程序模板搭建啦~ 微信怎…

JAVA---泛型

一、什么是泛型 Java的泛型 (generics) 是在JDK5中推出的新概念&#xff0c;在泛型推出之前&#xff0c;程序员需要构建一个元素为Object的集合&#xff0c;该集合能够存储任意的数据类型对象&#xff0c;而在使用该集合的过程中&#xff0c;需要程序员明确知道存储每个元素的数…

Qt OpenGL(07)通过递归细分绘制球面

文章目录Qt OpenGL通过递归细分逼近球面思路下面就是绘制的代码&#xff1a;Widget.cpp顶点着色器片段着色器Qt OpenGL通过递归细分逼近球面 在OpenGL中绘制球面&#xff0c;不是太简单的事情。因为球面和圆都不是OpenGL所支持的图元&#xff0c;因此我们将通过一种称为递归细分…

年货小史:最土年货中藏着最真实的烟火气

农历新年很快就要到了&#xff0c;这让我有些恍惚&#xff0c;觉得从前那个满是烟火的新年&#xff0c;仿佛已经是很遥远的事了。几家电商平台最近又开始了红红火火的年货节&#xff0c;上去转了转&#xff0c;几个平台看下来&#xff0c;拼多多的“年味”似乎最贴近记忆中的烟…

MySQL的锁机制之全局锁和表锁

文章目录前言一、全局锁全局锁的介绍以及使用全局锁的应用场景不加锁导致的危害加锁和其他方法对比二、表锁表锁的介绍以及使用表锁的应用场景前言 对mysql锁的总结学习&#xff0c;本文将围绕&#xff0c;加锁的概念&#xff0c;加锁的应用场景和优化&#xff0c;以及不加锁会…

【C进阶】第十四篇——字符串函数

strlen - 求字符串长度 函数介绍 模拟实现(三种方式) strcpy - 字符串拷贝 函数介绍 模拟实现 strcat - 字符串追加 函数介绍 模拟实现 strcmp - 字符串比较 函数介绍 模拟实现 strstr - 字符串查找 函数介绍 模拟实现 strtok - 字符串分割 函数介绍 strerror…

小黑周末惊心动魄进“村”赶考,周一继续拖着疲惫的身体来实习的leetcode之旅:968. 监控二叉树

小黑看完题解思路后代码 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def minCameraCover(self, root: …