二值化神经网络

 什么是二值化网络

二值化神经网络,是指在浮点型神经网络的基础上,将其权重矩阵中权重值和各个激活函数值同时进行二值化得到的神经网络。二值化神经网络具有很好的特性,具体体现在:

通过将权重矩阵二值化,一个权重值只占用一个比特,相比于单精度浮点型权重矩阵,网络模型的内存消耗理论上能减少32倍,因此二值化神经网络在模型压缩上具有很大的优势。


当权重值和激活函数值同时进行二值化之后,原来32个浮点型数的乘加运算,可以通过一次异或运算(xnor)和一次popcnt运算解决,在模型加速上具有很大的潜力。
此处引用:http://blog.csdn.net/tangwei2014/article/details/55077172 该博客还论述了二值化网络的方法,用者自取。

为什么要研究二值化网络

二值化网络的提出是为了解决当前浮点(实值)神经网络存在的高内存消耗,低计算速度问题,希望将神经网络模型应用于嵌入式设备或移动场景下,解决实时性问题,随取随用。


 最早的一篇BinaryNet二值化网络论文

这是我目前了解的最早研究二值化网络的文献,发表于2016年:《Binarized Neural Networks: Training Deep Neural Networks with Weights and Activations Constrained to +1 or -1》

这个博客是对该文比较详细的解读:
http://blog.csdn.net/jackytintin/article/details/53445280

ICCV 2017上的一篇BinaryNet的论文

ICCV(IEEE International Conference of Computer Vision)2017年的文章《Binarized Convolutional Landmark Localizers for Human Pose Estimation and Face Alignment》二值化卷积定位用于行人姿态估计和面部识别。

本来想回忆一下之前的理解,自己写一下该文章的模型实现和体会,但是找到一篇比较全面的博文,完全表达了我的想法。前人栽树后人乘凉,万分感恩。
链接如下:http://blog.csdn.net/zhangjunhit/article/details/78540024?locationNum=8&fps=1

下面的链接是基于此论文中实现模型的代码配置及实现过程:
https://github.com/1adrianb/binary-human-pose-estimation

GitHub中的过程讲解的比较清楚,配置在Torch7下,注意其中的packages,不能一律都按照luarocks install XXX  安装,具体点击到对应的链接中查看相应的应该安装的版本和对应名称。


你可能感兴趣的:(机器学习)