Caffe中BatchNorm层的计算可以表示为:y = (x-mean)/sqrt(var),

Scale层的计算可以表示为:y = x*w + b,

某些情况下为了减少参数及计算量,可以将BatchNorm和Scale层合并在一起:

y = (x-mean) * w/sqrt(var) + b

即 y = x * w/sqrt(var) + b - mean*w/sqrt(var) = x * w' + b'

即新的权重与偏置为:w' = w/sqrt(var), b' = b - mean*w/sqrt(var).

def update_model():net = caffe.Net(proto_name, model_name, caffe.TEST)proto = Nonewith open(proto_name) as fd:proto = caffe_pb2.NetParameter()text_format.Merge(fd.read(), proto)for i,layer in enumerate(proto.layer):bn_name = layer.nameif layer.type == 'BatchNorm':next_layer = proto.layer[i+1]if next_layer.type == 'Scale':scale_name = next_layer.nameif net.params.has_key(bn_name):#bneps = 1e-5mean = net.params[bn_name][0].datavar = net.params[bn_name][1].datarescale = net.params[bn_name][2].datanewvar = 1.0 / np.sqrt(var*rescale)+epsnewmean = -mean * rescale * newvar#scaleweight = net.params[scale_name][0].databias = net.params[scale_name][1].datanewweight = weight * newvarnewbias = weight*newmean + biasnet.params[scale_name][0].data = newweightnet.params[scale_name][1].data = newbiasnet.save('new.caffemodel')

caffe合并BatchNorm和Scale层相关推荐

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

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

  2. Caffe 源码 - BatchNorm 层与 Scale 层

    batch norm layer & scale layer 简述 Batch Normalization 论文给出的计算: 前向计算: 后向计算: BatchNorm 主要做了两部分: [1 ...

  3. Caffe Scale层

    如果我们想原封不动的传送数据,也就是说建一个不做任何操作仅穿数据的层,可以利用Scale层,Python中写法如下: n.scale1 = L.Scale(n.pool2,name='scale1', ...

  4. 标准caffe中实现darknet相关层。caffe和darknet模型的相互转换和加速(分类、检测、分割)

    caffe实现darknet中的相关层,主要是yolo层和upsample层等: 实现yolo网络的训练和测试(分类.检测和分割): 提供darknet模型转caffe模型: 实现bn层合并和yolo ...

  5. PyTorch 51.BatchNorm和Dropout层的不协调现象

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者 | 科技猛兽@知乎(已授权) 来源 | https://zhu ...

  6. 怎么在Caffe中配置每一个层的结构

    如何在Caffe中配置每一个层的结构 最近刚在电脑上装好Caffe,由于神经网络中有不同的层结构,不同类型的层又有不同的参数,所有就根据Caffe官网的说明文档做了一个简单的总结. 1. Vision ...

  7. 在模型推理时合并BN和Conv层

    我们在这里简单讲解一下,在模型推理时合并BN和Conv层,能够简化网络架构,起到加速模型推理的作用.在模型中,BN层一般置于Conv层之后. Conv: 卷积层的计算简单,公式为: BN: 再来回忆一 ...

  8. 神经网络推理加速: 合并卷积和BN层运算原理及实验

    1.  为什么要合并BN层 在训练深度网络模型时,BN(Batch Normalization)层能够加速网络收敛,并且能够控制过拟合,一般放在卷积层之后.BN 层将数据归一化后,能够有效解决梯度消失 ...

  9. caffe源码解析—image_data_layer层

    caffe data layer相关层的继承结构 image-data-layer层关键代码注释 DataLayerSetUp函数 //将imagelist中的图片以 image+label格式 读入 ...

最新文章

  1. swift_014(Swift 的控制流)
  2. HDU 1394 Minimum Inversion Number(线段树的单点更新)
  3. Java 编程的动态性,第3部分: 应用反射--转载
  4. python互相转换位置坐标(百度坐标、WGS_84、火星坐标)
  5. pyinstaller打包exe在其他机器无法运行_详解pyinstaller selenium python3 chrome打包问题!解决率100%...
  6. git 教程2 (git常用命令解说)
  7. 图解SQL inner join、left join、right join、full outer join、union、union all的区别
  8. 线性判别分析(Linear Dicriminant Analysis)参数推导记录备忘
  9. 如何在几秒钟内退出所有 Mac 应用程序?
  10. RGB-D = 普通的RGB三通道彩色图像 + Depth Map
  11. 分享我用cnode社区api做微信小应用的入门过程
  12. JAVA JSP网上订餐系统JSP餐厅点餐系统源码JSP点餐系统JSP网上订餐系统JSP在线订餐
  13. UCDOS和鲍岳桥and 我和我的嵌入式GUI(DOS,Linux,uC/OS-II等)
  14. Filco圣手二代双模蓝牙机械键盘的连接方法
  15. 在 React 中使用 TypeScript、使用CRA创建TS项目、React 中的常用类型
  16. 几个有用的遥感和地理信息网站
  17. 文件搜索工具ProFind for Mac
  18. 计算机专业的浪漫情话,计算机科学与技术表白情话
  19. ios打没有签名的ipa包
  20. 51单片机实战教程之C语言基础(一 创建Keil Project)

热门文章

  1. debian下cron的使用方法和常见问题
  2. IT项目管理之软件测试
  3. 【视觉SLAM十四讲】第三讲 三维空间刚体运动
  4. 微信支付失败提示签名错误,请检查后重试
  5. 文盲+wordpress搭建个人博客类网站
  6. css预处理器-stylus 很少人用
  7. Linux_网络项目_WEB服务器 设计CGI机制,与CGI处理数据
  8. 传输层协议——UDP和TCP
  9. android控件属性padding
  10. Linux安装-CentOS6.x