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融合相关推荐

  1. @高校学生开发者,为什么你一定要“上手”开源项目?

    ​一到毕业季,很多计算机专业的同学都开始为找工作而发愁.有些同学或许有着不错的学历,但由于没有几个拿得出手的项目经历,面试屡屡受挫,而有的同学虽然还未毕业,但高薪工作早已找上门,为选择太多而" ...

  2. 【翻译】Robust High-Resolution Video Matting with Temporal Guidance

    Robust High-Resolution Video Matting with Temporal Guidance 论文地址 RobustVideoMatting 代码地址 论文阅读笔记 版权声明 ...

  3. mseloss pytorch_PyTorch 卷积与BatchNorm的融合

    2020-05-27 更新 PyTorch已经官方支持了合并操作: Captain Jack:MergeBN && Quantization PyTorch 官方解决方案​zhuanl ...

  4. 动态卷积超进化!通道融合替换注意力,减少75%参数量且性能显著提升 ICLR 2021...

    导读 本文是微软&加大圣地亚哥分校的研究员在动态卷积方面的一次突破性的探索,针对现有动态卷积(如CondConv.DY-Conv)存在的参数量大.联合优化困难问题,提出了一种动态通道融合机制替 ...

  5. 动态卷积超进化!通道融合替换注意力,减少75%参数量且性能显著提升 | ICLR 2021

    还没开源 本文是微软&加大圣地亚哥分校的研究员在动态卷积方面的一次突破性的探索,针对现有动态卷积(如CondConv.DY-Conv)存在的参数量大.联合优化困难问题,提出了一种动态通道融合机 ...

  6. 动态卷积超进化!通道融合替换注意力,减少75%参数量且性能显著提升|ICLR 2021

    本文首发于极市平台公众号,作者Happy.转载需获得授权并标明出处. paper: https://arxiv.org/abs/2103.08756 code: https://github.com/ ...

  7. caffe中的batchNorm层(caffe 中为什么bn层要和scale层一起使用)

    caffe中的batchNorm层 链接: http://blog.csdn.net/wfei101/article/details/78449680 caffe 中为什么bn层要和scale层一起使 ...

  8. CNN和RNN中如何引入BatchNorm

    /* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/ author: 张俊林 Batch Normalization的基本思路和价值在之前一篇文章"Batch Norma ...

  9. concat特征融合_深度特征融合---理解add和concat之多层特征融合

    一.如何理解concat和add的方式融合特征 在各个网络模型中,ResNet,FPN等采用的element-wise add来融合特征,而DenseNet等则采用concat来融合特征.那add与c ...

最新文章

  1. 计算机能破坏光盘中的系统吗,因为某些程序被破坏需要重装系统,用2000的盘重装可以吗?...
  2. IIS 6.0的web园 最大工作进程数
  3. 线程的调度、优先级和亲缘性——Windows核心编程学习手札系列之七
  4. linux存储库rep 61082,安装informatic过程中的错误
  5. rails table html,Ruby on Rails:如何将字符串呈现为HTML?
  6. 如何对手机使用adb
  7. CV Code | 计算机视觉开源周报 20190604期
  8. iOS: 教你给UI控件添加Badge(消息提醒小圆点)
  9. (日常搬砖)ubuntu18.04风扇断断续续响,提示 ‘GPU fan error‘
  10. 成功数据恢复一例MYSQL数据库记录恶意删除
  11. IDEA+Maven搭建JavaWeb项目
  12. NPN和PNP三极管原理以及应用电路设计
  13. COSC1076_assignment2_221
  14. jpg图片怎么压缩大小?简单快捷的方法教给你
  15. python批量下载文件只有1kb_我总结了这几点经验,使用python让网页提速几倍不止!...
  16. python三国演义人物 统计分析_使用python统计《三国演义》小说里人物出现次数前十名,并实现可视化。...
  17. Thunderbolt3 方案介绍及应用案例介绍
  18. catic备份mysql,caticbj.com
  19. 关于 Kubernetes中JobCronJob的一些笔记
  20. PAT a1134

热门文章

  1. python新手学习记录笔的控制7,成果(使用python画小黄人)
  2. html 闪电的动态效果图,利用HTML5实现Canvas空中闪电动画特效
  3. 计算机excel没点保存,excel表格没保存怎么找回,excel表格没有保存
  4. ps html插件初始化失败,PS插件提示 “无法加载扩展,因为它未正确签署” 解决方法...
  5. codeforce1673C. Palindrome Basis
  6. 考勤管理系统(考勤员函数与管理员部分相同)
  7. H5 实现公众号授权登录
  8. SAP中ABAP编辑器快捷键及文字大小设置一览
  9. CountDownLatch模拟田径赛跑
  10. 服务器打开文件夹闪退,win10系统打开文件夹频繁闪退的解决方法