CN109389218B - 数据压缩方法及压缩装置 - Google Patents
数据压缩方法及压缩装置 Download PDFInfo
- Publication number
- CN109389218B CN109389218B CN201710677987.4A CN201710677987A CN109389218B CN 109389218 B CN109389218 B CN 109389218B CN 201710677987 A CN201710677987 A CN 201710677987A CN 109389218 B CN109389218 B CN 109389218B
- Authority
- CN
- China
- Prior art keywords
- weights
- equal
- neural network
- weight
- positive integer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 77
- 238000007906 compression Methods 0.000 title claims abstract description 15
- 230000006835 compression Effects 0.000 title claims abstract description 15
- 238000013144 data compression Methods 0.000 title claims abstract description 13
- 238000013528 artificial neural network Methods 0.000 claims description 207
- 239000010410 layer Substances 0.000 claims description 94
- 230000006870 function Effects 0.000 claims description 42
- 210000002364 input neuron Anatomy 0.000 claims description 41
- 239000011159 matrix material Substances 0.000 claims description 32
- 230000008569 process Effects 0.000 claims description 24
- 210000004205 output neuron Anatomy 0.000 claims description 21
- 238000012549 training Methods 0.000 claims description 21
- 238000013138 pruning Methods 0.000 claims description 20
- 230000015654 memory Effects 0.000 claims description 14
- 238000003672 processing method Methods 0.000 claims description 10
- 239000011229 interlayer Substances 0.000 claims description 7
- 238000011022 operating instruction Methods 0.000 claims description 6
- 230000007787 long-term memory Effects 0.000 claims description 4
- 230000001133 acceleration Effects 0.000 abstract description 6
- 230000009286 beneficial effect Effects 0.000 abstract 1
- 239000013598 vector Substances 0.000 description 57
- 238000011176 pooling Methods 0.000 description 37
- 210000002569 neuron Anatomy 0.000 description 18
- 238000013139 quantization Methods 0.000 description 16
- 230000004913 activation Effects 0.000 description 14
- 238000012546 transfer Methods 0.000 description 12
- 238000004364 calculation method Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 238000007781 pre-processing Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 238000013527 convolutional neural network Methods 0.000 description 4
- 238000005265 energy consumption Methods 0.000 description 4
- 238000010606 normalization Methods 0.000 description 4
- 230000006403 short-term memory Effects 0.000 description 4
- 230000003139 buffering effect Effects 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 238000010187 selection method Methods 0.000 description 3
- 238000005481 NMR spectroscopy Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000005406 washing Methods 0.000 description 2
- 241001442055 Vipera berus Species 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3296—Power saving characterised by the action undertaken by lowering the supply or operating voltage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
- G06F18/232—Non-hierarchical techniques
- G06F18/2321—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
- G06F18/23213—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions with fixed number of clusters, e.g. K-means clustering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/44—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
- G06V10/443—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
- G06V10/449—Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
- G06V10/451—Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
- G06V10/454—Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/50—Extraction of image or video features by performing operations within image blocks; by using histograms, e.g. histogram of oriented gradients [HoG]; by summing image-intensity values; Projection analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Multimedia (AREA)
- Biophysics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Mathematical Physics (AREA)
- Biodiversity & Conservation Biology (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Image Analysis (AREA)
- Machine Translation (AREA)
Abstract
本公开提供一种数据压缩方法及压缩装置。其中,数据压缩方法包括使用滑动窗口选取出一组数值,将选取的数值都置为零;对数据的数值进行分组,对每一组数值用聚类算法进行聚类操作。本公开的压缩方法,相比于传统的方法,能够使网络更加规则化,利于用硬件进行加速,同时减少非零数值位置的存储空间。
Description
技术领域
本公开涉及计算机领域,进一步涉及人工智能领域。
背景技术
神经网络以及机器学习算法已经获得了非常成功的应用。但是随着我们设计更大规模,更深层次的神经网络,将引入更多的权值,而超大规模权值成为神经网络计算的一个巨大挑战。一方面,超大规模的权值数据对存储提出了更高的要求,尤其是在手机等嵌入式设备中,存储相当有限,可能导致无法存放所有的权值数据。另一个方面,大量访问权值数据将带来不可估量的访存能耗,因此,如何压缩神经网络规模成为一个亟待解决的问题。
发明内容
(一)要解决的技术问题
有鉴于此,本公开提供了一种针对神经网络的压缩方法和压缩装置。
(二)技术方案
根据本公开的一方面,提供一种数据压缩方法,其中包括:
对数据进行粗粒度剪枝,包括:使用滑动窗口从神经网络选取出一组权值,将选取的权值都置为零;对神经网络进行第一重训练,训练过程中已经被置为零的权值保持为零;
对数据进行量化,包括:对神经网络的权值进行分组,对每一组权值用聚类算法进行聚类操作,每个类计算出一个中心权值,每个类中的所有权值都用中心权值替换。
在进一步的实施方案中,对数据进行量化之后,对中心权值进行编码操作,得到密码本和权值字典。
在进一步的实施方案中,对中心权值进行编码操作之后,对神经网络进行第二重训练。
在进一步的实施方案中,对神经网络进行第二重训练时只训练密码本,权值字典内容保持不变。
在进一步的实施方案中,使用滑动窗口选取神经网络的一组权值的条件为:将组内所有权值绝对值的算术平均值作为该组的第一代表权值,第一代表权值小于第一阈值;或者将组内所有权值绝对值的几何平均值作为该组的第二代表权值,第二代表权值小于第二阈值;或者将组内所有权值绝对值的最大值作为该组的第三代表权值,第三代表权值小于第三阈值。
在进一步的实施方案中,处理方法还包括:重复使用滑动窗口从神经网络选取出一组权值,将选取的权值都置为零;以及对神经网络进行第一重训练,直至保证不损失设定精度的前提下没有权值能被置为零。
在进一步的实施方案中,所述设定精度为x%其中x介于0至5之间。
在进一步的实施方案中,使用滑动窗口从神经网络选取出一组权值包括对神经网络的全连接层、卷积层或LSTM层的权值进行剪枝。
在进一步的实施方案中,对神经网络的全连接层进行剪枝包括:设全连接层的权值为一个二维矩阵(Nin,Nout),其中Nin是输入神经元的个数,Nout是输出神经元的个数,共有Nin*Nout个权值,设定一个大小为Bin*Bout的滑动窗口,其中Bin为大于等于1小于等于Nin正整数,Bout为大于等于1小于等于Nout的正整数;使滑动窗口能够沿着Bin的方向按照Sin的步长进行滑动,也可以沿着Bout方向按照Sout的步长进行滑动,其中Sin为大于等于1小于等于Bin的正整数,Sout为大于等于1小于等于Bout的正整数;当滑动窗口内的一组权值被选取时,这组权值将全部被置为零,即Bin*Bout个权值将同时置为零。
在进一步的实施方案中,对神经网络的卷积层进行剪枝包括:设卷积层的权值为一个四维矩阵(Nfin,Nfout,Kx,Ky),其中Nfin是输入特征图像的个数,Nfout是输出特征图像的个数,(Kx,Ky)是卷积核的大小,共有Nfin*Nfout*Kx*Ky个权值,设定一个大小为Bfin*Bfout*Bx*By的四维滑动窗口,其中Bfin为大于等于1小于等于Nfin的正整数,Bfout为大于等于1小于等于Nfout的正整数,Bx为大于等于1小于等于Kx的正整数,By为大于等于1小于等于Ky的正整数;使滑动窗口沿着Bfin的方向按照Sfin的步长(stride)进行滑动,或者沿着Bfout方向按照Sfout的步长进行滑动,或者沿着Bx方向按照Sx的步长进行滑动,或沿着By方向按照Sy的步长进行滑动,其中Sfin为大于等于1小于等于Bfin的正整数,Sfout为大于等于1小于等于Bfout的正整数,Sx为大于等于1小于等于Bx的正整数,Sy为大于等于1小于等于By的正整数;当某个滑动窗口内的一组权值被选取时,这组权值将全部被置为零,即Bfin*Bfout*Bx*By个权值将同时置为零。
在进一步的实施方案中,对神经网络的LSTM层进行剪枝包括:设定LSTM层的权值由m个全连接层权值组成,其中m为大于0的正整数,第i个全连接层权值为(Nin_i,Nout_i),其中i是大于0小于等于m的正整数,Nin_i表示第i个全连接层权值输入神经元个数,Nout_i表示第i个全连接层权值输出神经元个数;还设定一个大小为Bin_i*Bout_i的滑动窗口,其中Bin_i为大于等于1小于等于Nin_i的正整数,Bout_i为大于等于1小于等于Nout_i的正整数;使滑动窗口沿着Bin_i的方向按照Sin_i的步长进行滑动,或沿着Bout_i方向按照Sout_i的步长进行滑动,其中Sin_i为大于等于1小于等于Bin_i的正整数,Sout_i为大于等于1小于等于Bout_i的正整数;当滑动窗口内的一组权值被选取时,这组权值将全部被置为零,即Bin_i*Bout_i个权值将同时置为零。
在进一步的实施方案中,所述第一重训练采用反向传播算法,且训练过程中已经被置为零的权值保持为零。
在进一步的实施方案中,对神经网络的权值进行分组方式包括:分为一组、层类型分组、层间分组和/或层内分组。
在进一步的实施方案中,所述分为一组,为将神经网络的所有权值归为一组。
在进一步的实施方案中,所述层类型分组,为将神经网络中所有卷积层的权值、所有全连接层的权值和所有长短时记忆网络层的权值各划分成一组。
在进一步的实施方案中,所述层间分组,为将神经网络中一个或者多个卷积层的权值、一个或者多个全连接层的权值和一个或者多个长短时记忆网络层的权值各划分成一组。
在进一步的实施方案中,所述层内分组,将神经网络的一层内的权值进行切分,切分后的每一个部分划分为一组。
在进一步的实施方案中,所述聚类算法包括K-means、K-medoids、Clara和/或Clarans。
在进一步的实施方案中,所述中心权值选择方法为使得代价函数J(w,w0)最小。
在进一步的实施方案中,代价函数满足:
其中w是类中所有权值,w0是中心权值,n是类中权值数量,wi是类中第i个权值,i是大于等于1小于等于n的正整数。
中心权值选择方法为使得代价函数J(w,w0)最小,
其中w是类中所有权值,w0是中心权值,n是类中权值数量,wi是类中第i个权值,i是大于等于1小于等于n的正整数。
对聚类和编码后的神经网络进行第二重训练包括:对聚类和编码后的神经网络使用反向传播算法进行重新训练,训练过程中已经被置为0的权值将一直保持0,并且只训练权值密码本,不训练权值字典。
根据本公开的另一方面,提供一种神经网络数据的压缩装置,包括:
存储器,用于存储操作指令;
处理器,用于执行存储器中的操作指令,在执行该操作指令时依照权以上任一所述的压缩方法进行操作。
根据本公开的再一方面,提供一种处理装置,其中包括:
粗粒度选数单元,用于输入神经元和非零权值位置信息,选出需要进行计算的神经元;
查找表单元,用于接收量化的非零权值字典和非零权值密码本,进行查表操作并输出神经网络非零权值;
运算单元,用于接收被选中的神经元和非零权值,对神经网络进行运算并输出神经元。
在进一步的实施方案中,所述查找表单元还用于对未量化的非零权值直接通过旁路传输给运算单元。
在进一步的实施方案中,还包括指令控制单元,用于接收指令并经过译码后生成控制信息控制运算单元。
在进一步的实施方案中,还包括存储单元,用于存储神经网络的神经元、权值以及指令。
在进一步的实施方案中,所述存储单元还用于存储存放非零权值以及非零权值的位置信息;还用于存储量化的非零权值密码本和非零权值字典。
在进一步的实施方案中,所述运算单元包括以下至少一种:
乘法器,用于将所述第一输入数据和第二输入数据相乘,得到相乘之后的数据;
加法树,用于将第三输入数据通过加法树逐级相加,或者将所述第三输入数据通过和第四输入数据相加得到相加之后的数据;
激活函数运算单元,对第五数据通过激活函数运算得到输出数据,所述激活函数为sigmoid、tanh、relu或softmax函数操作。
在进一步的实施方案中,所述运算单元还包括池化单元,用于对输入的第六数据通过池化运算得到池化操作之后的输出数据,所述池化操作包括:平均值池化,最大值池化或者中值池化。
在进一步的实施方案中,还包括指令控制单元,用来接收存储装置中的指令,经过译码后生成控制信息控制粗粒度选数单元进行选数操作,查找表进行查表操作和运算单元进行计算操作。
在进一步的实施方案中,所述指令为神经网络专用指令,包括控制指令,数据传输指令,运算指令和逻辑指令。
在进一步的实施方案中,所述神经网络专用指令为Cambricon指令集,所述Cambircon指令集中每一条指令长度为64bit,指令由操作码和操作数组成。
在进一步的实施方案中,所述控制指令用于控制神经网络执行过程,包括跳转指令和条件分支指令。
在进一步的实施方案中,数据传输指令用于完成不同存储介质之间的数据传输,包括加载指令、存储指令和搬运指令。
在进一步的实施方案中,所述运算指令用于完成神经网络的算术运算,包括矩阵运算指令,向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令和MAXOUT神经网络运算指令。
在进一步的实施方案中,所述逻辑指令用于完成神经网络的逻辑运算,包括向量逻辑运算指令和标量逻辑运算指令。
在进一步的实施方案中,所述向量逻辑运算指令包括向量比较、向量逻辑运算和向量大于合并指令;优选的,向量比较包括但大于,小于,等于,大于等于,小于等于和不等于;优选的,向量逻辑运算包括与,或,非。
在进一步的实施方案中,所述标量逻辑运算包括标量比较,标量逻辑运算;优选的,所述标量比较包括但大于,小于,等于,大于等于,小于等于和不等于;优选的,所述标量逻辑运算包括逻辑与,逻辑或,以及逻辑非。
在进一步的实施方案中,还包括指令缓存,用于缓存指令,所述指令缓存为片上缓存。
在进一步的实施方案中,还包括非零权值密码本缓存,用于缓存非零权值密码本,所述非零权值密码本缓存为片上缓存。
在进一步的实施方案中,还包括非零权值字典缓存,用于缓存非零权值字典,所述非零权值字典缓存为片上缓存。
在进一步的实施方案中,还包括非零权值位置缓存,用于缓存非零权值位置,还用于将输入数据中每个连接权值一一对应到相应的输入神经元,所述非零权值位置缓存为片上缓存。
在进一步的实施方案中,所述非零权值位置缓存,用于将输入数据中每个连接权值一一对应到相应的输入神经元中的一一对应包括:为采用1表示权值与输入神经元有连接,0表示无连接,每组输出与所有输入的连接状态组成一个0和1的字符串来表示该输出的连接关系。
在进一步的实施方案中,所述非零权值位置缓存,用于将输入数据中每个连接权值一一对应到相应的输入神经元中的一一对应包括:将一组输出第一个连接所在的输入神经元位置距离第一个输入神经元的距离、所述输出第二组输入神经元距离上一个输入神经元的距离,所述输出第三组输入神经元距离上一个输入神经元的距离,依次类推,直到穷举所述输出的所有输入,来表示所述输出的连接关系。
在进一步的实施方案中,还包括输入神经元缓存,用于缓存输入到粗粒度选数单元的输入神经元,所述输入神经元缓存为片上缓存。
在进一步的实施方案中,还包括输出神经元缓存,用于缓存输出神经元,所述输出神经元缓存为片上缓存。
在进一步的实施方案中,还包括直接数据存取单元DMA单元,用于在所述存储单元、指令缓存、非零权值密码本缓存、非零权值字典缓存、非零权值位置缓存,输入神经元缓存和输出神经元缓存中进行数据或者指令读写。
在进一步的实施方案中,还包括预处理单元:用于对原始数据进行预处理,将预处理后的数据输入所述存储单元。
根据本公开的又一方面,提供一种处理方法,包括:
输入神经元和非零权值位置信息,选出需要进行计算的神经元;
接收量化的非零权值字典和非零权值密码本,进行查表操作并输出神经网络非零权值;
接收被选中的神经元和非零权值,对神经网络进行运算并输出神经元。
在进一步的实施方案中,所述处理方法还包括:接收未量化的非零权值以进行神经网络运算。
在进一步的实施方案中,还包括:接收指令,并经过译码后生成控制信息控制神经网络的所述运算。
在进一步的实施方案中,所述运算包括以下至少一种:乘法运算,将所述第一输入数据和第二输入数据相乘,得到相乘之后的数据;加法运算,将第三输入数据通过加法树逐级相加,或者将所述第三输入数据通过和第四输入数据相加得到相加之后的数据;激活函数运算,对第五数据通过激活函数运算得到输出数据,所述激活函数为sigmoid、tanh、relu或softmax函数操作。
在进一步的实施方案中,所述运算还包括池化操作,用于对输入的第六数据通过池化运算得到池化操作之后的输出数据,所述池化操作包括:平均值池化,最大值池化或者中值池化。
在进一步的实施方案中,所述指令为神经网络专用指令,包括控制指令,数据传输指令,运算指令和逻辑指令。
在进一步的实施方案中,所述控制指令用于控制神经网络执行过程,包括跳转指令和条件分支指令。
在进一步的实施方案中,数据传输指令用于完成不同存储介质之间的数据传输,包括加载指令,存储指令,搬运指令。
在进一步的实施方案中,所述运算指令用于完成神经网络的算术运算,包括矩阵运算指令,向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令和MAXOUT神经网络运算指令。
在进一步的实施方案中,所述神经网络专用指令为Cambricon指令集,所述Cambircon指令集中指令由操作码和操作数组成。
Cambircon指令集中每一条指令长度为定长。例如,指令集中每一条指令长度可以为64bit。
在进一步的实施方案中,所述逻辑指令用于完成神经网络的逻辑运算,包括向量逻辑运算指令和标量逻辑运算指令。
在进一步的实施方案中,所述向量逻辑运算指令包括向量比较、向量逻辑运算和向量大于合并指令;优选的,向量比较包括但大于,小于,等于,大于等于,小于等于和不等于;优选的,向量逻辑运算包括逻辑与,逻辑或,或者逻辑非。
在进一步的实施方案中,所述标量逻辑运算包括标量比较,标量逻辑运算;优选的,所述标量比较包括但大于,小于,等于,大于等于,小于等于和不等于;优选的,所述标量逻辑运算包括逻辑与,逻辑或,以及逻辑非。
在进一步的实施方案中,还包括步骤:对输入神经元和非零权值位置信息进行预处理,所述预处理包括切分、高斯滤波、二值化、正则化和、或归一化。
在进一步的实施方案中,接收被选中的神经元和非零权值之后,还包括步骤:存储输入神经元、权值字典、密码本和指令,以及存储输出神经元;以及缓存所述指令、输入神经元、输出神经元。
根据本公开的还一方面,提供一种电子装置,包括权利要求以上任意所述的处理装置,所述电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备;
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶和/或油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪(三)有益效果
本公开对神经网络的权值进行粗粒度剪枝和局部量化,相比于传统的方法,能够使稀疏神经网络更加规则化,利于用硬件进行加速,同时减少非零权值位置的存储空间;局部量化能够充分挖掘神经网络的权值分布特性,减少表示每一个权值的比特数,从而进一步减少存储开销和访存开销。本公开的神经网络处理器能够充分挖掘粗细度稀疏和局部量化的特性,减少访存同时减少计算量,从而获得加速比并降低能耗。粗粒度选数单元能够根据非零权值位置信息选出需要参与计算的神经元,从而减少计算量,查找表能够根据非零权值字典和非零权值密码本查找出非零权值,从而减少访存量。
附图说明
图1是本公开实施例数据压缩方法流程图。
图2是本公开实施例的神经网络的全连接层中实施步骤S101的示意图。
图3是本公开实施例的神经网络的卷积层中实施步骤S101的示意图。
图4为本公开实施例的权值量化的过程示意图。
图5为本公开实施例压缩装置的结构示意图。
图6是本公开实施例的处理装置的结构示意图。
图7是本公开实施例的另一处理装置的结构示意图。
图8是本公开实施例的处理方法流程图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开作进一步的详细说明。
本公开实施例的所有模块都可以是硬件结构,硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器,DNA计算机。
根据本公开的基本构思,提供一种压缩神经网络的方法,步骤包括:粗粒度剪枝和第一重训练,以及局部量化和第二重训练两个步骤。相比于传统的方法,能够使稀疏神经网络更加规则化,利于用硬件进行加速,同时减少非零权值位置的存储空间;局部量化能够充分挖掘神经网络的权值分布特性,减少表示每一个权值的比特数,从而进一步减少存储开销和访存开销。
图1是本公开实施例数据压缩方法流程图。该数据压缩方法包括:
S101:使用滑动窗口从神经网络选取出一组权值,将选取的权值都置为零;对神经网络进行第一重训练,训练过程中已经被置为零的权值保持为零;
S102:对神经网络的权值进行分组,然后对组内权值进行聚类和编码,对聚类和编码后的神经网络进行第二重训练。
其中步骤S101可概括为粗粒度剪枝和第一重训练,具体可包括步骤
S1011:使用滑动窗口(sliding window)选取训练完成神经网络的一组权值;
S1012:将选取的权值都置为零;
S1013:将剪枝后的神经网络使用反向传播算法(back propagation)进行重新训练,训练过程中已经被置为0的权值将一直保持0。
上述选取的方法可以有以下几种,组内所有权值绝对值的算术平均值小于某个阈值(如第一代表权值);或者组内所有权值绝对值的几何平均值小于某个阈值(如第二代表权值);或者组内所有权值绝对值的最大值小于某个阈值(如第三代表权值)。
上述粗粒度剪枝可以应用于神经网络的全连接层(fully-connected layer),卷积层(convolutional layer)和LSTM(long short-term memory)层。
参见图2所示,神经网络的全连接层可以看成是一个二维矩阵(Nin,Nout),其中Nin表示输入神经元的个数,Nout表示输出神经元的个数,共有Nin*Nout个权值。在粗粒度剪枝时,我们先设定一个大小为Bin*Bout的滑动窗口(sliding window),滑动窗口可以沿着Bin的方向按照Sin的步长(stride)进行滑动,也可以沿着Bout方向按照Sout的步长进行滑动。当某个滑动窗口内的一组权值满足条件时,这组权值将全部被置为0,即Bin*Bout个权值将同时置为0。
参见图3所示,神经网络的卷积层可以看成是一个四维矩阵(Nfin,Nfout,Kx,Ky),其中Nfin表示输入特征图像(feature map)数量,Nout表示输出特征图像数量,(Kx,Ky)表示卷积核(kernel)的大小。在粗粒度剪枝时,我们先设定一个大小为Bfin*Bfout*Bx*By的滑动窗口,滑动窗口可以沿着Bfin的方向按照Sfin的步长(stride)进行滑动,或者沿着Bfout方向按照Sfout的步长进行滑动,或者沿着Bx方向按照Sx的步长进行滑动,或沿着By方向按照Sy的步长进行滑动。当某个滑动窗口内的一组权值满足条件时,这组权值将全部被置为0,即Bfin*Bfout*Bx*By个权值将同时置为0。
LSTM(long short-term memory)层的权值由多个全连接层权值组成,假设LSTM层的权值由i个全连接层权值组成,其中i为大于0的正整数。每个全连接层权值分别为(Nin_i,Nout_i),其中Nin_i表示第i个全连接层权值输入神经元个数,Nout_i表示第i个全连阶层权值输出神经元个数,在粗粒度剪枝时,对于第i个全连阶层,我们先设定一个大小为Bin_i*Bout_i的滑动窗口,其中Bin_i为大于等于1小于等于Nin_i的正整数,Bout_i为大于等于1小于等于Nout_i的正整数。滑动窗口可以沿着Bin_i的方向按照Sin_i的步长进行滑动,也可以沿着Bout_i方向按照Sout_i的步长进行滑动,其中Sin_i为大于等于1小于等于Bin_i的正整数,Sout_i为大于等于1小于等于Bout_i的正整数。当滑动窗口内的一组权值被选中时,这组权值将全部被置为0,即Bin_i*Bout_i个权值将同时置为0。
第一重训练:将剪枝后的神经网络使用反向传播算法(back propagation)进行重新训练,训练过程中已经被置为0的权值将一直保持0。不断重复粗粒度剪枝和重训练直至在保证精度不损失x%的前提下没有权值能被置为0,x为大于0小于100的数,x根据不同的神经网络以及不同的应用可以有不同的选择。在一个实施例里,x的值可以为0-5。
对于步骤S102,可概括为量化和重训练,可以包括步骤:
S1021:对神经网络权值进行分组;
S1022:对每一组权值用聚类算法进行聚类操作,将一组权值分成m个类,每个类计算出一个中心权值,每个类中的所有权值都用中心权值替换;。其中m是大于0的正整数。
S1023:、对中心权值进行编码操作,得到密码本和权值字典
S1024:将神经网络使用反向传播算法(back propagation)进行重新训练,训练过程中已经被置为0的权值将一直保持0,且只训练密码本,不训练字典。
对于步骤S1021中的分组:将神经网络的权值进行分组操作。进一步的,分组的策略可以按照分为一组,层类型分组,层间分组,层内分组。
图4为本公开实施例的权值量化的过程示意图,如图4所示,按照分组的策略对权值进行分组,得到有序排列的权值矩阵。再对分组后的权值矩阵进行组内采样以及聚类操作,从而将值相近的权值划为同一类别,得到1.50、-0.13、-1.3和0.23这4个中心权值,并分别对应四个类别的权值。然后,对中心权值进行编码操作,将中心权值为-1.3的类别编码为00,将中心权值为-0.13的类别编码为01,将中心权值为0.23的类别编码为10,将中心权值为1.50的类别编码为11,此为密码本内容。另外,还分别用4个权值对应的编码内容(00、01、10和11)分别表示对应类别中的权值,从而得到权值字典。该量化过程充分挖掘了神经网络层间权值的相似性以及层内权值局部相似性,得到神经网络的权值分布特性从而进行低比特量化,减小了表示每一个权值的比特数,从而降低了权值存储开销和访存开销。
其中中心权值选择方法可以为使得代价函数J(w,w0)最小,
其中w是类中所有权值,w0是中心权值,n是类中权值数量,wi是类中第i个权值,i是大于等于1小于等于n的正整数。
进一步的,局部量化中按照层类型分组方法将神经网络的权值按照层类型进行分组。所有卷积层的权值为一组,所有全连接层的权值为一组,所有LSTM(Long Short-TermMemory)层的权值为一组。若一个神经网络有i个卷积层,j个全连阶层,m个LSTM层,t种不同类型的层,其中i,j,m为大于等于0的正整数且满足i+j+m>=1,t为大于等于1的正整数且满足t=(i>0)+(j>0)+(m>0),神经网络的权值将被分为t组。
进一步的,局部量化中按照层间分组的方法将神经网络的权值按照层间结构进行分组。一个或者连续多个卷积层分为一组,一个或者连续多个全连阶层分为一组,一个或者连续多个LSTM层分为一组。
进一步的,局部量化中按照层内分组将神经网络的权值按照层内结构进行分组,将神经网络的卷积层,全连接层和LSTM内部进行分组量化。
更进一步的,神经网络的卷积层可以看成是一个四维矩阵(Nfin,Nfout,Kx,Ky),其中Nfin,Nfout,Kx,Ky是大于0的正整数,Nfin表示输入特征图像(feature map)数量,Nout表示输出特征图像数量,(Kx,Ky)表示卷积核(kernel)的大小。卷积层的权值按照(Mfin,Mfout,Mx,My)的组大小被分成Nfin*Nfout*Kx*Ky/(Mfin*Mfout*Mx*My)个不同的组,其中Mfin为大于0小于等于Nfin的正整数,Mfout为大于0小于等于Nfout的正整数,Mx为大于0小于等于Kx的正整数,My为大于0小于等于Ky的正整数。
更进一步的,神经网络的全连接层可以看成是一个二维矩阵(Nin,Nout),其中Nin,Nout是大于0的正整数,Nin表示输入神经元的个数,Nout表示输出神经元的个数,共有Nin*Nout个权值。全连接层权值按照(Min,Mout)的组大小被分成(Nin*Nout)/(Min*Mout)个不同的组,其中Min是大于0小于等于Nin的正整数,Mout是大于0小于等于Nout的正整数。
更进一步的,神经网络的LSTM层权值可以看出多个全连接层的权值的组合,假设LSTM层的权值由n个全连接层权值组成,其中n为大于0的正整数,则每一个全连接层都可以按照全连接层的分组方式进行分组操作。
本公开实施例的另一方面,还提供了一种神经网络数据压缩装置,图5为本公开实施例压缩装置的结构示意图,如图5所示,其包括:
存储器1,用于存储操作指令;所述操作指令一般为二进制数形式,由操作码和地址码构成,操作码指示处理器2即将进行的操作,地址码指示处理器2到存储器1中的地址中读取参与操作的数据。
处理器2,用于执行存储器1中的操作指令,在执行指令时依照上述的权值的方法进行操作。
本公开的压缩装置,处理器2通过执行存储器1中的操作指令,依照前述粗粒度剪枝和量化方法进行操作,能够规则化地对神经网络进行稀疏,减少神经网络参数,同时对杂乱无章的权值进行量化,得到低比特化且规范化的量化权值,充分挖掘了神经网络层间权值的相似性以及层内权值局部相似性,得到神经网络的权值分布特性从而进行低比特量化,减小了表示每一个权值的比特数,从而降低了权值存储开销和访存开销。
图6是本公开实施例的一种处理装置的结构示意图。本公开提供了一种新的神经网络的处理器,神经网络处理器能够充分挖掘粗粒度细数和局部量化的特性,减少访存和计算量,从而获得加速比并降低能耗。
本公开实施例的加速装置包括粗粒度选数单元,查找表单元和运算单元。
粗粒度选数单元接收输入神经元和非零权值位置信息,选择出需要进行计算的神经元。
查找表单元接收非零权值字典和非零权值密码本,进行查表操作得到神经网络非零权值。
运算单元接收被选中的神经元和非零权值,完成神经网络运算并将输出神经元重新传输给存储装置。
更进一步的,粗粒度选数单元接收输入神经元和非零权值位置信息,并选择出非零权值对应的神经元并传输给运算单元。
更进一步的,查找表对于量化的非零权值根据密码本和字典查找出非零权值并传输给运算单元,对于没量化的非零权值直接通过旁路传输给运算单元。
更进一步的,运算单元执行运算包括第一部分是将所述输入数据1和输入数据2相乘,得到相乘之后的数据;和/或第二部分执行加法树运算,用于将输入数据1通过加法树逐级相加,或者将所述输入数据1通过和输入数据2相加得到输出数据;和/或第三部分执行激活函数运算,对输入数据通过激活函数(active)运算得到输出数据;和/或第四部分执行池化运算,out=(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。以上几个部分的运算可以自由选择一个多个部分进行不同顺序的组合,从而实现各种不同功能的运算。
具体的,运算单元包括但不仅限于:第一部分乘法器,第二部分加法树,第三部分为激活函数单元。第一部分将输入数据1(in1)和输入数据2(in2)相乘得到相乘之后的输出(out),过程为:out=in1*in2;第二部分将输入数据inl通过加法树逐级相加得到输出数据(out),其中in1是一个长度为N的向量,N大于1,过程为:out=in1[1]+in1[2]+...+in1[N],和/或将输入数据(inl)通过加法树累加之后和输入数据(in2)相加得到输出数据(out),过程为:out=in1[1]+in1[2]+...+in1[N]+in2,或者将输入数据(inl)和输入数据(in2)相加得到输出数据(out),过程为:out=inl+in2;第三部分将输入数据(in)通过激活函数(active)运算得到激活输出数据(out),过程为:out=active(in),激活函数active可以是sigmoid、tanh、relu、softmax等,除了做激活操作,第三部分可以实现其他的非线性函数,可将输入数据(in)通过运算(f)得到输出数据(out),过程为:out=f(in);和/或池化单元,池化单元将输入数据(i n)通过池化运算得到池化操作之后的输出数据(out),过程为out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。
更进一步的,参见图7所示,神经网络处理器还包括预处理模块。该模块对原始数据进行预处理,包括切分、高斯滤波、二值化、正则化、归一化等等。
进一步的,处理器还包括存储单元,用来存储神经网络的神经元,权值以及指令。
更进一步的,存储单元存放权值时只存放非零权值以及非零权值的位置信息。存储装置存放量化的非零权值时只存放非零权值密码本和非零权值字典。
进一步的,处理器还包括指令控制单元,用来接收存储装置中的指令,经过译码后生成控制信息控制粗粒度选数单元进行选数操作,查找表进行查表操作和运算单元进行计算操作。
可选地,所述指令可以为神经网络专用指令。
所述神经网络专用指令,包括所有专用于完成人工神经网络运算的指令。神经网络专用指令包括但不仅限于控制指令,数据传输指令,运算指令和逻辑指令。其中控制指令控制神经网络执行过程。数据传输指令完成不同存储介质之间的数据传输,数据格式包括但不仅限于矩阵,向量和标量。运算指令完成神经网络的算术运算,包括但不仅限于矩阵运算指令,向量运算指令,标量运算指令,卷积神经网络运算指令,全连接神经网络运算指令,池化神经网络运算指令,RBM神经网络运算指令,LRN神经网络运算指令,LCN神经网络运算指令,LSTM神经网络运算指令,RNN神经网络运算指令,RELU神经网络运算指令,PRELU神经网络运算指令,SIGMOID神经网络运算指令,TANH神经网络运算指令,MAXOUT神经网络运算指令。逻辑指令完成神经网络的逻辑运算,包括但不仅限于向量逻辑运算指令和标量逻辑运算指令。
更具体的,所述神经网络专用指令包括Cambricon指令集。
所述Cambricon指令集的特征在于,指令集中每一条指令长度为定长,例如指令长度为64bit,指令由操作码和操作数组成。指令集包含四种类型的指令,分别是控制指令(control instructions),数据传输指令(data transfer instructions),运算指令(computational instructions),逻辑指令(logical instructions)。
进一步的,控制指令用于控制执行过程。控制指令包括跳转(jump)指令和条件分支(conditional branch)指令。
进一步的,数据传输指令用于完成不同存储介质之间的数据传输。数据传输指令包括加载(load)指令,存储(store)指令,搬运(move)指令。load指令用于将数据从主存加载到缓存,store指令用于将数据从缓存存储到主存,move指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据。数据传输指令支持三种不同的数据组织方式,包括矩阵,向量和标量。
进一步的,运算指令用于完成神经网络算术运算。运算指令包括矩阵运算指令,向量运算指令和标量运算指令。
更进一步的,矩阵运算指令完成神经网络中的矩阵运算,包括矩阵乘向量(matrixmultiply vector),向量乘矩阵(vector multiply matrix),矩阵乘标量(matrixmultiply scalar),外积(outer product),矩阵加矩阵(matrix add matrix),矩阵减矩阵(matrix subtract matrix)。
更进一步的,向量运算指令完成神经网络中的向量运算,包括向量基本运算(vector elementary arithmetics),向量超越函数运算(vector transcendentalfunctions),内积(dot product),向量随机生成(random vector generator),向量中最大/最小值(maximum/minimum of a vector)。其中向量基本运算包括向量加,减,乘,除(add,subtract,multiply,divide),向量超越函数是指那些不满足任何以多项式作系数的多项式方程的函数,包括但不仅限于指数函数,对数函数,三角函数,反三角函数。
更进一步的,标量运算指令完成神经网络中的标量运算,包括标量基本运算(scalar elementary arithmetics)和标量超越函数运算(scalar transcendentalfunctions)。其中标量基本运算包括标量加,减,乘,除(add,subtract,multiply,divide),标量超越函数是指那些不满足任何以多项式作系数的多项式方程的函数,包括但不仅限于指数函数,对数函数,三角函数,反三角函数。
进一步的,逻辑指令用于神经网络的逻辑运算。逻辑运算包括向量逻辑运算指令和标量逻辑运算指令。
更进一步的,向量逻辑运算指令包括向量比较(vector compare),向量逻辑运算(vector logical operations)和向量大于合并(vector greater than merge)。其中向量比较包括但大于,小于,等于,大于等于,小于等于和不等于。向量逻辑运算包括与,或,非。
更进一步的,标量逻辑运算包括标量比较(scalar compare),标量逻辑运算(scalar logical operations)。其中标量比较包括但大于,小于,等于,大于等于,小于等于和不等于。标量逻辑运算包括与,或,非。
更进一步的,参见图7所示,神经网络处理器还包括直接数据存取单元DMA(directmemory access)。
更进一步的,参见图7所示,神经网络处理器还包括指令缓存,输入神经元缓存,非零权值密码本,非零权值字典缓存,非零权值位置缓存,输出神经元缓存。
特别的,存储单元主要用来存储神经网络的神经元,权值以及指令。其中存放权值时只存放非零权值以及非零权值的位置信息。存储单元存放量化的非零权值时只存放非零权值密码本和非零权值字典。
特别的,DMA用于在所述存储单元、指令缓存、非零权值密码本、非零权值字典、非零权值位置缓存,输入神经元缓存和输出神经元缓存中进行数据或者指令读写。
指令缓存,用于存储专用指令;
非零权值密码本缓存,用于缓存非零权值密码本;
非零权值字典缓存,用于缓存非零权值权值字典;
非零权值位置缓存,用于缓存非零权值位置数据;非零权值位置缓存将输入数据中每个连接权值一一对应到相应的输入神经元。
一种情形下非零权值位置缓存一一对应的方法为采用1表示有连接,0表示无连接,每组输出与所有输入的连接状态组成一个0和1的字符串来表示该输出的连接关系。另一种情形下非零权值位置缓存一一对应的方法为采用1表示有连接,0表示无连接,每组输入与所有输出的连接状态组成一个0和1的字符串来表示该输入的连接关系。另一种情形下非零权值位置缓存一一对应的方法为将一组输出第一个连接所在的输入神经元位置距离第一个输入神经元的距离、所述输出第二组输入神经元距离上一个输入神经元的距离,所述输出第三组输入神经元距离上一个输入神经元的距离,……,依次类推,直到穷举所述输出的所有输入,来表示所述输出的连接关系。
输入神经元缓存,用于缓存输入到粗粒度选数单元的输入神经元;
输出神经元缓存,用于缓存运算单元输出的输出神经元。
查找表单元接收权值字典和权值密码本,经过查找操作获得权值。对于没量化的权值直接通过旁路传输给运算单元。
本公开还提供了一种神经网络压缩装置,包括存储装置,指令译码装置和计算装置组成。存储装置中存储了压缩神经网络的指令序列,指令序列包含控制指令,数据传输指令,计算指令等,能够控制计算装置完成神经网络格式转化,对应格式压缩的任务;指令译码装置接收存储单元中的指令经过译码后生成控制信号控制计算装置;计算装置接收控制信号对神经网络完成上述粗粒度剪枝和量化操作。计算装置用于执行存储装置中的可执行指令,在执行指令时依照以上所述的数据压缩方法进行操作。
本公开还提供了一种神经网络数据的处理方法,如图8所示,该处理方法包括步骤:
S801:接收输入神经元、权值字典、密码本和指令;
S802:译码得到选数控制信息、查找控制信息和运算控制信息;
S803:在选数控制信息、查找控制信息和运算控制信息下进行运算,得到输出神经元。
在一些实施例中,所述处理方法还包括:接收未量化的非零权值以进行神经网络运算。
在一些实施例中,处理方法还包括:接收指令,并经过译码后生成控制信息控制神经网络的所述运算。
在一些实施例中,运算包括以下至少一种:乘法运算,将所述第一输入数据和第二输入数据相乘,得到相乘之后的数据;加法运算,将第三输入数据通过加法树逐级相加,或者将所述第三输入数据通过和第四输入数据相加得到相加之后的数据;激活函数运算,对第五数据通过激活函数运算得到输出数据,所述激活函数为sigmoid、tanh、relu或softmax函数操作。
在一些实施例中,所述运算还包括池化操作,用于对输入的第六数据通过池化运算得到池化操作之后的输出数据,所述池化操作包括:平均值池化,最大值池化或者中值池化。
在一些实施例中,所述指令为神经网络专用指令,包括控制指令,数据传输指令,运算指令和逻辑指令。
在一些实施例中,所述控制指令用于控制神经网络执行过程,包括跳转指令和条件分支指令。
在一些实施例中,数据传输指令用于完成不同存储介质之间的数据传输,包括加载指令,存储指令,搬运指令。
在一些实施例中,所述运算指令用于完成神经网络的算术运算,包括矩阵运算指令,向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令和MAXOUT神经网络运算指令。
其中,RBM神经网络运算指令用于实现Restricted Boltzmann Machine(RBM)神经网络运算。
其中,LRN神经网络运算指令用于实现Local Response Normalization (LRN)神经网络运算。
其中,LSTM神经网络运算指令用于实现Long Short-Term Memory (LSTM)神经网络运算。
其中,RNN神经网络运算指令用于实现Recurrent Neural Networks(RNN)神经网络运算。
其中,RELU神经网络运算指令用于实现Rectified linear unit(RELU)神经网络运算。
其中,PRELU神经网络运算指令用于实现Parametric Rectified Linear Unit(PRELU)神经网络运算。
其中,SIGMOID神经网络运算指令用于实现S型生长曲线(SIGMOID)神经网络运算
其中,TANH神经网络运算指令用于实现双曲正切函数(TANH)神经网络运算。
其中,MAXOUT神经网络运算指令用于实现(MAXOUT)神经网络运算。
在一些实施例中,神经网络专用指令为Cambricon指令集,所述Cambircon指令集中每一条指令长度为定长,例如指令长度为64bit,指令由操作码和操作数组成。
在一些实施例中,逻辑指令用于完成神经网络的逻辑运算,包括向量逻辑运算指令和标量逻辑运算指令。
在一些实施例中,向量逻辑运算指令包括向量比较、向量逻辑运算和向量大于合并指令;优选的,向量比较包括但大于,小于,等于,大于等于,小于等于和不等于;优选的,向量逻辑运算包括逻辑与,逻辑或,或者逻辑非。
在一些实施例中,标量逻辑运算包括标量比较,标量逻辑运算;优选的,所述标量比较包括但大于,小于,等于,大于等于,小于等于和不等于;优选的,所述标量逻辑运算包括逻辑与,逻辑或,以及逻辑非。
在一些实施例中,处理方法还包括步骤:对输入神经元和非零权值位置信息进行预处理,所述预处理包括切分、高斯滤波、二值化、正则化和、或归一化。
在一些实施例中,处理方法中,接收被选中的神经元和非零权值之后,还包括步骤:存储输入神经元、权值字典、密码本和指令,以及存储输出神经元;以及缓存所述指令、输入神经元、输出神经元。
在一个实施例里,本公开公开了一个芯片,其包括了上述神经网络处理器。
在一个实施例里,本公开公开了一个芯片封装结构,其包括了上述芯片。
在一个实施例里,本公开公开了一个板卡,其包括了上述芯片封装结构。
在一个实施例里,本公开公开了一个电子装置,其包括了上述板卡。
电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶和/或油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
所有的模块都可以是硬件结构,硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器,DNA计算机。
通过本公开实施例的数据压缩方法和处理方法,能够规则、高压缩比地压缩神经网络。加速装置内部集成了压缩方法,实现对神经网络的压缩功能。加速器能够充分挖掘压缩后的神经网络的特性,减少访存同时减少计算量,从而获得加速比并降低能耗。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (20)
1.一种数据压缩方法,用于减小电子设备的存储开销,其中,所述方法包括:
对数据进行粗粒度剪枝,包括:使用滑动窗口从神经网络选取出一组权值,将选取的权值都置为零;对神经网络进行第一重训练,训练过程中已经被置为零的权值保持为零;其中,使用滑动窗口从神经网络选取出一组权值包括对神经网络的全连接层、卷积层或LSTM层的权值进行剪枝;对神经网络的全连接层进行剪枝包括:设全连接层的权值为一个二维矩阵(Nin,Nout),其中Nin是输入神经元的个数,Nout是输出神经元的个数,共有Nin*Nout个权值,设定一个大小为Bin*Bout的滑动窗口,其中Bin为大于等于1小于等于Nin正整数,Bout为大于等于1小于等于Nout的正整数;使滑动窗口能够沿着Bin的方向按照Sin的步长进行滑动,也可以沿着Bout方向按照Sout的步长进行滑动,其中Sin为大于等于1小于等于Bin的正整数,Sout为大于等于1小于等于Bout的正整数;当滑动窗口内的一组权值被选取时,这组权值将全部被置为零,即Bin*Bout个权值将同时置为零;
对数据进行量化,包括:对神经网络的权值进行分组,对每一组权值用聚类算法进行聚类操作,每个类计算出一个中心权值,每个类中的所有权值都用中心权值替换。
2.根据权利要求1所述的方法,其特征在于,对数据进行量化之后,对中心权值进行编码操作,得到密码本和权值字典。
3.根据权利要求2所述的方法,其特征在于,对中心权值进行编码操作之后,对神经网络进行第二重训练。
4.根据权利要求3所述的方法,其特征在于,对神经网络进行第二重训练时只训练密码本,权值字典内容保持不变。
5.根据权利要求1-4任一所述的方法,其特征在于,使用滑动窗口选取神经网络的一组权值的条件为:
将组内所有权值绝对值的算术平均值作为该组的第一代表权值,第一代表权值小于第一阈值;或者将组内所有权值绝对值的几何平均值作为该组的第二代表权值,第二代表权值小于第二阈值;或者将组内所有权值绝对值的最大值作为该组的第三代表权值,第三代表权值小于第三阈值。
6.根据权利要求1-4任一所述的方法,其特征在于,处理方法还包括:重复使用滑动窗口从神经网络选取出一组权值,将选取的权值都置为零;以及对神经网络进行第一重训练,直至保证不损失设定精度的前提下没有权值能被置为零。
7.根据权利要求6所述的方法,其特征在于,所述设定精度为x%,其中x介于0至5之间。
8.根据权利要求1所述的方法,其特征在于,对神经网络的卷积层进行剪枝包括:
设卷积层的权值为一个四维矩阵(Nfin,Nfout,Kx,Ky),其中Nfin是输入特征图像的个数,Nfout是输出特征图像的个数,(Kx,Ky)是卷积核的大小,共有Nfin*Nfout*Kx*Ky个权值,设定一个大小为Bfin*Bfout*Bx*By的四维滑动窗口,其中Bfin为大于等于1小于等于Nfin的正整数,Bfout为大于等于1小于等于Nfout的正整数,Bx为大于等于1小于等于Kx的正整数,By为大于等于1小于等于Ky的正整数;
使滑动窗口沿着Bfin的方向按照Sfin的步长(stride)进行滑动,或者沿着Bfout方向按照Sfout的步长进行滑动,或者沿着Bx方向按照Sx的步长进行滑动,或沿着By方向按照Sy的步长进行滑动,其中Sfin为大于等于1小于等于Bfin的正整数,Sfout为大于等于1小于等于Bfout的正整数,Sx为大于等于1小于等于Bx的正整数,Sy为大于等于1小于等于By的正整数;当某个滑动窗口内的一组权值被选取时,这组权值将全部被置为零,即Bfin*Bfout*Bx*By个权值将同时置为零。
9.根据权利要求1或8所述的方法,其特征在于,对神经网络的LSTM层进行剪枝包括:
设定LSTM层的权值由m个全连接层权值组成,其中m为大于0的正整数,第i个全连接层权值为(Nin_i,Nout_i),其中i是大于0小于等于m的正整数,Nin_i表示第i个全连接层权值输入神经元个数,Nout_i表示第i个全连接层权值输出神经元个数;还设定一个大小为Bin_i*Bout_i的滑动窗口,其中Bin_i为大于等于1小于等于Nin_i的正整数,Bout_i为大于等于1小于等于Nout_i的正整数;使滑动窗口沿着Bin_i的方向按照Sin_i的步长进行滑动,或沿着Bout_i方向按照Sout_i的步长进行滑动,其中Sin_i为大于等于1小于等于Bin_i的正整数,Sout_i为大于等于1小于等于Bout_i的正整数;当滑动窗口内的一组权值被选取时,这组权值将全部被置为零,即Bin_i*Bout_i个权值将同时置为零。
10.根据权利要求1所述的方法,其特征在于,所述第一重训练采用反向传播算法,且训练过程中已经被置为零的权值保持为零。
11.根据权利要求1所述的方法,其特征在于,对神经网络的权值进行分组方式包括:分为一组、层类型分组、层间分组和/或层内分组。
12.根据权利要求11所述的方法,其特征在于,所述分为一组,为将神经网络的所有权值归为一组。
13.根据权利要求11或12所述方法,其特征在于,所述层类型分组,为将神经网络中所有卷积层的权值、所有全连接层的权值和所有长短时记忆网络层的权值各划分成一组。
14.根据权利要求11或12所述的方法,其特征在于,所述层间分组,为将神经网络中一个或者多个卷积层的权值、一个或者多个全连接层的权值和一个或者多个长短时记忆网络层的权值各划分成一组。
15.根据权利要求11或12任一所述的方法,其特征在于,所述层内分组,将神经网络的一层内的权值进行切分,切分后的每一个部分划分为一组。
16.根据权利要求1任一所述的方法,其特征在于,所述聚类算法包括K-means、K-medoids、Clara和/或Clarans。
17.根据权利要求1任一所述的方法,其特征在于,所述中心权值选择方法为使得代价函数J(w,w0)最小。
19.根据权利要求3所述的方法,其特征在于,对聚类和编码后的神经网络进行第二重训练包括:对聚类和编码后的神经网络使用反向传播算法进行重新训练,训练过程中已经被置为0的权值将一直保持0,并且只训练权值密码本,不训练权值字典。
20.一种数据的压缩装置,用于减小电子设备的存储开销,包括:
存储器,用于存储操作指令;
处理器,用于执行存储器中的操作指令,在执行该操作指令时依照权利要求1至19中任一所述的压缩方法进行操作。
Priority Applications (16)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710689666.6A CN109389210B (zh) | 2017-08-09 | 2017-08-09 | 处理方法和处理装置 |
CN201710677987.4A CN109389218B (zh) | 2017-08-09 | 2017-08-09 | 数据压缩方法及压缩装置 |
PCT/CN2018/088033 WO2018214913A1 (zh) | 2017-05-23 | 2018-05-23 | 处理方法及加速装置 |
EP18806558.5A EP3637325A4 (en) | 2017-05-23 | 2018-05-23 | TREATMENT METHOD AND ACCELERATION DEVICE |
EP19214015.0A EP3657399A1 (en) | 2017-05-23 | 2018-05-23 | Weight pruning and quantization method for a neural network and accelerating device therefor |
CN201880002821.5A CN109478251B (zh) | 2017-05-23 | 2018-05-23 | 处理方法及加速装置 |
EP19214007.7A EP3657340B1 (en) | 2017-05-23 | 2018-05-23 | Processing method and accelerating device |
CN201910474387.7A CN110175673B (zh) | 2017-05-23 | 2018-05-23 | 处理方法及加速装置 |
EP19214010.1A EP3657398A1 (en) | 2017-05-23 | 2018-05-23 | Weight quantization method for a neural network and accelerating device therefor |
US16/699,029 US11710041B2 (en) | 2017-05-23 | 2019-11-28 | Feature map and weight selection method and accelerating device |
US16/699,051 US20220335299A9 (en) | 2017-05-23 | 2019-11-28 | Processing method and accelerating device |
US16/699,046 US11727276B2 (en) | 2017-05-23 | 2019-11-28 | Processing method and accelerating device |
US16/699,027 US20200097826A1 (en) | 2017-05-23 | 2019-11-28 | Processing method and accelerating device |
US16/699,032 US11907844B2 (en) | 2017-05-23 | 2019-11-28 | Processing method and accelerating device |
US16/699,055 US20200097828A1 (en) | 2017-05-23 | 2019-11-28 | Processing method and accelerating device |
US16/699,049 US20200134460A1 (en) | 2017-05-23 | 2019-11-28 | Processing method and accelerating device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710677987.4A CN109389218B (zh) | 2017-08-09 | 2017-08-09 | 数据压缩方法及压缩装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710689666.6A Division CN109389210B (zh) | 2017-05-23 | 2017-08-09 | 处理方法和处理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109389218A CN109389218A (zh) | 2019-02-26 |
CN109389218B true CN109389218B (zh) | 2021-09-03 |
Family
ID=65415148
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710677987.4A Active CN109389218B (zh) | 2017-05-23 | 2017-08-09 | 数据压缩方法及压缩装置 |
CN201710689666.6A Active CN109389210B (zh) | 2017-05-23 | 2017-08-09 | 处理方法和处理装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710689666.6A Active CN109389210B (zh) | 2017-05-23 | 2017-08-09 | 处理方法和处理装置 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN109389218B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110163370B (zh) | 2019-05-24 | 2021-09-17 | 上海肇观电子科技有限公司 | 深度神经网络的压缩方法、芯片、电子设备及介质 |
CN110298446B (zh) * | 2019-06-28 | 2022-04-05 | 济南大学 | 面向嵌入式系统的深度神经网络压缩和加速方法及系统 |
CN112488285A (zh) * | 2019-09-12 | 2021-03-12 | 上海大学 | 基于神经网络权重数据分布特点的量化方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105512723A (zh) * | 2016-01-20 | 2016-04-20 | 南京艾溪信息科技有限公司 | 一种用于稀疏连接的人工神经网络计算装置和方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11423311B2 (en) * | 2015-06-04 | 2022-08-23 | Samsung Electronics Co., Ltd. | Automatic tuning of artificial neural networks |
CN106557332A (zh) * | 2016-11-30 | 2017-04-05 | 上海寒武纪信息科技有限公司 | 一种指令生成过程的复用方法及装置 |
CN106919942B (zh) * | 2017-01-18 | 2020-06-26 | 华南理工大学 | 用于手写汉字识别的深度卷积神经网络的加速压缩方法 |
-
2017
- 2017-08-09 CN CN201710677987.4A patent/CN109389218B/zh active Active
- 2017-08-09 CN CN201710689666.6A patent/CN109389210B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105512723A (zh) * | 2016-01-20 | 2016-04-20 | 南京艾溪信息科技有限公司 | 一种用于稀疏连接的人工神经网络计算装置和方法 |
Non-Patent Citations (4)
Title |
---|
Cambricon-X: An Accelerator for Sparse Neural Networks;Shijin Zhang 等;《IEEE》;20161231;第1-12页 * |
DEEP COMPRESSION: COMPRESSING DEEP NEURAL NETWORKS WITH PRUNING, TRAINED QUANTIZATION AND HUFFMAN CODING;Song Han 等;《ICLR 2016》;20161231;第1-14页 * |
Learning both Weights and Connections for Efficient Neural Networks;Song Han 等;《https://arxiv.org/abs/1506.02626》;20151130;第1-9页 * |
基于在线学习RBF神经网络的故障预报;黄红梅 等;《南京航空航天大学学报》;20070430;第249-252页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109389210B (zh) | 2021-06-18 |
CN109389218A (zh) | 2019-02-26 |
CN109389210A (zh) | 2019-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200097828A1 (en) | Processing method and accelerating device | |
CN111221578B (zh) | 计算装置以及计算方法 | |
CN109389208B (zh) | 数据的量化装置及量化方法 | |
CN110163334B (zh) | 集成电路芯片装置及相关产品 | |
US10657439B2 (en) | Processing method and device, operation method and device | |
US11544542B2 (en) | Computing device and method | |
CN109389218B (zh) | 数据压缩方法及压缩装置 | |
CN109478251B (zh) | 处理方法及加速装置 | |
CN111626413A (zh) | 一种计算装置及方法 | |
CN109389209B (zh) | 处理装置及处理方法 | |
CN109697507B (zh) | 处理方法及装置 | |
CN108960420B (zh) | 处理方法及加速装置 | |
CN110196735A (zh) | 一种计算装置及相关产品 | |
CN110196734A (zh) | 一种计算装置及相关产品 | |
CN114492778B (zh) | 神经网络模型的运行方法、可读介质和电子设备 | |
CN115409150A (zh) | 一种数据压缩方法、数据解压方法及相关设备 | |
CN109102074B (zh) | 一种训练装置 | |
CN111198714A (zh) | 重训练方法及相关产品 | |
CN114492779B (zh) | 神经网络模型的运行方法、可读介质和电子设备 | |
WO2019165939A1 (zh) | 一种计算装置及相关产品 | |
Anuradha et al. | Design and Implementation of High Speed VLSI Architecture of Online Clustering Algorithm for Image Analysis | |
CN116384445A (zh) | 神经网络模型的处理方法和相关装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |