当前位置: 首页 > news >正文

算法面经手撕系列(2)--手撕BatchNormlization

BatchNormlization

  BatchNormlization的编码流程:

  1. init阶段初始化 C i n C_in Cin大小的scale向量和shift向量,同时初始化相同大小的滑动均值向量和滑动标准差向量;
  2. forward时沿着非channel维度计算均值、有偏方差
  3. 依据得到均值和有偏方差进行归一化
  4. 对归一化的结果进行缩放和平移

代码

 代码如下:

class BN(nn.Module):def __init__(self,C_in):super(BN,self).__init__()self.scale=nn.Parameter(torch.ones(C_in).view(1,-1,1,1))self.shift=nn.Parameter(torch.zeros(C_in).view(1,-1,1,1))self.momentum=0.9self.register_buffer('running_mean',torch.zeros(C_in).view(1,-1,1,1))self.register_buffer('running_var',torch.zeros(C_in).view(1,-1,1,1))self.eps=1e-9def forward(self,x):if self.training:N,C,H,W=x.shapemean=x.mean(dim=[0,2,3],keepdim=True)var=x.var(dim=[0,2,3],keepdim=True,unbiased=False)x=(x-mean)/torch.sqrt(var+self.eps)self.running_mean=self.momentum*self.running_mean+(1-self.momentum)*meanself.running_var=self.momentum*self.running_var+(1-self.momentum)*varelse:x=(x-self.running_mean)/torch.sqrt(self.running_var+self.eps)return xif __name__=="__main__":input=torch.rand(10,3,5,5)model=BN(3)res=model(input)print('cool')

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 基于鸿蒙API10的RTSP播放器(二:视频切换实现)
  • 类的继承性和多态性
  • 微生物分类检测系统源码分享
  • 004: VTK读入数据---vtkImageData详细说明
  • Go语言中的链表与双向链表实现
  • 食品分类2检测系统源码分享
  • 【Vue嵌套数据中,实现动态表头和内容】
  • 《职教论坛》
  • Angular面试题一
  • 闯关leetcode——21. Merge Two Sorted Lists
  • Java面试篇基础部分-Java中常用的I/O模型
  • Rust 简介与安装
  • leetcode 每日一题
  • 【C++】—— list 的了解与使用
  • 使用3-8译码器实现全减器(Verilog详细解析设计篇)
  • php的引用
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【知识碎片】第三方登录弹窗效果
  • C++11: atomic 头文件
  • httpie使用详解
  • Javascript Math对象和Date对象常用方法详解
  • js递归,无限分级树形折叠菜单
  • JS字符串转数字方法总结
  • Redis学习笔记 - pipline(流水线、管道)
  • spring boot 整合mybatis 无法输出sql的问题
  • Swoft 源码剖析 - 代码自动更新机制
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • Vultr 教程目录
  • 阿里云购买磁盘后挂载
  • 测试开发系类之接口自动化测试
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 复杂数据处理
  • 精彩代码 vue.js
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 前端学习笔记之观察者模式
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 鱼骨图 - 如何绘制?
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​【已解决】npm install​卡主不动的情况
  • #include
  • (06)Hive——正则表达式
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (4)事件处理——(7)简单事件(Simple events)
  • (7) cmake 编译C++程序(二)
  • (BAT向)Java岗常问高频面试汇总:MyBatis 微服务 Spring 分布式 MySQL等(1)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (JS基础)String 类型
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (十七)Flink 容错机制