其他分享
首页 > 其他分享> > 深度学习--二值神经网络BNN基础概念学习总结+官方代码解析

深度学习--二值神经网络BNN基础概念学习总结+官方代码解析

作者:互联网

BNN网络

1.基础概念学习总结

优势

摘要解读:
介绍了一种训练二值化神经网络(BNNs)的方法。在训练时,使用二元权值和激活度来计算参数梯度。在前向传递过程中,BNNs大大减小了内存大小和访问,并将大部分算术运算替换为按位运算,有望大幅度提高效率。
我们进行了两组实验Torch7和Theano框架,前者结合lua脚本语言,后者结合python
实验结果得出,在这两个框架,BNNs都取得了几乎是最先进的成果
MNIST, CIFAR-10和SVHN数据集。最后,我们写了一个二进制矩阵乘法
GPU内核(runtime),它可以运行我们的MNIST, BNN的速度比未优化的GPU内核快7倍,并且在分类精度上没有任何损失。
我们介绍了一种训练二元神经网络(BNNs)的方法,即在运行时训练具有二元权值和激活的神经网络,以及在训练时计算参数梯度的方法
主要思想

在这里插入图片描述

在前向传播过程中,经Deterministic(确定法)的Sign函数,可以将实数型的权值和激活值量化成+1,-1,当用于预测时,参数值仅为+1或-1,可以减小参数的内存占用和存取量;但是,训练时,仍需要对实数型的权值和激活值计算梯度,并以此更新权值

乘法优化
背景介绍:batch Normalization,简称BN。所谓的BN是指在数据经过一层进入下一层之前,需要对数据进行归一化,使之均值为0,方差为1。这样可以使得各层的参数量级上没有太大的差别。
有三个优点:加速训练,减小权重的值的尺度的影响,归一化所带来的噪声也有模型正则化的作用。
本研究创新
Shift-based Batch Normalization:二值网络对Batch Normalization操作的优化主要是通过AP2(x)操作和<<>>操作来代替普通的乘法。AP2(x)的作用是求与x最接近的2的幂次方,如AP2(3.14)=4,AP2(2.5)=2;而<<>>操作就是位移操作。AP2(x)的操作,在作者给出的源码中能够找到;但是<<>>的操作,从源码中只能看到Torch的点乘函数cmul()。(注:Shift-based AdaMax中的乘法操作也是用上述两个操作代替)

国内研究现状
有论文已经实现resnet和BNN的结合(应用于行人识别)[1]
摘要
在这里插入图片描述网络结构在这里插入图片描述

但是他们的实践表明如下这种二值化方法效果更好
在这里插入图片描述

[1]曹立宇,方向忠.一种基于BNN的行人再识别方法[J].信息技术,2018,42(12):129-133.

自然语言识别领域也有应用

2.代码解析

代码来源:https://github.com/MatthieuCourbariaux/BinaryNet
源码分为两个文件夹,其中train time,runtime运用了论文中XNOR和GPU核
然后安装代码前面的一些如theano等等包,到了这里
from pylearn2.datasets.mnist import MNIST
from pylearn2.utils import serial
先上这个网址https://github.com/lisa-lab/pylearn2下载这个文件夹,解压到site-packages下,然后在pycharm的local中输入(省略号里面写自己的路径)

cd C:\...site-packages\pylearn2-master
python setup.py develop

如果出现这个No module named ‘theano.compat.six’错,参考这个网址https://blog.csdn.net/qq_43232373/article/details/82999076

S.T.A.R. 发布了7 篇原创文章 · 获赞 0 · 访问量 136 私信 关注

标签:训练,AP2,神经网络,BNN,权值,概念学习,二值,操作
来源: https://blog.csdn.net/weixin_44886683/article/details/104121308