BNN网络

1.基础概念学习总结

优势

  • 加速训练

  • 减小权重的值的尺度的影响

  • 归一化所带来的噪声也有模型正则化的作用

  • 由于二值网络权值W中的元素只占一位二进制,因此在保存训练好后的模型时所需的内存非常小;同时又去除了普通的乘法操作。在减少模型参数所占的内存和运算量的同时还能保持神经网络的性能,这给深度学习在移动端的应用带来了非常大的前景。

摘要解读:
介绍了一种训练二值化神经网络(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

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

  1. 【深度学习2】基于Pytorch的WGAN理论和代码解析

    目录 1 原始GAN存在问题 2 WGAN原理 3 代码理解 GitHub源码 参考文章:令人拍案叫绝的Wasserstein GAN - 知乎 (zhihu.com) 1 原始GAN存在问题 实际训 ...

  2. 【毕业设计】深度学习二维码识别系统 - python opencv

    文章目录 0 前言 2 二维码基础概念 2.1 二维码介绍 2.2 QRCode 2.3 QRCode 特点 3 机器视觉二维码识别技术 3.1 二维码的识别流程 3.2 二维码定位 3.3 常用的扫 ...

  3. 【2020年BNN网络的SOTA—— ReActNet 】以简单的操作得到更高精度的二值神经网络

    作者| Cocoon 编辑| 3D视觉开发者社区 导语: 本文是由香港科技大学发布于ECCV 2020的论文,是Bi-Real Net作者对二值化研究领域的最新成果,拥有着69.4%的精度,作者通过简 ...

  4. 深度学习(6)TensorFlow基础操作二: 创建Tensor

    深度学习(6)TensorFlow基础操作二: 创建Tensor 一. 创建方式 1. From Numpy,List 2. zeros,ones (1) tf.zeros() (2) tf.zero ...

  5. 零基础入门深度学习(7) - 递归神经网络

    无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的技术,会不会感觉马上就o ...

  6. [人工智能-深度学习-14]:神经网络基础 - 常见loss损失函数之逻辑分类,对数函数,交叉熵函数

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  7. 深度学习之卷积神经网络(Convolutional Neural Networks, CNN)(二)

    前面我们说了CNN的一般层次结构, 每个层的作用及其参数的优缺点等内容.深度学习之卷积神经网络(Convolutional Neural Networks, CNN)_fenglepeng的博客-CS ...

  8. 零基础入门深度学习(5) - 循环神经网络

    往期回顾 在前面的文章系列文章中,我们介绍了全连接神经网络和卷积神经网络,以及它们的训练和使用.他们都只能单独的取处理一个个的输入,前一个输入和后一个输入是完全没有关系的.但是,某些任务需要能够更好的 ...

  9. [人工智能-深度学习-9]:神经网络基础 - 常见loss损失函数之均分误差MSE、绝对值误差MAE、平滑平均绝对误差Huber

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  10. 零基础入门深度学习(5) - 循环神经网络【转】

    本文转载自:https://zybuluo.com/hanbingtao/note/541458 在前面的文章系列文章中,我们介绍了全连接神经网络和卷积神经网络,以及它们的训练和使用.他们都只能单独的 ...

最新文章

  1. javascript中作用域,优先级等等问题, 求助中。。。。。。。。
  2. Opencv 去高光或镜面反射(illuminationChange)
  3. Django-cookie的保存以及删除操作
  4. 20+ 家标杆车企实践总结,数字化转型的秘诀都在这儿
  5. datetime模块及time模块
  6. Source Generator:C# 9 将迎来编译时元编程
  7. 在Ubuntu 12.04安装和设置Samba实现网上邻居共享
  8. wepy里面两种不同的写回调函数的方法
  9. Windows访问Linux下的共享目录的配置方法(user安全级别)
  10. 如何检查Django版本
  11. Java基础每日一练—第6天:逻辑判断
  12. 金蝶K3WISE 销售订单序时簿即时库存的开发
  13. Natural_Earth 全球地形渲染图 Version 3.2
  14. java安装_Java开发人员应该知道的7种新工具
  15. 最新GraphPad Prism Mac直装版(医学绘图软件)v9.4.1
  16. [转载]世界各国语言文字举例
  17. Kubernetes中pod分类、核心组件、网络模型及kubectl命令使用
  18. RGB 565格式的256色颜色表代码表
  19. 基于JavaWeb的网页版邮箱系统设计与实现
  20. 零基础带你用python模拟淘宝登录

热门文章

  1. WinTel联盟发展史
  2. 计算机鼠标左键不起作用,电脑鼠标左键不能用怎么办
  3. 菜鸡程序员都是怎样写代码的?
  4. php相册照片批量修改,php如何实现批量修改文件名称
  5. java excel 打勾_在excel中如何打钩
  6. 拼写的能力和重要性英语作文_拼写很重要吗? 我认为是的。
  7. C# OpenXml组件
  8. css背景图不失真_CSS如何实现这种背景效果?
  9. java调用高德地图获取经纬度
  10. 码农翻身讲网络4:从Token到Sessions说到OAuth认证和CAS单点登录