CN107977704B - 权重数据存储方法和基于该方法的神经网络处理器 - Google Patents
权重数据存储方法和基于该方法的神经网络处理器 Download PDFInfo
- Publication number
- CN107977704B CN107977704B CN201711102821.6A CN201711102821A CN107977704B CN 107977704 B CN107977704 B CN 107977704B CN 201711102821 A CN201711102821 A CN 201711102821A CN 107977704 B CN107977704 B CN 107977704B
- Authority
- CN
- China
- Prior art keywords
- weight
- effective
- convolution
- weights
- index
- 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 59
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 42
- 238000013500 data storage Methods 0.000 title claims abstract description 24
- 239000011159 matrix material Substances 0.000 claims abstract description 50
- 210000002569 neuron Anatomy 0.000 claims description 55
- 238000004590 computer program Methods 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 abstract description 30
- 230000008569 process Effects 0.000 description 20
- 230000006835 compression Effects 0.000 description 16
- 238000007906 compression Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 12
- 210000002364 input neuron Anatomy 0.000 description 7
- 238000011176 pooling Methods 0.000 description 7
- 238000001994 activation Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000004913 activation Effects 0.000 description 5
- 210000004205 output neuron Anatomy 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 230000007480 spreading Effects 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 231100000870 cognitive problem Toxicity 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional correlation or convolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/2163—Partitioning the feature space
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Complex Calculations (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供一种神经网络中的权重数据存储方法和卷积计算方法。所述权重存储方法包括:查找权重卷积核矩阵中的有效权重并获取有效权重索引,其中,所述有效权重是非零权重,所述有效权重索引用于标记所述有效权重在所述权重卷积核矩阵中的位置;存储所述有效权重以及所述有效权重索引。根据本发明的权重数据存储方法和卷积计算方法能够节省存储空间并提高计算效率。
Description
技术领域
本发明涉及计算机学习技术领域,尤其涉及一种权重数据存储方法和基于该方法的神经网络处理器。
背景技术
近年来,深度学习技术得到了飞速发展,在解决高级抽象认知问题,例如图像识别、语音识别、自然语言理解、天气预测、基因表达、内容推荐和智能机器人等领域得到了广泛应用,成为学术界和工业界的研究热点。
深度神经网络是人工智能领域具有最高发展水平的感知模型之一,其通过建立模型来模拟人类大脑的神经连接结构,通过多个变换阶段分层对数据特征进行描述,为图像、视频和音频等大规模数据处理任务带来突破性进展。深度神经网络模型是一种运算模型,由大量节点通过网状互连结构构成,这些节点被称为神经元。每两个节点间连接强度都代表通过该连接信号在两个节点间的加权重,即权重,与人类神经网络中的记忆相对应。
然而,在现有技术中,神经网络存在处理速度慢,运行功耗大等问题。这是由于深度学习技术依赖于极大的计算量,例如,在训练阶段,需要在海量数据中通过反复迭代计算得到神经网络中的权重数据;在推理阶段,同样需要神经网络在极短的响应时间(通常为毫秒级)内完成对输入数据的运算处理,特别是当神经网络应用于实时系统时,例如,自动驾驶领域。神经网络中涉及的计算主要包括卷积操作、激活操作和池化操作等,其中,卷积操作和池化操作占用了神经网络处理的大部分时间。
因此,为了将神经网络推向更广泛应用,例如,智能穿戴、智能机器人、自动驾驶以及模式识别等领域,需要对现有技术进行改进,以实现数据处理的实时性、低功耗以及计算资源利用率的提升。
发明内容
本发明的目的在于克服上述现有技术的缺陷,提供一种权重数据存储方法和基于该方法的神经网络处理器。
根据本发明的第一方面,提供了一种神经网络中的权重数据存储方法。该存储方法包括以下步骤:
步骤1:查找权重卷积核矩阵中的有效权重并获取有效权重索引,其中,所述有效权重是非零权重,所述有效权重索引标记所述有效权重在所述权重卷积核矩阵中的位置;步骤2:存储所述有效权重以及所述有效权重索引。
在一个实施例中,步骤1包括:
步骤11:将所述权重卷积核矩阵扩展K*K的正方形矩阵以使所述正方形矩阵能被等分为P2个子矩阵,其中P是大于等于2的整数;
步骤12:将所述正方形矩阵等分为P2个子矩阵;
步骤13:对于所述P2个子矩阵中包含有效权重的子矩阵进一步递归式等分,直到子矩阵仅包含一个权重,从而获得多级子矩阵;
步骤14:对于所述多级子矩阵中包含有效权重的子矩阵,标记有效路径分支为比特值1,以获得所述有效权重索引。
在一个实施例中,K取值为mn,m是大于等于2的整数,n是大于等于1的整数。
在一个实施例中,在步骤1中,所述有效权重索引是所述有效权重在所述权重卷积核矩阵的行坐标和列坐标。
根据本发明的第二方面,提供了一种神经网络中的卷积计算方法。该计算方法包括以下步骤:
步骤41:获取根据本发明的权重数据存储方法所存储的有效权重以及有效权重索引;
步骤42:根据所述有效权重索引获取与所述有效权重匹配的卷积域神经元;
步骤43:执行所述有效权重和所述卷积域神经元的卷积操作。
根据本发明的第三方面,提供了一种神经网络处理器。该处理器包括:
用于存储本发明的权重数据存储方法获得的有效权重以及有效权重索引的权重和索引存储单元;
用于根据所述有效权重索引获取与所述有效权重位置匹配的卷积域神经元的神经元索引单元;
用于执行所述有效权重和所述卷积域神经元的卷积操作的计算阵列单元。
在一个实施例中,本发明的神经网络处理器还包括:存储单元,用于存储所述卷积域神经元和卷积结果;控制单元,用于控制所述有效权重和所述卷积域神经元的卷积操作的执行顺序。
与现有技术相比,本发明的优点在于:
通过对非0权重建立索引和压缩存储,并利用权重索引直接锁定卷积域内与权重对应的神经元进行卷积运算,使得在卷积计算过程舍弃了0值权重以及0值权重对应的神经元,降低了神经网络数据处理的存储空间和神经元的加载数量,从而有效降低了神经网络的运行功耗并提高了计算资源利用率。本发明将权重数据与权重索引分离存储,有利于实现目标神经元的并行查找。
附图说明
以下附图仅对本发明作示意性的说明和解释,并不用于限定本发明的范围,其中:
图1示出了对输入特征进行卷积的过程示意图;
图2示出了根据本发明一个实施例的权重存储方法的流程图;
图3(a)至图3(c)示出了根据本发明一个实施例的权重存储过程的示意图;
图4示出了根据本发明一个实施例的神经网络处理器的示意图;
图5示出了图4的神经网络处理器的各单元的连接示意图;
图6示出了图5的神经网络处理器的工作流程图。
具体实施方式
为了使本发明的目的、技术方案、设计方法及优点更加清楚明了,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
典型地,深度神经网络是具有多层神经网络的拓扑结构,并且每层神经网络具有多个特征图层。例如,对于卷积神经网络,其处理数据的过程由卷积层、池化层、归一化层、非线性层和全连接层等多层结构组成,其中,卷积层的操作过程是:将一个L*L大小的二维权重卷积核对输入特征图进行扫描,在扫描过程中权重卷积核与特征图内对应卷积域的神经元求内积,并将所有卷积域的内积值求和,得到卷积层的输出特征图或称输出神经元,图1示出了5*5权重卷积核对三个输入特征图进行扫描的过程示意;然后,通过非线性激活函数(如ReLU)进一步把该输出特征图传递到下一层(例如,池化层),当每个卷积层具有N个输出特征图时,会有N个L*L大小的卷积核与该卷积层内的输入特征图进行卷积操作。池化层又称下采样层,其具体过程是:将一个P*P大小的二维窗口(即池化域)对特征图(例如,由卷积层输出给池化层的特征图)进行扫描,在扫描过程中计算窗口在图层对应神经元的最大值或平均值,得到池化层的输出神经元,池化层一方面可以消除部分噪声信息,有利于特征提取,另外一方面也可以减少下一层特征神经元的数量,从而减小网络规模。
为了提高神经网络中卷积计算的效率,本发明提供一种权重数据存储方法,该方法能够应用于训练好的神经网络模型,简言之,本发明的权重数据存储方法是仅针对有效权重(即非零权重)建立索引并基于索引建立的过程对权重进行压缩式存储。
具体地,图2示出了根据本发明一个实施例的权重数据存储方法的流程图,包括以下步骤,:
步骤S210,将原权重卷积核矩阵进行扩展。
在此步骤中,将原权重卷积核矩阵扩展为K*K的正方形矩阵,以使扩展后的矩阵能被等分为P2的子矩阵,其中,P为大于等于2的整数,在一个实施例中K可取值为mn,m是大于等于2的整数,n是大于等于1的整数,相对于原权重卷积核矩阵,将该正方形矩阵中的新增加的元素设置为0。
需要说明的是,对于一个原权重卷积核矩阵,K有多个取值,例如,将原5*5的矩阵也可扩展为K=9(即m=3,n=2),优选地,在满足扩展后的矩阵能被划分为P2等分的情况下,选择与原权重卷积核矩阵规模最接近的K值,即对于上述5*5矩阵,K优选设置为8。此外,在原卷积核矩阵能被P2等分的情况下,也可不进行扩展,而直接执行下述的步骤S220和S230。
步骤S220,针对有效权重建立索引。
在此步骤中,以每个权重卷积核为单位建立权重索引,下文将以3(a)所示的5x5权重卷积核为例对索引建立和权重存储过程进行阐述。
首先,选取扩展矩阵的中心并将扩展矩阵进行等分,在此实施例,采用四等分原则,即P2=4。参见图3(a),一级等分点即是扩展的8*8矩阵的中心,该中心将扩展矩阵等分为四个规模相等的子矩阵,例如,获得的四个4*4子矩阵分别为:
接下来,分析各子矩阵内是否存在有效权重,若存在,则标记路径分支为1,若不存在,则标记路径分支为0。例如,由于子矩阵A1、A2、A3中均存在有效权重,则标记路径分支为1,A1、A2、A3对应的分支称为有效分支,而子矩阵A4中不存在有效权重,则标记路径分支为0,因此,四个子矩阵对应分支的比特值依次为1110,则将第一层节点记为1110,即第一层节点有3个有效分支,1个无效分支(未示出),参见图3(b)所示,此实施例中建立的是单节点4个子分支的状态树,其中,仅示出了有效分支。
然后,将第一层节点对应分支为0的子矩阵舍弃,而将各分支为1的子矩阵仍以四等分原则选择中心点(即二级等分点),并标记A1、A2、A3三个有效分支的子分支的比特值,分别为1111、0010与0100,该三组值构成第二层的三个节点,即第二层节点共存在6个有效分支。
类似地,对第二层节点对应的各分支为1的子矩阵再次递归式四等分(每个子矩阵的中心点即三级等分点),第二层节点对应的6个有效分支的子分支比特值依次为0110、0010、0100、0110、0010与0100,该六组比特值组成第三层的六个节点,由于该第三层节点的分支所表示的矩阵为1x1矩阵,即仅包含一个权重,因此,第三层的各节点为叶节点。
由上述过程可知,对于原权重卷积核矩阵,有效权重的索引是:对于非叶节点(包括第一层节点和第二层节点)为T:1110111100100100(2个字节);对于叶节点(即第三层节点)为L:011000100100011000100100(3个字节)。在本文中,将通过上述过程获得的非叶节点和叶节点分别存储,并统称为有效权重索引。通过这种方式,能够降低存储有效权重索引所需空间,例如,此实施例中,只需5个字节即可存储8个有效权重的索引。
在图3(b)所示的实施例中,由于每个节点包括4个子分支,因此,可采用2个比特对4个分支进行编码,从左至右依次编码为00、01、10和11,而有效分支的编码可组合为有效路径的编码,例如,对于权重卷积核中的第五个有效权重0.32,其有效路径位编码是001101,其是由第一层节点的有效分支00、第二层第一个节点的有效分支11和第四个叶节点的有效分支01构成。通过权重的有效路径对应位编码能够解析出该权重在原卷积核中行坐标和列坐标,例如,当位编码是001101,表示其对应的权重位于第010行(二进制表示,对应位编码001101的第1、3、5位)、第011列(二进制表示,对应位编码001101的第2、4、6位),即位于第2行第3列(从0开始编号),类似地,可获得所有有效权重的编码,即000001、000010、000110、001001、001101、001110、011010和100101。因此,根据存储的有效权重索引,再结合预知的有效路径编码规则,即可解析出有效权重在原卷积核的位置坐标。
应理解的是,由于在图3(b)的实施例中,对于每次等分获得的四个子矩阵(在此可将该四个子矩阵视为2*2排列),分别00、01、10和11进行编码,即00表示的是第0行第0列子矩阵,01表示的是第0行第1列子矩阵,10表示的是第1行第0列子矩阵,11表示的是第1行第1列子矩阵,即对于每两个比特值,其第一位(从左至右)对应行数,第二位对应列数,因此,位编码的每两个比特的第一位构成行位置表示(即位编码001101的第1、3、5位),第二位构成列位置表示(即位编码001101的第2、4、6位)。
需要说明的是,图3(b)仅是编码方式的示意,本领域的技术人员也可采用其他编码方式,例如,将每个节点的4个分支从左至右依次编码为11、10、01和00,或者采用其它能够表示各个分支的编码方式。对于不同的编码方式,其对应的行位置和列位置的表示也将有相应的变化。在另一个实施例中,将原5*5卷积核扩展为9*9,在这种情况下,扩展后的矩阵可被等分为9等分(即P2=9),再采用上述类似的方法获得有效权重索引。
步骤S230,依据索引所对应权重的有效路径存储权重。
通过步骤S210和步骤S220可知,每个非0的叶节点的回溯路径代表一个有效权重的有效路径。将有效权重依据建立权重索引的有效路径从左至右顺序存储,因此,对于本实施例的5x5权重卷积核,有效权重的存储顺序为0.60-0.75-0.84-0.93-0.32-0.55-0.82-0.63。
由上述权重数据的存储方法可知,根据有效权重的存储顺序结合所保存的权重索引即可解析出每个有效权重在原权重卷积核的位置或坐标。
在另一个实施例中,存储权重数据的方法是:直接扫描原权重卷积矩阵,查找有效权重以及各个有效权重对应的行坐标和列坐标;将有效权重的行坐标和列坐标作为有效权重索引与有效权重一起存储。相对于图2的实施例,这种方式,能够简化对原卷积核进行扩展和等分的过程,但存储权重索引所需的空间会相对增加。
总上所述,本发明通过建立有效权重的索引,并以建立权重索引的有效路径按顺序存储权重,能够压缩卷积核中大量权重为0的元素,从而实现了权重压缩存储的效果,能有效的降低存储空间。
进一步地,在权重卷积核与卷积域的神经元进行卷积计算过程中,可以根据有效权重的索引对卷积域的神经元进行筛选,以避免加载无效权重对应的神经元。具体地,通过有效权重索引对应的路径编码能够获得权重在原卷积核的行坐标或列坐标,该坐标同时也是卷积域中与有效权重卷积匹配的神经元坐标,通过这种方式能够准确锁定目标神经元的位置,参见图3(c)所示。通过权重索引确定输入特征图卷积域中与有效权重对应的神经元,能够舍弃对卷积结果没有影响的神经元,从而提高卷积计算的效率。
本发明的权重数据存储方法以及相应的基于权重索引加载卷积域神经元的方法可应用于神经网络处理器,以提高卷积运算的效率,图4示出根据本发明一个实施例的神经网络处理器。该处理器401包括控制单元402、输入数据存储单元403、输出数据存储单元405、权重存储单元404、输入神经元缓存单元406、权重缓存单元407、计算阵列400(其包括至少一个计算单元410)、输出缓存单元411、权重索引建立单元412、权重压缩存储单元413以及神经元索引单元414。
输入数据存储单元403与输入神经元缓存单元406相连,用于存储神经网络各层需处理的目标数据,该数据包括原始特征图数据和参与中间层计算的输入数据。
输出数据存储单元405与输出缓存单元411相连,用于存储计算阵列400计算得到的输出神经元及中间结果。
权重存储单元404与权重缓存单元407相连,用于存储已经训练好的神经网络权重以及参与卷积运算的权重及索引。
输入神经元缓存单元406与计算阵列400相连,用于向计算阵列400的提供神经元输入值。
权重缓存单元407与计算阵列400相连,用于向计算阵列400提供针对不同输出特征图的压缩存储的权重。
权重索引建立单元412与权重缓存单元407相连,用于对已训练好的有效权重建立索引,并将建立索引过程中获得的有效权重输出至权重压缩存储单元413,权重索引输出至权重存储单元404。
权重压缩存储单元413与权重索引建立单元412相连,用于接收建立索引时提取的有效权重并进行压缩存储,并将权重压缩结果输出至权重存储单元404。
神经元索引单元414与权重缓存单元407相连,用于接收权重缓存单元407中的权重索引,分析有效权重的有效路径,将该路径转化为相对地址传输至输入神经元缓存单元406。
计算阵列400与输出缓存单元411相连,用于暂存卷积计算的中间结果及输出神经元值。
输出缓存单元411与输出数据存储单元405相连,用于获得各输出特征图的卷积计算结果或中间结果。
控制单元402分别与输入数据存储单元403、权重存储单元404、输出数据存储单元405、输入神经元缓存单元406、权重缓存单元407、计算阵列400、权重索引建立单元412、权重压缩存储单元413和神经元索引单元414相连。控制单元402获得神经网络各层参数以及处理器内计算阵列400参数,对神经元与权重执行卷积计算并控制各存储单元数据的载入及缓存数据的顺序,从而保证卷积运算结果的正确性。
在图4示出的神经网络处理器中,除了包括实现本发明的权重存储方法和以及相应的基于权重索引加载卷积域神经元的方法所需的权重索引建立单元412、权重压缩存储单元413、神经元索引单元414之外,还包括输出缓存单元411、输出数据存储单元405、输入数据存储单元403等多种类型的存储单元或缓存单元,这些存储单元有助于保证神经网络处理器的数据加载、数据处理以及计算结果输出的流畅性,从而提供神经网络处理器的数据吞吐量。
图4以模块化的方式示出了神经网络处理器,为了更清楚各单元之间连接关系和数据处理的过程,图5对图4的神经网络处理器进一步扩展说明,其中,输入权重和索引缓存单元对应于图4的权重缓存单元,并且还示出了激活单元和池化单元,分别用于各神经网络层中的激活与池化处理。
基于图5所示,以一个输入特征图、4个输出特征图为例,并且以一个权重卷积核为单位介绍神经网络处理器的工作过程,参见图6,具体包括以下步骤:
步骤S610,将压缩权重、输入神经元和权重索引分别加载到相应的缓存单元。
将基于本发明的权重存储方法获得的压缩权重和权重索引加载到输入权重和索引缓存单元,将输入神经元加载到神经元缓存单元,若缓存已满,则暂停加载数据。
步骤S620,向计算阵列加载压缩权重和相应卷积域的神经元。
具体地,此步骤S620包括:将压缩权重按照所存储的原排列顺序直接加载到计算阵列;利用权重索引在缓存的神经元卷积域中锁定与压缩权重对应的神经元。
例如,对于4个输出特征图(即有4组卷积核,每个卷积域的神经元需要与所有的卷积核进行卷积),将一个卷积域的神经元复制为4份部署于神经元索引单元,神经元索引单元根据不同输出特征图所对应的权重索引,对各神经元进行筛选,包括与有效权重索引对应的神经元,而舍弃其它的神经元。
步骤S630,计算阵列执行被压缩权重和相应神经元的卷积运算。
具体地,被压缩权重与相应的神经元组成两个有效向量,计算阵列执行针对这两个向量的卷积运算,其中间结果或卷积结果加载至输出缓存单元,当缓存已满时,则暂停写入并将缓存单元中的数据输出至输出数据存储单元。
通过步骤S610、S620和S630能够完成卷积核与一个卷积域神经元的卷积操作。
步骤S640,复用已加载压缩权重,以执行与更新的卷积域的卷积计算。
在完成一个卷积域的卷积操作之后,将已加载的权重保留于计算阵列中;以卷积移动步长平移更新卷积域,并加载新的卷积域的神经元;根据权重索引锁定新的卷积域的有效神经元并加载至计算阵列;重复该过程直至完成一个输入特征图的所有神经元的卷积计算。
在另一个实施例中,对于有多个输入特征图的情况,首先完成一个输入特征图的不同卷积域的卷积运算,然后,再依次对其他的特征图进行处理。通过这种方式,能够复用已加载的压缩权重。
步骤S650,执行激活处理和池化处理。
对获得的卷积结果进行激活处理和池化处理,此过程属于现有技术,在此不再赘述。
综上所述,本发明通过对有效权重进行压缩存储,节省了存储空间,并通过进一步基于有效权重索引加载相应的神经元,提高了卷积计算的效率,尤其对于存在大量0值权重的稀疏神经网络效果更加明显。
本发明的神经网络处理器可应用了各种电子设备,例如、移动电话、嵌入式电子设备等。
需要说明的是,本发明对权重进行了压缩式存储,在本文中,也将基于本发明方法存储的权重称为压缩权重。此外,本文涉及的卷积核、权重卷积核以及权重卷积核矩阵具有相同的含义,均指由权重值构成的矩阵,用于与卷积域的神经元进行卷积。
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (8)
1.一种神经网络中的权重数据存储方法,包括以下步骤:
步骤1:查找权重卷积核矩阵中的有效权重并获取有效权重索引,其中,所述有效权重是非零权重,所述有效权重索引用于标记所述有效权重在所述权重卷积核矩阵中的位置;包括:
步骤11:将所述权重卷积核矩阵扩展为K*K的正方形矩阵以使所述正方形矩阵能被等分为P2个子矩阵,其中P是大于等于2的整数;
步骤12:将所述正方形矩阵等分为P2个子矩阵;
步骤13:对于所述P2个子矩阵中包含有效权重的子矩阵进一步递归式等分,直到子矩阵仅包含一个权重,从而获得多级子矩阵;
步骤14:对于所述多级子矩阵中包含有效权重的子矩阵,标记有效路径分支为比特值1,以获得所述有效权重索引;
步骤2:存储所述有效权重以及所述有效权重索引。
2.根据权利要求1所述的方法,其中,K取值为mn,m是大于等于2的整数,n是大于等于1的整数。
3.根据权利要求1所述的权重数据存储方法,其中,步骤1中,所述有效权重索引是所述有效权重在所述权重卷积核矩阵的行坐标和列坐标。
4.一种神经网络中的卷积计算方法,包括以下步骤:
步骤41:获取根据权利要求1至3中任一项所述方法存储的有效权重以及有效权重索引;
步骤42:根据所述有效权重索引获取与所述有效权重匹配的卷积域神经元;
步骤43:执行所述有效权重和所述卷积域神经元的卷积操作。
5.一种神经网络处理器,包括:
用于存储根据权利要求1至3中任一项所述方法获得的有效权重以及有效权重索引的权重和索引存储单元;
用于根据所述有效权重索引获取与所述有效权重位置匹配的卷积域神经元的神经元索引单元;
用于执行所述有效权重和所述卷积域神经元的卷积操作的计算阵列单元。
6.根据权利要求5所述的神经网络处理器,其特征在于,还包括:
存储单元:用于存储所述卷积域神经元和卷积结果;
控制单元:用于控制所述有效权重和所述卷积域神经元的卷积操作的执行顺序。
7.一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现根据权利要求4所述方法的步骤。
8.一种计算机设备,包括存储器和处理器,在所述存储器上存储有能够在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求4所述方法的步骤。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711102821.6A CN107977704B (zh) | 2017-11-10 | 2017-11-10 | 权重数据存储方法和基于该方法的神经网络处理器 |
PCT/CN2018/077516 WO2019091020A1 (zh) | 2017-11-10 | 2018-02-28 | 权重数据存储方法和基于该方法的神经网络处理器 |
IL274535A IL274535B1 (en) | 2017-11-10 | 2018-02-28 | A method for storing weight data, and an artificial neural network processor based on the method |
JP2020524354A JP7052034B2 (ja) | 2017-11-10 | 2018-02-28 | 重みデータの保存方法及びこの方法をベースとするニューラルネットワークプロセッサ |
US16/762,810 US11531889B2 (en) | 2017-11-10 | 2018-02-28 | Weight data storage method and neural network processor based on the method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711102821.6A CN107977704B (zh) | 2017-11-10 | 2017-11-10 | 权重数据存储方法和基于该方法的神经网络处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107977704A CN107977704A (zh) | 2018-05-01 |
CN107977704B true CN107977704B (zh) | 2020-07-31 |
Family
ID=62013286
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711102821.6A Active CN107977704B (zh) | 2017-11-10 | 2017-11-10 | 权重数据存储方法和基于该方法的神经网络处理器 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11531889B2 (zh) |
JP (1) | JP7052034B2 (zh) |
CN (1) | CN107977704B (zh) |
IL (1) | IL274535B1 (zh) |
WO (1) | WO2019091020A1 (zh) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108958801B (zh) * | 2017-10-30 | 2021-06-25 | 上海寒武纪信息科技有限公司 | 神经网络处理器及使用处理器执行向量最大值指令的方法 |
KR102065672B1 (ko) * | 2018-03-27 | 2020-01-13 | 에스케이텔레콤 주식회사 | 합성곱 연산을 위한 장치 및 방법 |
JP7240657B2 (ja) * | 2018-05-15 | 2023-03-16 | Tokyo Artisan Intelligence株式会社 | ニューラルネットワーク回路装置、ニューラルネットワーク、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラム |
CN108874914B (zh) * | 2018-05-29 | 2021-11-02 | 吉林大学 | 一种基于图卷积与神经协同过滤的信息推荐方法 |
EP3690679A4 (en) | 2018-08-06 | 2021-02-17 | Huawei Technologies Co., Ltd. | MATRIX PROCESSING PROCESS AND APPARATUS, AND LOGIC CIRCUIT |
CN110825311B (zh) * | 2018-08-10 | 2023-04-18 | 昆仑芯(北京)科技有限公司 | 用于存储数据的方法和装置 |
US12094456B2 (en) | 2018-09-13 | 2024-09-17 | Shanghai Cambricon Information Technology Co., Ltd. | Information processing method and system |
CN110928576A (zh) * | 2018-09-20 | 2020-03-27 | 中兴通讯股份有限公司 | 一种卷积神经网络的卷积处理方法、装置及存储介质 |
US11436482B2 (en) | 2018-10-29 | 2022-09-06 | Western Digital Technologies, Inc. | Storing neural net works and weights for neural networks |
CN109933654A (zh) * | 2019-01-30 | 2019-06-25 | 神思电子技术股份有限公司 | 一种基于状态树的对话管理方法 |
US11562214B2 (en) * | 2019-03-14 | 2023-01-24 | Baidu Usa Llc | Methods for improving AI engine MAC utilization |
CN111695683B (zh) * | 2019-03-15 | 2023-09-01 | 华邦电子股份有限公司 | 可执行人工智能运算的存储器芯片及其运算方法 |
CN110097172B (zh) * | 2019-03-18 | 2021-10-29 | 中国科学院计算技术研究所 | 一种基于winograd卷积运算的卷积神经网络数据处理方法及装置 |
CN110378468B (zh) * | 2019-07-08 | 2020-11-20 | 浙江大学 | 一种基于结构化剪枝和低比特量化的神经网络加速器 |
KR20210060024A (ko) * | 2019-11-18 | 2021-05-26 | 에스케이하이닉스 주식회사 | 신경망 처리 회로를 포함하는 메모리 장치 |
CN111242277B (zh) * | 2019-12-27 | 2023-05-05 | 中国电子科技集团公司第五十二研究所 | 一种基于fpga设计的支持稀疏剪枝的卷积神经网络加速器 |
CN113128658B (zh) * | 2019-12-31 | 2024-07-09 | Tcl科技集团股份有限公司 | 一种神经网络处理方法、加速器及存储介质 |
CN111260037B (zh) * | 2020-02-11 | 2023-10-13 | 深圳云天励飞技术股份有限公司 | 图像数据的卷积运算方法、装置、电子设备及存储介质 |
CN111368981B (zh) * | 2020-03-06 | 2021-07-09 | 上海新氦类脑智能科技有限公司 | 减小突触连接的存储面积的方法、装置、设备和存储介质 |
CN113822410A (zh) * | 2020-06-18 | 2021-12-21 | 华为技术有限公司 | 神经网络模型训练、图像分类、文本翻译方法及装置、设备 |
CN111553471A (zh) * | 2020-07-13 | 2020-08-18 | 北京欣奕华数字科技有限公司 | 一种数据分析处理方法及装置 |
CN113220606B (zh) * | 2021-05-07 | 2021-11-26 | 珠海市芯动力科技有限公司 | 神经网络权值存储方法、读取方法及相关设备 |
CN114527930B (zh) * | 2021-05-27 | 2024-01-30 | 北京灵汐科技有限公司 | 权重矩阵数据存储方法、数据获取方法和装置、电子设备 |
WO2022247908A1 (zh) * | 2021-05-27 | 2022-12-01 | 北京灵汐科技有限公司 | 权重矩阵的数据存储方法、数据获取方法及装置、设备 |
CN114546251B (zh) * | 2021-05-27 | 2024-08-16 | 北京灵汐科技有限公司 | 权重矩阵数据存储方法、数据获取方法和装置、电子设备 |
CN113688983B (zh) * | 2021-08-09 | 2024-07-05 | 上海新氦类脑智能科技有限公司 | 脉冲神经网络中减少权重储存的卷积运算实现方法、电路及终端 |
CN116050469A (zh) * | 2021-10-28 | 2023-05-02 | 华为技术有限公司 | Ai模型的处理方法、运算方法及装置 |
CN113704565B (zh) * | 2021-10-28 | 2022-02-18 | 浙江大学 | 基于全局区间误差的学习型时空索引方法、装置及介质 |
CN114780039A (zh) * | 2022-04-29 | 2022-07-22 | 北京灵汐科技有限公司 | 存储方法、计算方法、存储装置、众核系统、介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106529670A (zh) * | 2016-10-27 | 2017-03-22 | 中国科学院计算技术研究所 | 一种基于权重压缩的神经网络处理器、设计方法、芯片 |
CN106650924A (zh) * | 2016-10-27 | 2017-05-10 | 中国科学院计算技术研究所 | 一种基于时间维和空间维数据流压缩的处理器、设计方法 |
US20170249547A1 (en) * | 2016-02-26 | 2017-08-31 | The Board Of Trustees Of The Leland Stanford Junior University | Systems and Methods for Holistic Extraction of Features from Neural Networks |
CN107153873A (zh) * | 2017-05-08 | 2017-09-12 | 中国科学院计算技术研究所 | 一种二值卷积神经网络处理器及其使用方法 |
CN107239825A (zh) * | 2016-08-22 | 2017-10-10 | 北京深鉴智能科技有限公司 | 考虑负载均衡的深度神经网络压缩方法 |
CN107239824A (zh) * | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
CN107292352A (zh) * | 2017-08-07 | 2017-10-24 | 北京中星微电子有限公司 | 基于卷积神经网络的图像分类方法和装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0219069A (ja) * | 1988-07-06 | 1990-01-23 | Eiji Kawaguchi | 2値画像符号化方式 |
US10061748B2 (en) | 2015-12-11 | 2018-08-28 | Sap Se | Adaptive tile matrix representation and multiplication |
WO2017154946A1 (ja) * | 2016-03-09 | 2017-09-14 | 日本電気株式会社 | 情報処理装置、情報処理方法、データ構造およびプログラム |
CN107239823A (zh) | 2016-08-12 | 2017-10-10 | 北京深鉴科技有限公司 | 一种用于实现稀疏神经网络的装置和方法 |
CN106447034B (zh) * | 2016-10-27 | 2019-07-30 | 中国科学院计算技术研究所 | 一种基于数据压缩的神经网络处理器、设计方法、芯片 |
US10515302B2 (en) * | 2016-12-08 | 2019-12-24 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with mixed data and weight size computation capability |
CN106951962B (zh) * | 2017-03-22 | 2020-09-01 | 南京地平线机器人技术有限公司 | 用于神经网络的复合运算单元、方法和电子设备 |
CN107844829A (zh) | 2017-10-31 | 2018-03-27 | 中国科学院计算技术研究所 | 用于加速神经网络处理器的方法和系统及神经网络处理器 |
CN107729995A (zh) | 2017-10-31 | 2018-02-23 | 中国科学院计算技术研究所 | 用于加速神经网络处理器的方法和系统及神经网络处理器 |
-
2017
- 2017-11-10 CN CN201711102821.6A patent/CN107977704B/zh active Active
-
2018
- 2018-02-28 JP JP2020524354A patent/JP7052034B2/ja active Active
- 2018-02-28 IL IL274535A patent/IL274535B1/en unknown
- 2018-02-28 WO PCT/CN2018/077516 patent/WO2019091020A1/zh active Application Filing
- 2018-02-28 US US16/762,810 patent/US11531889B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170249547A1 (en) * | 2016-02-26 | 2017-08-31 | The Board Of Trustees Of The Leland Stanford Junior University | Systems and Methods for Holistic Extraction of Features from Neural Networks |
CN107239825A (zh) * | 2016-08-22 | 2017-10-10 | 北京深鉴智能科技有限公司 | 考虑负载均衡的深度神经网络压缩方法 |
CN106529670A (zh) * | 2016-10-27 | 2017-03-22 | 中国科学院计算技术研究所 | 一种基于权重压缩的神经网络处理器、设计方法、芯片 |
CN106650924A (zh) * | 2016-10-27 | 2017-05-10 | 中国科学院计算技术研究所 | 一种基于时间维和空间维数据流压缩的处理器、设计方法 |
CN107239824A (zh) * | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
CN107153873A (zh) * | 2017-05-08 | 2017-09-12 | 中国科学院计算技术研究所 | 一种二值卷积神经网络处理器及其使用方法 |
CN107292352A (zh) * | 2017-08-07 | 2017-10-24 | 北京中星微电子有限公司 | 基于卷积神经网络的图像分类方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
IL274535B1 (en) | 2024-07-01 |
WO2019091020A1 (zh) | 2019-05-16 |
US11531889B2 (en) | 2022-12-20 |
JP2021503644A (ja) | 2021-02-12 |
US20210182666A1 (en) | 2021-06-17 |
IL274535A (en) | 2020-06-30 |
CN107977704A (zh) | 2018-05-01 |
JP7052034B2 (ja) | 2022-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107977704B (zh) | 权重数据存储方法和基于该方法的神经网络处理器 | |
JP6574503B2 (ja) | 機械学習方法および装置 | |
CN107818367B (zh) | 用于神经网络的处理系统和处理方法 | |
CN107844826B (zh) | 神经网络处理单元及包含该处理单元的处理系统 | |
CN111414987B (zh) | 神经网络的训练方法、训练装置和电子设备 | |
CN108510058B (zh) | 神经网络中的权重存储方法以及基于该方法的处理器 | |
US11144823B1 (en) | Method and system for hierarchical weight-sparse convolution processing | |
KR102545128B1 (ko) | 뉴럴 네트워크를 수반한 클라이언트 장치 및 그것을 포함하는 시스템 | |
CN108171328B (zh) | 一种神经网络处理器和采用其执行的卷积运算方法 | |
WO2019155064A1 (en) | Data compression using jointly trained encoder, decoder, and prior neural networks | |
CN108334945B (zh) | 深度神经网络的加速与压缩方法及装置 | |
CN111105029B (zh) | 神经网络的生成方法、生成装置和电子设备 | |
CN107958285A (zh) | 面向嵌入式系统的神经网络的映射方法及装置 | |
US11544542B2 (en) | Computing device and method | |
CN112001496A (zh) | 神经网络结构搜索方法及系统、电子设备及存储介质 | |
KR20220042455A (ko) | 마이크로-구조화된 가중치 프루닝 및 가중치 통합을 이용한 신경 네트워크 모델 압축을 위한 방법 및 장치 | |
CN113705589A (zh) | 数据处理方法、装置及设备 | |
WO2020195940A1 (ja) | ニューラルネットワークのモデル縮約装置 | |
CN109670582B (zh) | 一种全定点化神经网络的设计方法 | |
CN112132281B (zh) | 一种基于人工智能的模型训练方法、装置、服务器及介质 | |
CN117744760A (zh) | 文本信息的识别方法、装置、存储介质及电子设备 | |
CN111488980B (zh) | 优化采样的神经网络的设备上持续学习方法及装置 | |
CN108376283B (zh) | 用于神经网络的池化装置和池化方法 | |
CN113963241B (zh) | Fpga硬件架构及其数据处理方法、存储介质 | |
CN115544307A (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 |