自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(127)
  • 收藏
  • 关注

原创 代码纠错

PythonValueError: matrix must be 2-dimensional

2019-04-23 12:14:39 979

原创 学习轨迹

书籍代码

2019-03-20 22:50:00 876

原创 Adaptive Loss-aware Quantization for Multi-bit Networks

本文提出了一种通过减小量化误差来获得更好量化效果的自适应MBN(Multi-bit Networks)方法。MBN方法,简单来说,是基于这样一个观察:网络中各层对量化粒度的敏感程度是不同的。那么假设我们给予的总的bit数不变的基础上,分别给对量化更敏感的层更多的bit数,较不敏感的层更少的bit数,从而达到更好的精度。本文在这个思想上做出了改进:首先它优化的目标不是网络的损失,而是引入的量化误差,它的好处在于可以更好地修改赋予各层的bit数。其次它引入了剪枝方法,依次剪掉一些不必要的参数,从而可以减少分

2020-06-13 23:37:11 762

原创 使用openvino的python接口对分类网络进行量化

单个cpu推断#!/usr/bin/env python""" Copyright (C) 2018-2020 Intel Corporation Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

2020-06-03 23:38:45 723

原创 DL workbench上手总结

DL workbench是openvino推出的一个win平台上的量化工具。它提供了大量的各个框架的模型,但也支持自己导入模型。它支持的模型框架有IR、ONNX、MXNet、Caffe、TensorFlow,但只支持著名的网络层,其它自定义层要自己手动写。大概的操作流程见https://blog.csdn.net/sandmangu/article/details/103581882讲得比较详细了。几个要注意的点是,安装好docker desktop后,如果不能很好地访问外网,最好在setting那

2020-06-03 20:09:39 969

原创 如何巧妙地安装keras?

step1: 安装tensorflowstep2: from tensorflow import keras研究了下,原来keras已经集成到tensorflow里了,而且试了下,tf1和tf2里都可以导入,就是不知道接口是不是有变化。安一送一还蛮实惠的。

2020-06-03 15:05:14 507

原创 如何优雅地安装caffe2?

step1: 安装pytorchstep2: import caffe2研究了一会,发现caffe2已经集成到pytorch里了,所以你只要安装pytorch就可以了。买一送一还蛮划算的。

2020-06-03 14:53:51 194

原创 int8量化的resnet50在ImageNet数据集上的推断结果

将resnet50除全连接层外的所有层均量化为8bit。结果如图:这是使用1个cpu核心的结果。这是使用3个cpu核心的结果。作为对比,这是全精度模型的结果。1个cpu核心3个cpu核心从结果对比可以看出,量化模型的fps较全精度模型提升了1.x倍,而平均延迟则分别减少了30%和50%。将转换后的IR模型在Ubuntu上使用cpu做了推断,fps结果和DL Workbench一致,延迟因为不会测试就没有测。除此之外,量化模型和全精度网络的推断结果还有两个很大比较大的差别:量化模型的

2020-06-02 22:48:51 2240

原创 使用openvino加速resnet50在VOC2007上的推断结果

