batchnorm融合
conv-batch_norm 模块可以融合成一个conv模块.
参考链接:https://nenadmarkus.com/p/fusing-batchnorm-and-conv/
测试代码:
# conv 与bn融合demo
# https://nenadmarkus.com/p/fusing-batchnorm-and-conv/import ipdb
import torch
import torchvisiondef fuse_conv_and_bn(conv, bn):#对于bn,这里共使用5个参数.# 2个可训练参数:weight(gamma)和bias(beta),均值方差(2次):running_mean(u), running_var(e)和容差eps# bias为bn的输入通道(上一层的输出通道)个数.即,针对上层的out_channels每个channel分别求均值方差.# initprint(f'original conv, inc:{conv.in_channels},otc {conv.out_channels}, k:{conv.kernel_size}')fusedconv = torch.nn.Conv2d(conv.in_channels,conv.out_channels,kernel_size=conv.kernel_size,stride=conv.stride,padding=conv.padding,bias=True)## prepare filters, w_conv的行数应该等于上一层的输出通道数w_conv = conv.weight.clone().view(conv.out_channels, -1) #conv.in_channels:3, conv.out_channels:64, \#conv.weight:(64, 3, 7, 7) --> (64, 147)w_bn = torch.diag(bn.weight.div(torch.sqrt(bn.eps+bn.running_var)))# bn.running_var.shape=(64,)fusedconv.weight.copy_( torch.mm(w_bn, w_conv).view(fusedconv.weight.size()) )## prepare spatial biasif conv.bias is not None:b_conv = conv.biaselse:b_conv = torch.zeros( conv.weight.size(0) )b_bn = bn.bias - bn.weight.mul(bn.running_mean).div(torch.sqrt(bn.running_var + bn.eps))fusedconv.bias.copy_( b_conv + b_bn )## we're donereturn fusedconvclass DummyModule(nn.Module):def __init__(self):super(DummyModule, self).__init__()def forward(self, x):return xdef convert():# torch.set_grad_enabled(False)x = torch.randn(1, 3, 256, 256)rn18 = torchvision.models.resnet18(pretrained=True)rn18.eval()with torch.no_grad():ori_out = rn18(x)new_bn = fuse_conv_and_bn(rn18.conv1, rn18.bn1)rn18.conv1 = new_bnrn18.bn1 = DummyModule()new_out = rn18(x)max_diff = (ori_out - new_out).max()print(f'max diff:{max_diff.item()}')if __name__ == '__main__':convert()
参考资料:https://github.com/qinjian623/pytorch_toys
https://github.com/Ironteen/Batch-Normalization-fusion
batchnorm融合相关推荐
- @高校学生开发者,为什么你一定要“上手”开源项目?
一到毕业季,很多计算机专业的同学都开始为找工作而发愁.有些同学或许有着不错的学历,但由于没有几个拿得出手的项目经历,面试屡屡受挫,而有的同学虽然还未毕业,但高薪工作早已找上门,为选择太多而" ...
- 【翻译】Robust High-Resolution Video Matting with Temporal Guidance
Robust High-Resolution Video Matting with Temporal Guidance 论文地址 RobustVideoMatting 代码地址 论文阅读笔记 版权声明 ...
- mseloss pytorch_PyTorch 卷积与BatchNorm的融合
2020-05-27 更新 PyTorch已经官方支持了合并操作: Captain Jack:MergeBN && Quantization PyTorch 官方解决方案zhuanl ...
- 动态卷积超进化!通道融合替换注意力,减少75%参数量且性能显著提升 ICLR 2021...
导读 本文是微软&加大圣地亚哥分校的研究员在动态卷积方面的一次突破性的探索,针对现有动态卷积(如CondConv.DY-Conv)存在的参数量大.联合优化困难问题,提出了一种动态通道融合机制替 ...
- 动态卷积超进化!通道融合替换注意力,减少75%参数量且性能显著提升 | ICLR 2021
还没开源 本文是微软&加大圣地亚哥分校的研究员在动态卷积方面的一次突破性的探索,针对现有动态卷积(如CondConv.DY-Conv)存在的参数量大.联合优化困难问题,提出了一种动态通道融合机 ...
- 动态卷积超进化!通道融合替换注意力,减少75%参数量且性能显著提升|ICLR 2021
本文首发于极市平台公众号,作者Happy.转载需获得授权并标明出处. paper: https://arxiv.org/abs/2103.08756 code: https://github.com/ ...
- caffe中的batchNorm层(caffe 中为什么bn层要和scale层一起使用)
caffe中的batchNorm层 链接: http://blog.csdn.net/wfei101/article/details/78449680 caffe 中为什么bn层要和scale层一起使 ...
- CNN和RNN中如何引入BatchNorm
/* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/ author: 张俊林 Batch Normalization的基本思路和价值在之前一篇文章"Batch Norma ...
- concat特征融合_深度特征融合---理解add和concat之多层特征融合
一.如何理解concat和add的方式融合特征 在各个网络模型中,ResNet,FPN等采用的element-wise add来融合特征,而DenseNet等则采用concat来融合特征.那add与c ...
最新文章
- 计算机能破坏光盘中的系统吗,因为某些程序被破坏需要重装系统,用2000的盘重装可以吗?...
- IIS 6.0的web园 最大工作进程数
- 线程的调度、优先级和亲缘性——Windows核心编程学习手札系列之七
- linux存储库rep 61082,安装informatic过程中的错误
- rails table html,Ruby on Rails:如何将字符串呈现为HTML?
- 如何对手机使用adb
- CV Code | 计算机视觉开源周报 20190604期
- iOS: 教你给UI控件添加Badge(消息提醒小圆点)
- (日常搬砖)ubuntu18.04风扇断断续续响,提示 ‘GPU fan error‘
- 成功数据恢复一例MYSQL数据库记录恶意删除
- IDEA+Maven搭建JavaWeb项目
- NPN和PNP三极管原理以及应用电路设计
- COSC1076_assignment2_221
- jpg图片怎么压缩大小?简单快捷的方法教给你
- python批量下载文件只有1kb_我总结了这几点经验,使用python让网页提速几倍不止!...
- python三国演义人物 统计分析_使用python统计《三国演义》小说里人物出现次数前十名,并实现可视化。...
- Thunderbolt3 方案介绍及应用案例介绍
- catic备份mysql,caticbj.com
- 关于 Kubernetes中JobCronJob的一些笔记
- PAT a1134
热门文章
- python新手学习记录笔的控制7,成果(使用python画小黄人)
- html 闪电的动态效果图,利用HTML5实现Canvas空中闪电动画特效
- 计算机excel没点保存,excel表格没保存怎么找回,excel表格没有保存
- ps html插件初始化失败,PS插件提示 “无法加载扩展,因为它未正确签署” 解决方法...
- codeforce1673C. Palindrome Basis
- 考勤管理系统(考勤员函数与管理员部分相同)
- H5 实现公众号授权登录
- SAP中ABAP编辑器快捷键及文字大小设置一览
- CountDownLatch模拟田径赛跑
- 服务器打开文件夹闪退,win10系统打开文件夹频繁闪退的解决方法