XNOR-Net算法详解

XNOR-Net是一种用于深度学习模型压缩的算法,通过二值化权重和输入数据,实现了模型的存储空间减少和计算速度提升。文章详细介绍了Binary-Weight-Networks和XNOR-Networks两种二值化网络,讨论了它们的优化目标和计算过程,展示了在ImageNet上的实验结果,表明XNOR-Net在保持较高准确率的同时,能有效加速模型运行。
摘要由CSDN通过智能技术生成

论文:XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks
链接:https://arxiv.org/abs/1603.05279
代码地址:http://allenai.org/plato/xnornet

模型压缩和加速是深度学习算法应用在移动端必须要解决的问题,也是近年来的研究热点,这篇ECCV2016的文章就是做这样的事。在这篇文章中作者主要提到两种二值化网络Binary-Weight-Networks和XNOR-Networks。Figure1简单列出了这两种网络和标准的卷积网络的差别,根据实验结果,这里主网络应该采用的是AlexNet。Binary-Weight-Networks通过对权重W做二值化操作,达到减少模型存储空间的目的,准确率影响并不明显(不过后面在ResNet-18上的实验对准确率的影响还比较大)。XNOR-Networks通过同时对权重W和输入I做二值化操作,达到既减少模型存储空间,又加速模型的目的,当然准确率影响也比较明显。

这里写图片描述

接下来依次介绍这两种二值化网络,另外这里说的权重是指网络中的卷积层参数和全连接层参数,因为全连接层可以用卷积层代替,所以接下来我都用卷积层来介绍二值化操作。

Binary-Weight-Networks
首先Binary-weights的目的是将权重W的值都用二值表示,也就是W的值要么是-1,要么是1。这个替代过程贯穿整个forward和backward过程,但是在更新参数时候还是采用原来的权重W,主要是因为更新参数需要的精度比较高。

接下来详细介绍怎么实现和公式推导,公式部分虽然多,但是很简单。一个卷积层的操作可以用I*W表示,I表示输入,维度是c*win*hin,W表示卷积核(或者叫权重),维度是c*w*h。那么当我用二值卷积核B以及一个尺度参数a代替原来的卷积核W,那么就可以得到下面这个式子:

这里写图片描述

这里有个圆圈里面带加号的符号表示没有乘法的卷积计算。这里:

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值