CN111105019A - 一种神经网络运算装置和运算方法 - Google Patents

一种神经网络运算装置和运算方法 Download PDF

Info

Publication number
CN111105019A
CN111105019A CN201811248188.6A CN201811248188A CN111105019A CN 111105019 A CN111105019 A CN 111105019A CN 201811248188 A CN201811248188 A CN 201811248188A CN 111105019 A CN111105019 A CN 111105019A
Authority
CN
China
Prior art keywords
module
matrix
multiply
accumulate
result
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.)
Granted
Application number
CN201811248188.6A
Other languages
English (en)
Other versions
CN111105019B (zh
Inventor
孙洁
王平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Denglin Technology Co Ltd
Original Assignee
Shanghai Denglin Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Denglin Technology Co Ltd filed Critical Shanghai Denglin Technology Co Ltd
Priority to CN201811248188.6A priority Critical patent/CN111105019B/zh
Publication of CN111105019A publication Critical patent/CN111105019A/zh
Application granted granted Critical
Publication of CN111105019B publication Critical patent/CN111105019B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

本发明提供了一种神经网络运算装置和运算方法,用于实现神经网络中经过线性变换后的输入数据矩阵和系数矩阵的乘法运算,以获得输出矩阵。该装置包括加法模块、乘累加模块和线性变换补偿模块,其中,所述加法模块用于对接收的所述输入数据矩阵的行向量执行累加操作,获得累加结果;所述乘累加模块用于执行所述输入数据矩阵的行向量和所述系数矩阵的对应列向量的乘累加操作,获得乘累加结果;所述线性变换补偿模块用于根据所述累加结果和所述乘累加结果以及由线性变换引入的配置参数获得所述输出矩阵。本发明的装置和方法能够提高神经网络的运算效率并降低运行功耗。

Description

一种神经网络运算装置和运算方法
技术领域
本发明涉及人工智能技术领域,尤其涉及一种神经网络运算装置和运算方法。
背景技术
人工智能技术在近些年来得到了迅猛的发展,在全世界范围内得到了广泛的关注,无论是工业界还是学术界都开展了人工智能技术的研究工作,目前,人工智能技术已经渗透至视觉感知、语音识别、辅助驾驶、智能家居、交通调度等各个领域。
深度神经网络是人工智能领域具有最高发展水平的感知模型之一,其通过建立模型来模拟人类大脑的神经连接结构,通过多个变换阶段分层对数据特征进行描述,为图像、视频和音频等大规模数据处理任务带来突破性进展。深度神经网络模型是一种运算模型,由大量节点通过网状互连结构构成,这些节点被称为神经元。每两个节点间连接强度都代表通过该连接信号在两个节点间的系数,即权重,与人类神经网络中的记忆相对应。
然而,在现有技术中,神经网络存在处理速度慢,运行功耗大等问题。这是由于深度学习技术依赖于极大的计算量,例如,在训练阶段,需要在海量数据中通过反复迭代计算得到神经网络中的系数;在推理阶段,同样需要神经网络在极短的响应时间(通常为毫秒级)内完成对输入数据的运算处理,特别是当神经网络应用于实时系统时,例如,自动驾驶领域。神经网络的卷积层、全连接层的运算过程占用了神经网络处理的大部分时间,该过程主要将是将输入数据矩阵(即输入神经元)与相应的系数矩阵(即权重矩阵)进行矩阵乘法操作。
因此,为了将神经网络推向更广泛应用,例如,智能穿戴、智能机器人、自动驾驶以及模式识别等领域,需要对现有技术进行改进,以提高神经网络数据处理的效率、降低运行低功耗以及提升计算资源利用率。
发明内容
本发明的目的在于克服上述现有技术的缺陷,提供一种神经网络运算装置,该装置能够实现神经网络中的矩阵乘法操作。
根据本发明的第一方面,提供了一种神经网络运算装置,用于实现神经网络中经过线性变换后的输入数据矩阵和系数矩阵的乘法运算,以获得输出矩阵。该装置包括加法模块、乘累加模块和线性变换补偿模块,其中:
所述加法模块用于对接收的所述输入数据矩阵的行向量执行累加操作,获得累加结果;
所述乘累加模块用于执行所述输入数据矩阵的行向量和所述系数矩阵的对应列向量的乘累加操作,获得乘累加结果;
所述线性变换补偿模块用于根据所述累加结果和所述乘累加结果以及由线性变换引入的配置参数获得所述输出矩阵。
在一个实施例中,在执行所述输入数据矩阵和所述系数矩阵之前,将所述由线性变换引入的配置参数发送至所述线性变换补偿模块进行存储。
在一个实施例中,所述线性变换补偿模块包括至少一个线性变换补偿单元,每个线性变换补偿单元用于接收来自于所述加法模块的累加结果以及接收来自于所述乘累加模块的乘累加结果,并根据所述由线性变换引入的配置参数获得所述输出矩阵的一个元素。
在一个实施例中,所述线性变换补偿模块的线性变换补偿单元包括第一乘法器、第二乘法器,第一加法器、第二加法器和第三加法器,其中:
所述第一乘法器的输入端接收来自于所述加法模块的计算结果;
所述第一加法器的一个输入端连接所述第一乘法器的输出端,所述第一加法器的另一输入端接收来自于所述乘累加模块的计算结果;
所述第二加法器的一个输入端连接所述第一加法器的输出端;
所述第二乘法器的一个输入端连接所述第二加法器的输出端;
所述第三加法器的输入端连接所述第二乘法器的输出端。
在一个实施例中,通过以下步骤获得所述输出矩阵的一个元素
Figure BDA0001841030590000021
所述加法模块接收所述输入数据矩阵的一行向量,并执行累加操作,得到
Figure BDA0001841030590000031
所述乘累加模块接收所述加法模块的所述输入数据矩阵的一行向量并执行与内置的所述系数矩阵的对应列向量的乘累加操作,得到
Figure BDA0001841030590000032
所述第一乘法器接收所述加法模块的结果
Figure BDA0001841030590000033
并执行与内置的Zw的相乘运算,获得
Figure BDA0001841030590000034
所述第一加法器接收来自于所述乘累加模块的结果
Figure BDA0001841030590000035
和来自于所述第一乘法器的结果
Figure BDA0001841030590000036
并执行减法运算,获得
Figure BDA0001841030590000037
所述第二加法器接收来自于所述第一加法器的结果
Figure BDA0001841030590000038
并执行与内置的
Figure BDA0001841030590000039
的相加操作,获得
Figure BDA00018410305900000310
所述第二乘法器接收来自于所述第二加法器的结果
Figure BDA00018410305900000311
并执行与
Figure BDA00018410305900000312
的乘法操作,获得结果
Figure BDA00018410305900000313
所述第三加法器接收来自于所述第二乘法器的结果,并执行与内置的Zo的加法操作,获得所述输出矩阵的一个元素
Figure BDA00018410305900000314
其中,K表示输入数据矩阵的列维数,Z0、Zw
Figure BDA0001841030590000041
是由线性变换引入的配置参数,
Figure BDA0001841030590000042
表示输入数据矩阵中位于第n行第k列的元素、
Figure BDA0001841030590000043
表示系数矩阵中位于第k行第m列的元素。
在一个实施例中,将
Figure BDA0001841030590000044
表示为M=2-jM0的定点数,并内置于所述第二乘法器。
在一个实施例中,所述线性变换补偿模块所包含的多个线性变换补偿单元的第一乘法器共用同一个乘法器。
在一个实施例中,所述乘累加模块接收来自于所述加法模块的输入数据矩阵的行向量,并与内置的所述系数矩阵的对应列向量执行乘累加操作。
根据本发明的第二方面,提供了一种神经网络处理器。该神经网络处理器包括:
根据本发明的神经网络运算装置,用于实现神经网络中经过线性变换后的输入数据矩阵和系数矩阵的乘法运算,以获得输出矩阵;
控制模块:用于控制所述神经网络运算装置的数据加载过程和执行过程。
根据本发明的第三方面,提供了一种神经网络运算方法,用于实现神经网络中经过线性变换后的输入数据矩阵和系数矩阵的乘法运算,以获得输出矩阵。该方法包括:
步骤1:对接收的所述输入数据矩阵的行向量执行累加操作,获得累加结果;
步骤2:执行所述输入数据矩阵的行向量和所述系数矩阵的对应列向量的乘累加操作,获得乘累加结果;
步骤3:根据所述累加结果和所述乘累加结果以及由线性变换引入的配置参数获得所述输出矩阵。
与现有技术相比,本发明的优点在于:本发明的神经网络运算装置实现了量化后的输入数据矩阵和系数矩阵的矩阵乘法操作,能够降低神经网络推理的计算量和存储量,并提高了推理速度。
附图说明
以下附图仅对本发明作示意性的说明和解释,并不用于限定本发明的范围,其中:
图1示出了根据本发明一个实施例的神经网络运算装置的示意图;
图2示出了图1的运算装置中的线性转换补偿模块的电路结构图;
图3示出了根据本发明一个实施例的获得输出矩阵的流程图。
具体实施方式
为了使本发明的目的、技术方案、设计方法及优点更加清楚明了,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明提供一种神经网络运算装置,该装置能够实现神经网络中量化后的矩阵乘法运算。使用线性变换等量化方法可将浮点数转化为整型整数,如将32bit浮点数转化为8bit或16bit的整型整数,下文将以一种通用的线性变换为例介绍本发明的神经网络运算装置和运算方法。
通用的线性变换可以表示为:
Figure BDA0001841030590000052
其中,r是需要量化的浮点数,q是将r量化后的整数,Z、S是量化参数,S是浮点数、Z是整数。
在深度神经网络中,卷积层和全连接层等均涉及输入数据矩阵和系数矩阵的乘法运算,可表示为
Ro=RiRw (2)
其中,Ro是N*M的输出矩阵,Ri是N*K的输入数据矩阵,Rw是K*M的系数矩阵,N、M、K是正整数,在通常的神经网络处理中,Ro、Ri和Rw均是浮点类型。
在进行通用线性变换时,公式(2)中三个矩阵的每个元素都满足公式(1),并且每个矩阵有一个对应的S和Z,则三个矩阵中的各元素可表示为:
Figure BDA0001841030590000051
其中,n,m,k是用于表示矩阵中元素的索引。
将公式(3)带入公式(2),得到:
Figure BDA0001841030590000061
Figure BDA0001841030590000062
Figure BDA0001841030590000063
其中,
Figure BDA0001841030590000064
Zo是整数,例如8bit整数,
Figure BDA0001841030590000065
Figure BDA0001841030590000066
是整数,例如32bit整数,
Figure BDA0001841030590000067
是浮点数,
Figure BDA0001841030590000068
表示输入数据矩阵中位于第n行第k列的元素、
Figure BDA0001841030590000069
表示系数矩阵中位于第k行第m列的元素。
此外,为了进一步减少浮点运算,还可将
Figure BDA00018410305900000610
写作M=2-jM0定点数。
通过上述线性变换,将对神经网络中输出矩阵Ro的计算转换成了计算公式(4)中的
Figure BDA00018410305900000611
通过线性变换方式,对于输出矩阵都可以用整数计算,从而显著降低了计算量,并且输入数据和系数都采用整数表示也减少了存储空间。
图1示出了根据本发明一个实施例的神经网络运算装置,该装置包括Kx路加法模块110、Kx*Mx乘累加模块120以及Mx路线性变换补偿模块130,其中,Kx、Mx为任意正整数。如图1所示,加法模块110与乘累加模块120以及线性变换补偿模块130具有通信连接,乘累加模块120和线性变换补偿模块130具有通信连接。
加法模块110用于执行输入数据的累加操作,例如,可将输入数据矩阵的一行向量的Kx个元素一次输入到Kx路加法模块110,获得Kx个元素的累加结果。此外,加法模块110还可将接收的输入数据矩阵的行向量继续向其它模块传输。
乘累加模块120用于执行输入数据矩阵的行向量和系数矩阵的列向量的乘累加操作,其中,输入数据矩阵的行向量可来自于加法模块110,系数矩阵的列向量可内置于乘累加模块120中。
线性变换补偿模块130用于接收加法模块110的计算结果和乘累加模块120的计算结果,并进一步结合由线性变换所引入的配置参数来获得最终的输出矩阵中的元素。
在本文中,配置参数包括线性变换参数S、Z,以及基于线性变换参数S、Z和结合已知的系数矩阵(对于已经训练好的深度神经网络,系数矩阵是已知不变的)所计算的结果等,例如,公式(4)中的Z0、Zw
Figure BDA0001841030590000071
Figure BDA0001841030590000072
等均可称为配置参数。在执行输出矩阵的运算之前,这些配置参数可预先发送给线性变换补偿模块130,不需要实时计算。
图2示出了根据本发明一个实施例的Mx路线性变换补偿模块的电路结构图,该线性变换补偿模块包括Mx个线性变换补偿单元,每个线性变换补偿单元包括多个乘法器和多个加法器,例如,第一路线性变换补偿单元包括乘法器1a、乘法器2a、加法器1a、加法器2a和加法器3a,第二路线性变换补偿单元包括乘法器1a、乘法器2b、加法器1b、加法器2b和加法器3b,其中,乘法器1a的输入端与加法模块210连接,乘法器1a的输出端与Mx路线性变换补偿单元的加法器1a、1b、1c等连接,加法器1a、1b、1c等的输入端与乘累加模块220连接。
需要说明的是,在图2的示例中,多个线性变换补偿单元共用同一个乘法器1a,本领域的技术人员根据实际需要,对各线性变换补偿单元也可采用独立的乘法器1a。
结合图1和图2,对于上述公式(4)的执行过程为:
加法模块110接收输入数据矩阵的一行向量,得到累加结果
Figure BDA0001841030590000073
并将累加结果发送至线性变换补偿模块130的乘法器1a,此外,加法模块110还将输入数据矩阵的该一行向量继续发送至乘累加模块120;
乘法器1a执行
Figure BDA0001841030590000074
与参数Zw的相乘运算,得到
Figure BDA0001841030590000075
并将计算结果发送给加法器1a,其中,参数Zw可内置于乘法器1a;
乘累加模块120执行输入数据矩阵的上述一行向量和系数矩阵的一列向量的乘累加操作,得到乘累加结果
Figure BDA0001841030590000081
并将计算结果发送至线性变换补偿模块130的加法器1a;
加法器1a对接收到的
Figure BDA0001841030590000082
Figure BDA0001841030590000083
执行减法运算,得到
Figure BDA0001841030590000084
并将计算结果发送至加法器2a;
加法器2a对于接收到的
Figure BDA0001841030590000085
Figure BDA0001841030590000086
执行相加运算,获得
Figure BDA0001841030590000087
并将计算结果发送至乘法器2a,其中,
Figure BDA0001841030590000088
可内置于加法器2a;
乘法器2a执行
Figure BDA0001841030590000089
Figure BDA00018410305900000810
的乘法运算,得到
Figure BDA00018410305900000811
并将计算结果发送给加法器3a,其中
Figure BDA00018410305900000812
可内置于乘法器2a,并且优先地,可将
Figure BDA00018410305900000813
表示为M=2-jM0
加法器3a执行
Figure BDA00018410305900000814
与Zo的加法操作,从而最终获得
Figure BDA00018410305900000815
其中,Zo可内置于加法器3a。
下面参照一个示例,具体描述计算过程,其中取Kx=3,Mx=3,输入数据矩阵是N=3,K=3,通过本发明的运算装置实现计算
Figure BDA0001841030590000091
的一个实例是(参见图3所示):
步骤S310,量化输入数据矩阵。
例如,对于浮点类型的输入数据矩阵
Figure BDA0001841030590000092
根据公式(1),应用量化参数Si=10.5,Zi=6,可将该矩阵的浮点数量化成为
Figure BDA0001841030590000093
量化后的输入数据矩阵表示为:
Figure BDA0001841030590000094
步骤S320,量化系数矩阵。
例如,对于K=3,M=3的系数矩阵
Figure BDA0001841030590000095
同样根据量化参数Sw=13.5,Zw=10,可将该矩阵的浮点数量化成为
Figure BDA0001841030590000096
量化后的系数矩阵表示为:
Figure BDA0001841030590000097
步骤S330,基于量化参数计算线性变换引入的配置参数。
在此步骤中,根据输入数据矩阵的量化参数(即Si=10.5,Zi=6)以及系数矩阵的量化参数(即Sw=13.5,Zw=10)获得线性变换的配置参数,包括Zw
Figure BDA0001841030590000098
以及
Figure BDA0001841030590000099
具体地,在得到量化的系数矩阵后,可计算出
Figure BDA00018410305900000910
其中,
Figure BDA00018410305900000911
为:
当m=0时,
Figure BDA0001841030590000101
m=1时,
Figure BDA0001841030590000102
m=2时,
Figure BDA0001841030590000103
在得到量化的输入数据矩阵和量化的系数矩阵之后,可计算出
Figure BDA0001841030590000104
并可进一步表示为M=2-jM0,即:
Figure BDA0001841030590000105
将这些配置参数发送给Mx路线性变换补偿模块,以将其内置于对应的乘法器、加法器等。
步骤S340,利用本发明提供的运算装置获得输出矩阵。
输出矩阵中的各元素
Figure BDA0001841030590000106
可通过本发明提供的运算装置获得,量化参数是So=15.5,Zo=18,运算装置的执行过程是:
步骤S341,Kx路加法模块计算,得到
Figure BDA0001841030590000107
首先,将输入数据矩阵的一行向量[123]输入到Kx路加法模块(Kx=3),加法模块计算得到1+2+3=6,并将计算结果发送给Mx路线性变换补偿模块(Mx=5),并且加法模块还将[123]继续发送给乘累加模块。
Kx路加法模块可计算得到
Figure BDA0001841030590000108
即当n=0时,
Figure BDA0001841030590000109
当n=1时,
Figure BDA00018410305900001010
当n=2时,
Figure BDA00018410305900001011
步骤S342,Kx*Mx乘累加模块执行输入数据矩阵的行向量和系数矩阵的列向量的乘累加运算,得到
Figure BDA00018410305900001012
乘累加模块执行输入数据矩阵的行向量[123]和系数矩阵的各列向量的乘累加计算,获得三个乘累加结果,即1*10+2*13+3*16=84,1*11+2*14+3*17=90,1*12+2*15+3*18=96,类似地,对于Kx*Mx乘累加模块可同时计算出输入数据矩阵的各行向量分别与系数矩阵的各列向量的乘累加结果,并将这些结果发送至Mx路线性变换补偿模块。
步骤S343,Mx路线性变换补偿模块计算最终的输出矩阵。
例如,对于输出矩阵中的一个元素
Figure BDA0001841030590000111
其中,
Figure BDA0001841030590000112
是来自于Kx路加法模块的计算结果,而
Figure BDA0001841030590000113
是来自于乘累加模块的计算结果,而线性变换配置参数
Figure BDA0001841030590000114
Figure BDA0001841030590000115
均可以在量化输入数据矩阵和系数矩阵时获得,并将这些配置参数发送给Mx路线性变换补偿模块,作为内置参数预先存储。
需要说明的是,本发明的上述实施例仅为示意性的,在不违背本发明的精神和范围的前提下,本领域的技术人员可根据实际情况作适当的变型,例如,加法模块、乘累加模块和线性变换补偿模块的规模可与输入数据矩阵或系数矩阵的维数无关,当矩阵的规模大于本发明运算装置中的各模块规模时,可首先将矩阵分块再执行运算。又如,加法模块、乘累加模块和线性变换补偿模块还可包含存储器等,以存储相关参数或中间计算结果,此外,线性变换配置参数也不必须内置于线性变换补偿模块,例如,通过运算装置内部或外部的控制模块在实际运算过程中再加载至相应的乘法器或加法等。
本发明提供的运算装置可以包含在神经网络处理器或加速器中,以实现神经网络中矩阵乘法运算,神经网络处理器可包括控制模块,用于控制神经网络计算数据的加载过程和计算过程,神经网络处理器可以是针对神经网络计算而设计的一个微处理器,也可以仅是微处理器的一部分,该神经网络处理器可应用于文字处理、语音识别与处理、多国语言翻译、图像识别、生物特征识到、智能控制等领域,可用作智能计算处理器、机器人、移动设备、也可用于构建大规模神经网络计算超级计算机。基于本发明的神经网络处理器能够节省存储空间,提高运算效率并降低运行功耗。
本发明的神经网络处理器可应用了各种电子设备,例如、移动电话、嵌入式电子设备等。
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (12)

1.一种神经网络运算装置,用于实现神经网络中经过线性变换后的输入数据矩阵和系数矩阵的乘法运算,以获得输出矩阵,该装置包括加法模块、乘累加模块和线性变换补偿模块,其中:
所述加法模块用于对接收的所述输入数据矩阵的行向量执行累加操作,获得累加结果;
所述乘累加模块用于执行所述输入数据矩阵的行向量和所述系数矩阵的对应列向量的乘累加操作,获得乘累加结果;
所述线性变换补偿模块用于根据所述累加结果和所述乘累加结果以及由线性变换引入的配置参数获得所述输出矩阵。
2.根据权利要求1所述的装置,其特征在于,在执行所述输入数据矩阵和所述系数矩阵之前,将所述由线性变换引入的配置参数发送至所述线性变换补偿模块进行存储。
3.根据权利要求1所述的装置,其特征在于,所述线性变换补偿模块包括至少一个线性变换补偿单元,每个线性变换补偿单元用于接收来自于所述加法模块的累加结果以及接收来自于所述乘累加模块的乘累加结果,并根据所述由线性变换引入的配置参数获得所述输出矩阵的一个元素。
4.根据权利要求3所述的装置,其特征在于,所述线性变换补偿模块的线性变换补偿单元包括第一乘法器、第二乘法器,第一加法器、第二加法器和第三加法器,其中:
所述第一乘法器的输入端接收来自于所述加法模块的计算结果;
所述第一加法器的一个输入端连接所述第一乘法器的输出端,所述第一加法器的另一输入端接收来自于所述乘累加模块的计算结果;
所述第二加法器的一个输入端连接所述第一加法器的输出端;
所述第二乘法器的一个输入端连接所述第二加法器的输出端;
所述第三加法器的输入端连接所述第二乘法器的输出端。
5.根据权利要求4所述的装置,其特征在于,通过以下步骤获得所述输出矩阵的一个元素
Figure FDA0001841030580000011
所述加法模块接收所述输入数据矩阵的一行向量,并执行累加操作,得到
Figure FDA0001841030580000021
所述乘累加模块接收所述加法模块的所述输入数据矩阵的一行向量并执行与内置的所述系数矩阵的对应列向量的乘累加操作,得到
Figure FDA0001841030580000022
所述第一乘法器接收所述加法模块的结果
Figure FDA0001841030580000023
并执行与内置的Zw的相乘运算,获得
Figure FDA0001841030580000024
所述第一加法器接收来自于所述乘累加模块的结果
Figure FDA0001841030580000025
和来自于所述第一乘法器的结果
Figure FDA0001841030580000026
并执行减法运算,获得
Figure FDA0001841030580000027
所述第二加法器接收来自于所述第一加法器的结果
Figure FDA0001841030580000028
并执行与内置的
Figure FDA0001841030580000029
的相加操作,获得
Figure FDA00018410305800000210
所述第二乘法器接收来自于所述第二加法器的结果
Figure FDA00018410305800000211
并执行与
Figure FDA00018410305800000212
的乘法操作,获得结果
Figure FDA00018410305800000213
所述第三加法器接收来自于所述第二乘法器的结果,并执行与内置的Zo的加法操作,获得所述输出矩阵的一个元素
Figure FDA00018410305800000214
其中,K表示输入数据矩阵的列维数,Z0、Zw
Figure FDA0001841030580000031
是由线性变换引入的配置参数,
Figure FDA0001841030580000032
表示输入数据矩阵中位于第n行第k列的元素、
Figure FDA0001841030580000033
表示系数矩阵中位于第k行第m列的元素。
6.根据权利要求5所述的装置,其特征在于,将
Figure FDA0001841030580000034
表示为M=2-jM0的定点数,并内置于所述第二乘法器。
7.根据权利要求4所述的装置,其特征在于,所述线性变换补偿模块所包含的多个线性变换补偿单元的第一乘法器共用同一个乘法器。
8.根据权利要求1所述的装置,其特征在于,所述乘累加模块接收来自于所述加法模块的输入数据矩阵的行向量,并与内置的所述系数矩阵的对应列向量执行乘累加操作。
9.一种神经网络处理器,包括:
根据权利要求1至8任一项所述的神经网络运算装置,用于实现神经网络中经过线性变换后的输入数据矩阵和系数矩阵的乘法运算,以获得输出矩阵;
控制模块:用于控制所述神经网络运算装置的数据加载过程和执行过程。
10.一种神经网络运算方法,用于实现神经网络中经过线性变换后的输入数据矩阵和系数矩阵的乘法运算,以获得输出矩阵,该方法包括:
步骤1:对接收的所述输入数据矩阵的行向量执行累加操作,获得累加结果;
步骤2:执行所述输入数据矩阵的行向量和所述系数矩阵的对应列向量的乘累加操作,获得乘累加结果;
步骤3:根据所述累加结果和所述乘累加结果以及由线性变换引入的配置参数获得所述输出矩阵。
11.一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现根据权利要求10所述的方法的步骤。
12.一种计算机设备,包括存储器和处理器,在所述存储器上存储有能够在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求10所述的方法的步骤。
CN201811248188.6A 2018-10-25 2018-10-25 一种神经网络运算装置和运算方法 Active CN111105019B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811248188.6A CN111105019B (zh) 2018-10-25 2018-10-25 一种神经网络运算装置和运算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811248188.6A CN111105019B (zh) 2018-10-25 2018-10-25 一种神经网络运算装置和运算方法

Publications (2)

Publication Number Publication Date
CN111105019A true CN111105019A (zh) 2020-05-05
CN111105019B CN111105019B (zh) 2023-11-10

Family

ID=70418122

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811248188.6A Active CN111105019B (zh) 2018-10-25 2018-10-25 一种神经网络运算装置和运算方法

Country Status (1)

Country Link
CN (1) CN111105019B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105844330A (zh) * 2016-03-22 2016-08-10 华为技术有限公司 神经网络处理器的数据处理方法及神经网络处理器
CN107862374A (zh) * 2017-10-30 2018-03-30 中国科学院计算技术研究所 基于流水线的神经网络处理系统和处理方法
US20180157969A1 (en) * 2016-12-05 2018-06-07 Beijing Deephi Technology Co., Ltd. Apparatus and Method for Achieving Accelerator of Sparse Convolutional Neural Network

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105844330A (zh) * 2016-03-22 2016-08-10 华为技术有限公司 神经网络处理器的数据处理方法及神经网络处理器
US20180157969A1 (en) * 2016-12-05 2018-06-07 Beijing Deephi Technology Co., Ltd. Apparatus and Method for Achieving Accelerator of Sparse Convolutional Neural Network
CN107862374A (zh) * 2017-10-30 2018-03-30 中国科学院计算技术研究所 基于流水线的神经网络处理系统和处理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
金席;高小鹏;龙翔;: "浮点乘累加处理单元的FPGA实现", 计算机与数字工程, no. 10 *
饶静;李源;: "基于SOPC的神经网络方法的软硬协同实现", 信息通信, no. 02 *

Also Published As

Publication number Publication date
CN111105019B (zh) 2023-11-10

Similar Documents

Publication Publication Date Title
CN107862374B (zh) 基于流水线的神经网络处理系统和处理方法
CN109190756B (zh) 基于Winograd卷积的运算装置及包含该装置的神经网络处理器
CN107977704B (zh) 权重数据存储方法和基于该方法的神经网络处理器
CN107844826B (zh) 神经网络处理单元及包含该处理单元的处理系统
CN108073983B (zh) 在硬件中执行核心跨越
CN109325591B (zh) 面向Winograd卷积的神经网络处理器
CN107944545B (zh) 应用于神经网络的计算方法及计算装置
CN107818367B (zh) 用于神经网络的处理系统和处理方法
CN110097172B (zh) 一种基于winograd卷积运算的卷积神经网络数据处理方法及装置
CN109359730B (zh) 面向固定输出范式Winograd卷积的神经网络处理器
CN108171328B (zh) 一种神经网络处理器和采用其执行的卷积运算方法
JP2022513404A (ja) トレーニング済み長短期記憶ニューラルネットワークの量子化
CN112508125A (zh) 一种图像检测模型的高效全整数量化方法
CN107395211B (zh) 一种基于卷积神经网络模型的数据处理方法及装置
CN111178258B (zh) 一种图像识别的方法、系统、设备及可读存储介质
WO2018064591A1 (en) Generating video frames using neural networks
CN108320018B (zh) 一种人工神经网络运算的装置及方法
KR20190098671A (ko) 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치
CN111931901A (zh) 一种神经网络构建方法以及装置
CN113780549A (zh) 溢出感知的量化模型训练方法、装置、介质及终端设备
CN115329744A (zh) 一种自然语言处理方法、系统、设备及存储介质
CN108734270B (zh) 一种兼容型神经网络加速器及数据处理方法
CN111882028B (zh) 用于卷积神经网络的卷积运算装置
CN111652349A (zh) 一种神经网络的处理方法及相关设备
CN111105019A (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