平台是win10,cpu是Intel® Core™ i5-8300H CPU @ 2.30GHz(一共4核,在这里分配了最多3核做推断),工具是openvino的DL Workbench。下图的点从左至右的batch_size依次为1、16、32、48和64。这是cpu核数为1时的推断结果图。可以看出,随着batch_size的增加,延迟和fps均增加,直到在某个值后,fps不再增加,仅延迟增加。我们知道,推断的延迟和fps是一组矛盾的数据:在给定cpu时,低延迟往往意味着低fps(因为要尽量快地对

2020-06-01 23:15:46 878

原创 error: [Errno 13] Permission denied: /anaconda3/envs/py/lib/python3.6/site-packages/easy-install.pth

执行python setup.py install时遇到该错误,解决方法很简单:改成sudo python3 setup.py install

2020-05-11 20:46:32 2128

原创 LSQ+: Improving low-bit quantization through learnable offsets and better initialization

本文是对lsq:Learned Step-size Quantization的改进。关于lsq,这篇文章讲得很清楚:https://blog.csdn.net/nature553863/article/details/104275477简单来说,就是通过学习来确定量化间隔。在lsq提出时,当时流行的激活函数是ReLU。它的特点是,将小于0的激活值都置为0,因此lsq在量化激活值时使用非对称...

2020-05-07 17:33:09 1444

原创 STATIC QUANTIZATION WITH EAGER MODE IN PYTORCH

关于pytorch的量化,可以看https://blog.csdn.net/zlgahu/article/details/104662203/import numpy as npimport torchimport torch.nn as nnimport torchvisionfrom torch.utils.data import DataLoaderimport torchvis...

2020-03-17 22:46:04 666 2

原创 Object Detection in 20 Years: A Survey

本文回顾了目标检测20年来的发展。目标检测的任务简单来说就是,what objects are where。它可以被分为两个大的研究领域:通用目标检测和检测应用。前者是模拟人类视觉,来对看到的所有物体进行分类和定位;后者则是做专门的应用,如行人检测、安全帽检测、口罩检测和文本检测等。在时间尺度上,2014年是一个分界线。在此之前,深度学习还未普及,没有有效地提取特征的方法,研究人员们只能使用各...

2020-03-09 12:12:58 301

原创 LQ-Nets: Learned Quantization for Highly Accurate and Compact Deep Neural Networks

本文提出了一种通过学习来获得合适的量化间隔的方法。本文的思路很简单,作者将uniform量化视作几个量化level的线性叠加:左边是量化level,右边是线性叠加系数,它的取值范围为0或1。于是作者提出类似的结构:v是一个浮点数,e是线性叠加系数,它的取值范围为-1或1。其优化目标为:训练方法是分别固定B和v中的一个进行训练,这也是同时训练的参数过多时常常采用的一种方法。我觉得...

2020-03-02 22:12:02 870

原创 Value-aware Quantization for Training and Inference of Neural Networks

本文提出了一种量化部分小的激活值及新的量化网络的反向传播的方法。和权重熵量化方法的观察一致,作者发现大的激活值对精度的影响很大,且出现频率更低。于是作者提出了将1-3%最大的激活值保持原样,只量化剩余部分的激活值。另外,作者在反向传播时,在计算每一层的梯度时,将激活值的数值类型转换为全精度。这样做的好处是,每次只需要存储一层激活值的全精度值,就减少了对存储的要求。随后作者解释了,为什么量化激...

2020-03-01 23:10:30 374

原创 Quantization Mimic: Towards Very Tiny CNN for Object Detection

本文提出了一种使用量化后的教师网络进行知识蒸馏来得到性能较好的用于目标检测的学生量化网络。其框架如下:首先训练一个全精度的大型网络,然后在训练阶段对其和学生网络的特征图同时进行量化。用L2损失来定义两个网络的差距。...

2020-02-28 19:04:34 309

原创 Towards Accurate Binary Convolutional Neural Network

本文提出了一种使用多个二进制网络的线性组合来拟合复杂网络的方法,它是首个在ImageNet上效果接近全精度网络的二进制网络。其优化目标如下:w是全精度权重,B为量化权重,α为每个二进制网络的系数:为了能使反向传播正常进行,设定下式:ui的取值区间是[-std(W),std(W)]。前向和反向传播的过程如下:整体框架如下:左边每个框框是一个近似的全精度网络,其中每一个都是一...

2020-02-27 21:06:27 337

原创 Explicit Loss-Error-Aware Quantization

本文提出了使用全精度网络而非量化网络的误差更新权重的方法,以及对INQ的改进。一般的量化网络,在训练时都会使用量化网络或混合网络(部分网络被量化)的误差来更新权重。本文则另辟蹊径,使用全精度网络的误差来更新权重。不仅取得了较好的结果,还避免了梯度的不匹配问题。其损失函数为:第一项是全精度网络的误差,第二项是全精度网络和量化网络的差异,第三项是量化权重和全精度权重的期望差。a1和a2是两个正...

2020-02-26 20:05:21 400

原创 Learning to Quantize Deep Networks by Optimizing Quantization Intervals with Task Loss

本文提出了一种可学习的量化间隔(Quantization Interval Learning,QIL)方法。它的思路类似TSQ,都是分两步进行量化,但与TSQ不同,它在每一步里都同时对权重和激活值进行处理。第一步是一个Transformer:其思路与DoReFa-Net类似,将权重变换到[-1,1],将激活值变换到[0,1]。其框架如下:权重和激活值的变换公式分别为:这里Cw和...

2020-02-25 17:42:46 952 1

原创 Learning Accurate Low-Bit Deep Neural Networks with Stochastic Quantization

本文提出了一种使用随机算法量化网络的方法。它的思路类似INQ,都是将权重划分为被量化的和全精度部分,然后逐次增加量化的比例,直到百分百。不同之处在于量化权重的选取:INQ是按照从大到小的顺序进行量化,而本文则根据量化误差的大小选取:这里Wi是某通道权重的全精度值,Qi是其量化后的值。作者定义一个函数:作者依据该函数提出了四种量化方案:1:量化概率为1/m,m为权重的通道数。2:线性函数...

2020-02-24 18:57:59 314

原创 Quantization Networks

本文的创新点是,提出了了一种新的计算量化网络梯度的方法。在对网络进行量化处理时,一个很常见的问题是,量化函数几乎不可导,因此很难通过反向传播来更新参数。为了解决这个问题,人们提出了种种近似方法。但这些近似方法终究和量化函数有所区别,因此就会导致梯度的不匹配问题。于是本文提出了一种新的量化函数:(这里A是一个单位阶跃函数,β是所有输入值的放缩尺度,x是要被量化的权重或激活值,bi和si是阶跃...

2020-02-23 20:17:14 792 1

原创 HAQ: Hardware-Aware Automated Quantization with Mixed Precision

本文的创新点为:作者认为,在不同的平台上,以及不同的layer上,合适的量化bit数都是不同的。但是如果想认为找到这个最优值是不可能的,于是作者使用强化学习的方法来找到最合理的量化bit数。本来芯片是不支持混合精度的计算的,但随着硬件的发展,支持混合机精度计算的芯片也出现了:比如苹果的A12,NVIDIA的图灵GPU框架等,从而使得这种思路得以实现。它的优点是完全自动化,不需要专家知识和启发...

2020-02-22 22:49:22 1405

原创 Two-Step Quantization for Low-bit Neural Networks

这篇文章的动机是:作者认为,低位量化时如果同时对权重和激活值进行量化,因为量化是一个阶梯函数,那么在使用SGD训练时,梯度的微小变化并不能很好地反应到量化的参数上。因此激活值梯度的方差就会很大,导致SGD很难收敛。为了解决这个问题,作者将其分为两步进行:首先对激活值进行量化,接着对权重进行量化。Sparse Quantization for Code Learning在这一步时,作者先使用全...

2020-02-21 20:35:39 417

原创 Deep Learning with Low Precision by Half-wave Gaussian Quantization

本文主要提出了几种量化方式,其中前向传播的量化方式为:就是在负轴为0,正轴为一个固定长度的阶梯状的量化函数。本文提出了三种后向传播的梯度近似方法:vanillaReLU:但随着x的增大,这种近似的误差也在增大,于是算法的不稳定性就在增加,于是作者提出了第二种近似方法:clipped ReLU:它的问题是,当x>qm时,梯度就为0了,所以会损失一些信息,所以虽然它的效果很好,...

2020-02-13 18:15:30 651

原创 Weighted-Entropy-based Quantization for Deep Neural Networks

本文提出了一种综合考虑权重的重要性和频率来进行量化的方式。它与其它量化方式的对比:作者首先定义了被称为权重熵的变量:这里Pn代表了权重的频率,In代表了它的重要性。作者设定了n个量化簇(cluster),i(n,m)是计算第n个簇的第m个权重的重要性的函数,作者这里简单地选择了平方函数。上图是权重量化的伪代码:首先用平方函数计算每个权重的重要性,然后从小到大对其排序,并将它们均匀分为n...

2020-02-12 18:23:53 310

原创 Trained Ternary Quantization

本文是在TWQ(Ternary Weight Quantization)的基础上做出的改进,其流程可以简单概括为:首先将全精度权重正则化到[-1,1]之间,然后根据一个每层相同的阈值t来进行量化(这里使用统一的t是为了缩小搜索空间,用每个通道不同的t应该能得到更好的表现,但感觉会增加过多的计算消耗)为-1,0和1,最后分别乘以Wn和Wp作为结果计算loss,再通过梯度下降更新Wn、Wp和原始梯...

2020-02-10 17:24:02 417

原创 UNDERSTANDING STRAIGHT-THROUGH ESTIMATOR IN TRAINING ACTIVATION QUANTIZED NEURAL NETS

STE作为一种方法已经被提出很久了,也出现了很多它的变体。但它在本质上,是用了一个与当前函数无关的梯度来代替原有的梯度,为什么这个朝着这个替代品的梯度下降的方向优化网络有用?面对已经提出的许多STE的变体,我们应该如何选取?本文的主要内容就是解决以上两个问题。首先,作者定义了一个简单的网络:其中Z是一个取样自(0,1)高斯分布的输入数据,w和v是权重,σ是二元的的激活函数:标签的定义如下...

2020-02-09 17:12:42 1077

原创 Quantizing deep convolutional networks for efficient inference: A whitepaper

本文是对当前量化方法的一个总结。量化设计统一仿射量化它将浮点数量化到(0,Nlevel-1),这里Nlevel是2的bit次方。对cnn来说,卷积操作变为:这种方法在推断时能够取得更快的速度,因为它的激活值求和以及权重值都是常量。统一对称量化随机量化随机量化是将量化器视作一个round操作内的加性噪音,因为很多硬件并不支持随机采样,因此它往往并不在推断时使用。Note t...

2020-02-06 18:12:12 500

原创 对模型量化的简单的总览

本文总结了《哈佛大学在读博士董鑫:模型量化—更小更快更强》(https://www.bilibili.com/video/av76554696)的内容。首先他简单介绍了下量化的必要性,这个其实随便哪篇文章的介绍里都会提及。随后他介绍了量化目前的问题:在前向传播时,由于量化使得参数精度下降,于是模型的表达能力下降了。这在一些简单的分类任务中表现得不太明显,甚至有时候量化还会增加分类精度。但当模...

2020-02-02 19:47:04 784

原创 Post training 4-bit quantization of convolutional networks for rapid-deployment

现有的很多量化方法都是通过量化后重训练来弥补量化损失的,但这些方法并不完美:它们需要完整的数据集(这涉及到隐私及其他问题),而且还需要大量的计算资源。于是,一种被称为post-training的方法被踢出了:它不需要完整的数据集,也不需要重新训练或微调模型(也就是说,可以达到端对端),且它的准确率与流行的浮点模型的精度接近。但这类方法一旦把量化精度放到8bit以下时,精度就大幅下降。为了解决这个...

2020-01-19 16:47:09 1234

原创 Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference

作者先惯例说了一堆网络压缩的必要性,然后简单介绍了目前比较流行的两派:轻型网络设计和量化。随后他提出了这些方法的两个问题:一是用来做对比的网络都是参数过大的网络,这使得结果不具有完美的说服力,我们应该与已有的优秀的轻型网络如mobilenet对比;二是这些算法并不能很好地给硬件带来提升,这些方法往往利用位运算来减少运算消耗,但在量化之后,实际上采用位运算还是传统的加乘法已经没什么区别了。虽然有一些...

2020-01-18 22:17:59 294

原创 PACT: PARAMETERIZED CLIPPING ACTIVATION FOR QUANTIZED NEURAL NETWORKS

本文的主要贡献有三点:1、提出了pact方法,它给激活函数设定了一个可学习的α截断参数。2、在2bit以下,它的效果比所有当时的模型都好;4bit的精度接近单精度的表现。3、它可以提供一种平衡模型精度和复杂度的方法。量化权重相当于是将权重的损失函数的假设空间离散化,因此可以通过训练来弥补由量化导致的误差,但传统的激活函数却并没有任何可训练参数,因此不能这样做。ReLU已经成为现在最为流行...

2020-01-17 16:02:52 1465

原创 WRPN: Wide Reduced-Precision Networks

这篇文章的主要提升点在激活层的量化。从上图可以看出,当使用mini-batch时,随着batch数的提升,激活层所占据的内存也显著提升。

2020-01-16 21:54:27 1897

原创 INCREMENTAL NETWORK QUANTIZATION: TOWARDS LOSSLESS CNNS WITH LOW-PRECISION WEIGHTS

在量化方面已经有很多工作了,其中一个是用每个FC层的浮点的聚类中心值来代替所有权重值,可以获得20X的压缩率,以及在top-上1%的精度损失;hash网则将所有权重放入哈希桶内,且所有共享哈希桶的权重共享一个单精度值。但它只考虑了几种浅层网络的FC层;还有人提出了将剪枝、量化和霍夫曼编码结合的方法;还有人使用16位精度的权重来代替32位精度的权重来训练网络;之后还有EBP,它在推断的前向传播过程中...

2020-01-15 17:54:16 366

原创 DOREFA-NET: TRAINING LOW BITWIDTH CONVOLUTIONAL NEURAL NETWORKS WITH LOW BITWIDTH GRADIENTS

BNN和异或网将权重和卷积层的值进行量化,进而将在前相传播过程中花费最多的卷积操作转化为了两个bit向量的逐比特的点积:这里bitcount计算比特向量中比特的数量。之前的网络都没能在反向传播保持8比特以下的精度的同时,能够拥有可接受的精度。dorefa-net的创新点在于:1、它能够以任意的精度量化权重、激活层和梯度。2、由于比特卷积可以高效地在各种设备上实现,因此他为在各种软件上实...

2020-01-14 22:10:55 1526

原创 Estimating or Propagating Gradients Through Stochastic Neurons for Conditional Computation

一般认为,为了计算梯度,网络的平滑性是必须的,但实际情况却并非如此。我们可以通过向硬性函数(如阈值函数)中加入扰动来观察效果,进而评估梯度。但是向如果加入的是独立的扰动,那么就会使得后向传播的花费变得非常之多,于是我们提出了随机扰动的想法。不平滑、非线性的思想可以和随机扰动结合在一起来获得对梯度的低方差的估计,dropout就是一个这样的例子。但是我们很想通过计算图计算出的信号来调整噪音的强度...

2020-01-12 22:09:16 1436

原创 Why can LDA be performed in PCA transformed space?

什么是PCA?变换数据集的坐标系,来消除数据间的相关性。具体流程:将数据变化为标准高斯分布。计算协方差矩阵,及其特征值与特征向量。选取前k大的特征值及其特征向量,将其定义为转换矩阵。原始数据集乘以转换矩阵,得提取了主成分后的矩阵。什么是LDA?在空间内找一条直线,使得当数据点投影到这条直线上时,各个类的类内距离最小,而类间距离最大。具体流程:计算类内散度矩阵Sw及类间散度矩阵S...

2019-11-24 21:51:51 232

原创 在ubuntu中安装搜狗输入法

在ubuntu中安装输入法的时候看到了这篇文章,觉得挺好用的就分享一下:https://blog.csdn.net/leijiezhang/article/details/53707181不过它有两个小瑕疵:1:作者是用了dpkg命令安装了,但如果嫌麻烦的话其实可以直接用ubuntu自带的安装程序安装。2:在添加了sougou pinyin后并不能直接地按shift就切换输入法——可能...

2019-10-08 10:27:09 157

原创 轻松在ubuntu18.04中安装GPU+cuda+cudnn

尝试了数不清的坑后,终于试出了一篇靠谱的文章,贴在这里。https://www.linuxidc.com/Linux/2019-02/157168.htm不过我在使用这篇文章的时候遇到了一个问题:在编辑bashrc文件的时候作者使用了vim方法,但我的vim命令提示没找到,简单搜了下也没找到安装的方法,我就用了gedit命令代替了它。暂时不知道有没有什么隐患,但可以作为vim出问题也无法解决...

2019-10-08 10:23:31 168

原创 Python之路:venv模块

有时候我们要跑的代码,必须要在一些特定的环境中运行,但这些环境可能会和我们现有的环境冲突:我们装的是python3.7,它却要求是2.x版本。如果不想花精力改代码,那么一个简单的方法就是创建虚拟环境,即使用venv模块。其详细介绍见:https://blog.csdn.net/geekun/article/details/51325383如果想在ubuntu环境下使用venv,见:http...

2019-09-23 11:30:49 1087

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除