CN110337658A - 神经网络加速装置与方法 - Google Patents
神经网络加速装置与方法 Download PDFInfo
- Publication number
- CN110337658A CN110337658A CN201880011107.2A CN201880011107A CN110337658A CN 110337658 A CN110337658 A CN 110337658A CN 201880011107 A CN201880011107 A CN 201880011107A CN 110337658 A CN110337658 A CN 110337658A
- Authority
- CN
- China
- Prior art keywords
- value
- output characteristic
- characteristic value
- fixed point
- point format
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/14—Conversion to or from non-weighted codes
- H03M7/24—Conversion to or from floating-point codes
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
-
- 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/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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3059—Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6047—Power optimization with respect to the encoder, decoder, storage or transmission
Abstract
提供一种神经网络加速装置与方法,该装置包括:输入单元,用于获取输入特征值;计算单元,用于对该输入单元接收的该输入特征值进行计算处理,获得输出特征值;输出单元,用于在该计算单元获得的该输出特征值的定点格式与预设定点格式不同的情况下,按照该预设定点格式对该输出特征值进行低位移出和/或高位截断,获得目标输出特征值,该目标输出特征值的定点格式为该预设定点格式。本申请通过神经网络加速装置对数据的定点格式进行调整,由于无需CPU来执行数据的定点格式的调整,在一定程度上减少了对DDR的占用,因此可以减少资源耗费。
Description
版权申明
本专利文件披露的内容包含受版权保护的材料。该版权为版权所有人所有。版权所有人不反对任何人复制专利与商标局的官方记录和档案中所存在的该专利文件或者该专利披露。
技术领域
本申请涉及神经网络领域,并且更为具体地,涉及一种神经网络加速装置与方法。
背景技术
当前主流的神经网络计算框架中,基本都是利用浮点数进行训练计算的,例如,神经网络计算框架训练后得到的权重系数和各层的输出特征值都是单精度或双精度浮点数。由于定点运算装置相比于浮点运算装置占用的面积更小,消耗的功耗更少,所以神经网络的加速装置普遍采用定点数作为计算单元运算时要求的数据格式。因此,神经网络计算框架训练得到的权重系数和各层的输出特征值在神经网络的加速装置中部署时,均需要进行定点化。定点化指的是将数据由浮点数转换为定点数的过程。
当前技术中,权重系数的定点化通常在网络部署之前由配置工具完成。输入特征值(或输出特征值)的定点化通常在神经网络计算过程中由中央处理器(CentralProcessing unit,CPU)负责。此外,神经网络中同一层的不同数据(输入特征值或输出特征值)以及不同层的相同数据(输入特征值或输出特征值)在定点化后的定点格式可能会不同,因此,可能还需要对数据的定点格式进行调整,当前技术中,由CPU负责对数据的定点格式作调整。
在神经网络计算过程中,CPU与神经网络加速装置之间交互数据的流程大致为:1)神经网络加速装置将处理的数据写入双倍速率同步动态随机存储器(Double Data Rate,DDR);2)CPU从DDR读取需要处理的数据;3)CPU完成数据处理后将结果写入DDR;4)神经网络加速装置从DDR中获取CPU处理后的结果。
上述CPU处理数据的方案需要耗费较长的时间,会降低神经网络数据计算的效率。
发明内容
本申请提供一种神经网络加速装置与方法,可以有效提高神经网络数据计算的效率。
第一方面,提供一种神经网络加速装置,该装置包括:输入单元,用于获取输入特征值;计算单元,用于对该输入单元接收的该输入特征值进行计算处理,获得输出特征值;输出单元,用于在该计算单元获得的该输出特征值的定点格式与预设定点格式不同的情况下,按照该预设定点格式对该输出特征值进行低位移出和/或高位截断,获得目标输出特征值,该目标输出特征值的定点格式为该预设定点格式。
第二方面,提供一种用于神经网络的数据处理方法,该方法由神经网络加速装置执行,该方法包括:接收输入特征值;对该输入特征值进行计算处理,获得输出特征值;在该输出特征值的定点格式与预设定点格式不同的情况下,按照该预设定点格式对该输出特征值进行低位移出和/或高位截断,获得目标输出特征值,该目标输出特征值的定点格式为该预设定点格式。
第三方面,提供一种芯片,该芯片上集成有第一方面提供的神经网络加速装置。
第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被计算机执行时使得所述计算机实现第二方面或第二方面的任一可能的实现方式中的方法。
第五方面,提供一种包含指令的计算机程序产品,所述指令被计算机执行时使得所述计算机实现第二方面或第二方面的任一可能的实现方式中的方法。
综上所述,本申请提供的方案,通过神经网络加速装置对数据的定点格式进行调整,由于无需CPU来执行数据的定点格式的调整,在一定程度上减少了对DDR的占用,因此可以减少资源耗费。
附图说明
图1是深度卷积神经网络的框架示意图。
图2是本申请实施例提供的神经网络加速装置的架构示意图。
图3是本申请实施例提供的神经网络加速装置的示意性框图。
图4是本申请实施例提供的神经网络加速装置中的输出单元处理输出特征值的示意性流程图。
图5是本申请实施例提供的神经网络加速装置中的输入单元处理输入特征值的示意性流程图。
图6是本发明实施例提供的用于神经网络的数据处理方法的示意性流程图。
具体实施方式
下面将结合附图,对本申请实施例中的技术方案进行描述。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。
首先介绍本申请实施例涉及的相关技术及概念。
(1)神经网络(以深度卷积神经网络(Deep Convolutional Neural Network,DCNN)为例)。
图1是深度卷积神经网络的框架示意图。深度卷积神经网络的输入值(由输入层输入),经隐藏层进行卷积(convolution)、转置卷积(transposed convolution ordeconvolution)、归一化(Batch Normalization,BN)、缩放(Scale)、全连接(fullyconnected)、拼接(Concatenation)、池化(pooling)、元素智能加法(element-wiseaddition)和激活(activation)等运算后,得到输出值(由输出层输出)。本申请实施例的神经网络的隐藏层可能涉及的运算不仅限于上述运算。
深度卷积神经网络的隐藏层可以包括级联的多层。每层的输入为上层的输出,为特征图(feature map),每层对输入的一组或多组特征图进行前述描述的至少一种运算,得到该层的输出。每层的输出也是特征图。一般情况下,各层以实现的功能命名,例如实现卷积运算的层称作卷积层。此外,隐藏层还可以包括转置卷积层、BN层、Scale层、池化层、全连接层、Concatenation层、元素智能加法层和激活层等等,此处不进行一一列举。各层的具体运算流程可以参考现有的技术,本文不进行赘述。
应理解,每层(包括输入层和输出层)可以有一个输入和/或一个输出,也可以有多个输入和/或多个输出。在视觉领域的分类和检测任务中,特征图的宽高往往是逐层递减的(例如图1所示的输入、特征图#1、特征图#2、特征图#3和输出的宽高是逐层递减的);而在语义分割任务中,特征图的宽高在递减到一定深度后,有可能会通过转置卷积运算或上采样(upsampling)运算,再逐层递增。
通常情况下,卷积层的后面会紧接着一层激活层,常见的激活层有线性整流函数(Rectified Linear Unit,ReLU)层、S型(sigmoid)层和双曲正切(tanh)层等。在BN层被提出以后,越来越多的神经网络在卷积之后会先进行BN处理,然后再进行激活计算。
当前,需要较多权重参数用于运算的层有:卷积层、全连接层、转置卷积层和BN层。
(2)定点数。
定点数表达为符号位、整数部分和小数部分。
bw为定点数总位宽,s为符号位(通常置于最左位),fl为小数部分位宽,xi是各位(也称为尾数(mantissa)位)的数值。一个定点数的实值可以表示为:
例如,一个定点数为01000101,位宽为8位,最高位(0)为符号位,小数部分位宽fl为3。那么这个定点数代表的实值为:
x=(-1)0×2-3×(20+22+26)=8.625。
定点数的格式可以简写为m.n,m表示有效数据的位数,n表示在有效数据中小数的位数,该数据的总位宽为m+1,在某些实施例中,第一位为符号位。
例如,一个数据的定点格式为7.2,则表示该数据的有效数据位数为7,有效数据中小数的位数为2,该数据的位宽为8。
上文描述的是带符号位的定点数的表达形式。应理解,定点数也可以是不带符号位的,例如,一个定点数为01000101,位宽为8位,有效位数也为8,小数位宽为3,则其定点格式表示为8.2。
本申请实施例的方案可以适用于带符号位的定点数的场景,也可以适用于不带符号位的定点数的场景,本申请对此不做限定。但是为了便于理解与描述,下文实施例主要以带符号位的定点数的场景为例进行描述,所描述的方案也可通过合理的变换适用于不带符号位的定点数的场景,该方案也落入本申请的保护范围。
应理解,神经网络中同一层的不同数据以及不同层的相同数据在定点化后的定点格式可能会不同,例如,同一层的数据1与数据2的定点格式分别为7.2(有效数据位数为7,小数位数为2)与7.4(有效数据位数为7,小数位数为4)。定点化后的输入特征值的定点格式可能与神经网络加速装置的计算单元要求的数据格式不同,例如,输入特征值的定点格式为7.2(有效数据位数为7,小数位数为2),计算单元要求的输入、输出的位宽为16比特。神经网络加速装置的计算单元输出的输出特征值的定点格式可能与预设定点格式不同。因此,在网络计算过程中,除了需要将浮点格式的数据转换为定点格式的数据之外,还需要对定点格式的数据的定点格式做适应性调整。
当前技术,对定点格式的数据的定点格式做适应性调整的操作是由CPU负责的。从上文描述可知,CPU与神经网络加速装置之间是通过DDR来交换数据,这种模式会降低数据处理的速率,还会增加DDR带宽的消耗。
本申请实施例提出一种神经网络加速装置与方法,可以有效提高神经网络数据处理的效率。
图2为本申请实施例提供的神经网络加速装置200的架构示意图。该装置200包括特征值输入模块210、特征值处理模块220与特征值输出模块230。
特征值输入模块210用于,获取输入特征值,并将获取的输入特征值发送至特征值处理模块220中进行处理。
例如,特征值输入模块210获取的输入特征值可以是整个神经网络的输入特征图中的数据,且该输入特征值图在部署到神经网络之前已经被定点化。也就是说,特征值输入模块210获取的输入特征值的数据格式为定点数。
再例如,特征值输入模块210获取的输入特征值为神经网络中当前层(正在进行计算处理的层)的输入特征值,该输入特征值为上一层的输出特征值。由于神经网络的加速装置普遍采用定点数作为计算单元要求的数据格式,因此,上一层的输出特征值也是定点格式的数据,也就是说,特征值输入模块210获取的输入特征值的数据格式为定点数。
需要说明的是,本申请实施例中特征值输入模块210获取的输入特征值为定点格式的数据。
如图2所示,特征值输入模块210可以同时获取多个输入特征值。
可选地,特征值输入模块210还用于,在向特征值处理模块220发送输入特征值之前,对该输入特征值进行位宽扩展操作和/或移位操作。位宽扩展操作指的是,扩展输入特征值的总位数。例如,输入特征值初始为8位,将其扩展为16位。移位操作包括左移位操作或右移位操作。下文将具体描述这部分内容。
特征值处理模块220用于,对从特征值输入模块210接收的输入特征值进行计算处理。
例如,特征值处理模块220对输入特征值的计算处理包括但不限于:卷积层的卷积处理,池化层的处理,或Element-wise层的Element-wise操作等。应理解,对于一个向量或者是矩阵这种多元素的变量,Element-wise操作指的是,其运算是对每一个元素操作的。即,如果Element-wise操作是加法操作,则针对每一个元素都要加上一个确定的值。
应理解,特征值处理模块220采用定点数作为计算处理的数据格式,也就是说,特征值处理模块220中的运算操作数的数据格式是定点数。
特征值输出模块230用于,接收特征值处理模块220得到的输出特征值,并将该输出特征值处理为预设定点格式的数据。
由于特征值处理模块220采用定点数作为计算处理的数据格式,因此,特征值处理模块220获得的输出特征值的数据格式为定点数。也就是说,获特征值输出模块230接收的输出特征值的数据格式为定点数。
例如,特征值输出模块230获得的预设定点格式的输出特征值可以输出至下一层,作为下一层的输入特征值。再例如,特征值输出模块230获得的预设定点格式的输出特征值可以作为整个网络的输出结果。
本文中涉及的预设定点格式可以是预配置的,例如,该预设定点格式由配置程序通过寄存器进行配置。
本申请实施例提供的神经网络加速装置,不仅可以对数据进行计算处理,还可以对数据的定点格式进行适应性调整,由于无需CPU来执行数据的定点格式的调整,从而可以在一定程度上减少通过DDR与CPU交换数据的次数,因此,可以在一定程度上加快神经网络的数据处理,此外还可以降低对DDR的占用,减少资源耗费。
应理解,本申请实施例中对输入特征值和/或输出特征值的处理也可以认为是一种由一种定点格式转换为另一种定点格式的定点化方法。
图3为本申请实施例提供的神经网络加速装置300的示意性框图。该装置300包括如下单元。
输入单元310,用于获取输入特征值。
输入单元310获取的输入特征值的数据格式为定点数。
可选地,输入单元310获取的输入特征值为整个神经网络的输入特征图中的数据。
该输入特征值图在部署到神经网络之前已经被定点化。也就是说,输入单元310获取的输入特征值的数据格式为定点数。
可选地,输入单元310获取的输入特征值为神经网络中当前层(正在进行计算处理的层)的输入特征值,该输入特征值为上一层的输出特征值。
由于神经网络的加速装置普遍采用定点数作为计算单元要求的数据格式,因此,上一层的输出特征值也是定点格式的数据,也就是说,输入单元310获取的输入特征值的数据格式为定点数。
可选地,输入单元310可以获取一个或多个输入特征值。
应理解,该输入单元310可对应于上文实施例中的特征值输入模块210。
计算单元320,用于对该输入单元310接收的该输入特征值进行计算处理,获得输出特征值。
具体地,计算单元320对输入特征值的计算处理包括但不限于如下计算中的任一种:卷积层的卷积处理,池化层的处理,或Element-wise层的Element-wise操作等。
应理解,该计算单元320可对应于上文实施例中的特征值处理模块220。
输出单元330,用于在该计算单元320获得的该输出特征值的定点格式与预设定点格式不同的情况下,按照该预设定点格式对该输出特征值进行低位移出和/或高位截断,获得目标输出特征值,该目标输出特征值的定点格式为该预设定点格式。
具体地,定点格式表示为m.n,m表示有效数据位数,n表示有效数据中小数的位数。
假设预设定点格式为7.2。例如计算单元320获得的输出特征值的定点格式为7.4,则需要对该输出特征值进行低位移出,以获得定点格式为7.2的目标输出特征值。再例如,计算单元320获得的输出特征值的定点格式为15.2,则需要对该输出特征值进行高位截断,以获得定点格式为7.2的目标输出特征值。再例如,计算单元320获得的输出特征值的定点格式为15.4,则需要对该输出特征值进行低位移出与高位截断,以获得定点格式为7.2的目标输出特征值。
应理解,该输出单元330可对应于上文实施例中的特征值输出模块230。
本申请实施例通过神经网络加速装置对数据的定点格式进行调整,由于无需CPU来执行数据的定点格式的调整,从而可以在一定程度上减少通过DDR与CPU交换数据的次数,因此,可以在一定程度上加快神经网络的数据处理的速度,从而提高神经网络的数据处理效率。
还应理解,本申请实施例通过神经网络加速装置对数据的定点格式进行调整,由于无需CPU来执行数据的定点格式的调整,在一定程度上减少了对DDR的占用,因此可以减少资源耗费。
可选地,在一些实施例中,计算单元320输出的输出特征值的定点格式表示的小数位数大于预设定点格式表示的小数位数,这种情形下,输出单元330需要对该输出特征值进行低位移出的操作。该输出单元330用于,按照该预设定点格式,将该输出特征值的L个低位移出,L等于计算单元320输出的输出特征值的定点格式表示的小数位数减去预设定点格式表示的小数位数的差;当该L个低位表示的值大于或等于L个比特表示的最大值的一半,对已经移出该L个低位的输出特征值进行加1操作,获得该目标输出特征值;当该L个低位表示的值小于L个比特表示的最大值的一半,将已经移出该L个低位的输出特征值作为该目标输出特征值。
本实施例根据对输出特征值低位移出的L个比特的值与L个比特位能够表示的最大值之间的比较,来决定是否对处理后的输出特征值加1,这个过程可以称为“四舍五入”。
在上述实施例中,当该L个低位表示的值大于或等于L个比特表示的最大值的一半时,进行“五入”,否则“四舍。但本申请对此不做严格限定。实际应用中,可以根据实际需要配置“四舍五入”的判断准则。例如,可以在该L个低位表示的值大于或等于L个比特表示的最大值的65%时,进行“五入”,否则“四舍”。再例如,可以在该L个低位表示的值大于或等于L个比特表示的最大值的95%时,进行“五入”,否则“四舍”。
本申请实施例在对输出特征值进行低位移出之后,对其进行“四舍五入”的操作,可以在一定程度上保证最终输出的输出特征值的精度损失较小。
应理解,当计算单元320输出的输出特征值的定点格式表示的小数位数等于预设定点格式表示的小数位数,则输出单元330无需对该输出特征值执行上文描述的低位移出的操作。
还应理解,当计算单元320输出的输出特征值的定点格式表示的小数位数小于预设定点格式表示的小数位数,则输出单元330直接在该输出特征值的低位补零即可。
可选地,在一些实施例中,计算单元320输出的输出特征值的定点格式表示的有效位数大于预设定点格式表示的有效位数,这种情形下,输出单元330需要对该输出特征值进行高位截断的操作,使得高位截断之后的数据的有效数据位数等于预设定点格式表示的有效位数。
第一种情况,如果已经对计算单元320输出的输出特征值执行了上文描述的低位移出与“四舍五入”的操作,则在“四舍五入”的处理结果的基础上,进行高位截断。
第二种情况,如果未对计算单元320输出的输出特征值执行上文描述的低位移出与“四舍五入”的操作,则直接对计算单元320输出的输出特征值执行高位截断。
当经过上述实施例描述的低位移出与四舍五入操作,和/或高位截断操作之后的输出特征值的值大于预设定点格式表示的最大值,或小于预设定点格式表示的最小值时,输出单元330需要对该输出特征值进行饱和处理。
可选地,在上述某些实施例中,该输出特征值的值大于该预设定点格式表示的最大值;该输出单元330还用于,将该预设定点格式表示的最大值作为该目标输出特征值。
例如,当该预设定点格式表示带符号位的定点数的有效位数据的位数为m1,该有效数据中小数的位数为n1;其中,该目标输出特征值大于m1+1位比特表示的最大值;该输出单元330用于,将该m1+1位比特表示的正数最大值作为该目标输出特征值。
再例如,当该预设定点格式表示不带符号位的定点数的有效位数据的位数为m3,该有效数据中小数的位数为n3;其中,该目标输出特征值大于m3位比特表示的最大值;该输出单元330用于,将该m3位比特表示的正数最大值作为该目标输出特征值。
可选地,在上述某些实施例中,该输出特征值的值大于该预设定点格式表示的最小值;该输出单元还用于,将该预设定点格式表示的最小值作为该目标输出特征值。
例如,该预设定点格式表示带符号位的定点数的有效位数据的位数为m2,该有效位数据中小数的位数为n2;其中,该目标输出特征值小于m2+1位比特表示的负数最小值;该输出单元330用于,将该m2+1位比特表示的负数最小值作为该目标输出特征值。
需要说明的是,本实施例中,饱和处理的对象,可能直接是计算单元320输出的输出特征值;也有可能是计算单元320输出的输出特征值经过上文实施例提及的低位移出与“四舍五入”操作之后的结果;也有可能是计算单元320输出的输出特征值经过上文实施例提及的高位截断的操作之后的结果;还有可能是计算单元320输出的输出特征值经过上文实施例提及的低位移出与“四舍五入”操作,以及上文实施例提及的高位截断的操作之后的结果。
应理解,通过对输出特征值进行高位截断,使得输出特征值的总位宽与预设定点格式表示的总位宽一致。
为了更好地理解本申请的方案,下面通过举例的方式描述输出单元330对计算单元320输出的输出特征值的处理方法。
先做如下假设。预设定点格式为7.2,即表示有效数据位数为7,其中小数位数为2,该预定定点格式表示的数据的总位宽(TW)为8。计算单元320输出的输出特征值的值为16’b0000_0011_1111_1010(“16”表示该输出特征值的总位宽,“b”表示二进制),该输出特征值的定点格式为15.4(即有效数据位数为15,小数位数为4)。
输出单元330对该输出特征值的处理流程如图4所示。
S410,接收计算单元320输出的输出特征值。
S420,根据预设定点格式(7.2)与该输出特征值的定点格式(15.4),对该输出特征值进行低位移出。
具体地,需要对该输出特征值低位移出的位数为2,移出的比特为“10”。经过低位移出之后的输出特征值为16’b0000_0000_1111_1110。
S430,对S420处理得到的输出特征值进行四舍五入。
在某些实施例下,两个二进制比特能够表示的最大值为“11”,即十进制的3。S420中移出的二进制比特为“10”,即十进制的2。由于移出的比特的值“10”大于移出的二进制位数能够表示的最大值“11”的一半,因此对S430处理得到的输出特征值16’b0000_0000_1111_1110加1,得到16’b0000_0000_1111_1111;也可以认为,大于二个二进制比特能够表示的最大值的三个二进制比特能够表示的最小值为“100”,即十进制的4,S420中移出的二进制比特为“10”,即十进制的2,因此进行四舍五入的“入”操作。
在某些实施例下,因为小数位数移除两位“10”,则可用二进制转换十进制的方法,例如:x=1*2-3+0*2-4=0.125,其中:-3、-4表示小数位的第三第四位,而大于二个二进制比特能够表示的最大值的三个二进制比特能够表示的最小值为“100”,则十进制为x=1*2-2+0*2-3+0*2-4=0.25,对于0.125正好是0.25的一半,因此进行四舍五入的“入”操作。
S440,对S430处理得到的输入特征值进行高位截断,并做饱和处理,获得目标输出特征值。
由于预设定点格式为7.2,则需要对S430处理得到的输出特征值16’b0000_0000_1111_1111进行高位截断,得到的结果为“1111_1111”,应理解,这个结果超出了8个比特表示的正数最大值8’b 0111_1111(“8”表示总位宽为8,“b”表示二进制),因此,需要对这个结果做饱和处理,即将8个比特表示的正数最大值8’b0111_1111作为最终的输出特征值,即目标输出特征值为8’b0111_1111。
S450,输出目标输出特征值,即8’b0111_1111。
应理解,S430中的操作使得最终输出的输出特征值的精度损失较小。S440中的饱和处理,保证了最终输出的输出特征值的准确性与有效性。
还应理解,图4仅为示例而非限定,本申请实施例并非限定于此。例如,如果计算单元320输出的输出特征值的定点格式表示的小数位数与预设定点格式表示的小数位数相等,则无需执行S420与S430,执行完S410可以直接跳转到S440。再例如,如果在S440中,经过高位截断之后的结果没有超过预设定点格式表示的最大值,则也无需做饱和处理。再例如,如果计算单元320输出的输出特征值的定点格式表示的有效数据位数与预设定点格式表示的有效数据位数相等,则无需执行S440中高位截断的操作。
还应理解,假设计算单元320输出的输出特征值的定点格式与预设定点格式一致,则输出单元330无需对该输出特征值做处理,直接输出即可。
还应理解,上述实施例中涉及的输出单元330对计算单元320输出的输出特征值的各种处理方式,在实际应用中,可以根据具体情况进行适应性单独或组合使用,这些方案均落入本申请的保护范围。
上文已述,定点化后的输入特征值的定点格式可能与神经网络加速装置的计算单元要求的数据格式不同,例如,输入特征值的定点格式为7.2(有效数据位数为7,小数位数为2),计算单元要求的输入、输出的位宽为16比特。这种情形下,输入单元310需要对获取到的输入特征值进行相应地处理,使得输入到计算单元320中的数据符合计算单元320要求的数据格式。此外,为了降低数据的精度损失,也需要在对数据进行计算处理之间对数据进行位宽扩展操作。此外,如果多个输入特征值的定点格式不同,还需要对该多个输入特征值中进行移位操作,例如,按照小数位数最多的输入特征值的定点格式来进行移位操作。
可选地,在一些实施例中,该输入单元310还用于,对获取的输入特征值进行位宽扩展操作;其中,该计算单元320用于,对经过该位宽扩展操作之后的该输入特征值进行计算处理,获得该输出特征值。
例如,输入单元310按照计算单元320要求的输入位宽,对输入特征值进行位宽扩展操作,使得经过位宽扩展操作后的输入特征值的总位宽与该计算单元所要求的输入位宽一致。
例如,当输入特征值的总位宽小于计算单元310所要求的输入位宽,则需要对该输入特征值进行位宽扩展,且位宽扩展的长度为大于0的正数。再例如,当输入特征值的总位宽等于计算单元310所要求的输入位宽,则无需对该输入特征值进行位宽扩展,或者说,位宽扩展的长度为0。
当输入特征值的定点格式表示的小数位数与计算单元310所要求的定点格式表示的小数位数不一致时,除了需要对输入特征值作位宽扩展操作之外,还需要作移位操作。
可选地,在一些实施例中,该输入单元310用于,获取至少两个输入特征值,且该至少两个输入特征值的定点格式不同,则该输入单元310用于,对该至少两个输入特征值进行位宽扩展操作与移位操作;其中,该计算单元320用于,对经过该位宽扩展操作与该移位操作之后的该输入特征值进行计算处理,获得该输出特征值。
具体地,该至少两个输入特征值的定点格式不同,包括该至少两个输入特征值的定点格式对应的总位宽不同,和/或,该至少两个输入特征值的定点格式对应的小数位数不同。
例如,该至少两个输入特征值的定点格式对应的总位宽不同,该至少两个输入特征值的定点格式对应的小数位数相同,则输入单元310需要分别对该至少两个输入特征值进行位宽扩展操作,使得处理之后的该至少两个输入特征值的总位宽一致。应理解,这个过程中,还需要参考计算单元320要求的输入位宽来对该至少两个输入特征值做位宽扩展操作。
再例如,该至少两个输入特征值的定点格式对应的总位宽相同,该至少两个输入特征值的定点格式对应的小数位数不同,则输入单元310按照计算单元320要求的输入位宽分别对该至少两个输入特征值进行位宽扩展操作,使得处理之后的该至少两个输入特征值各自的总位宽与计算单元320所要求的输入位宽一致。然后,还需要对该至少两个输入特征值做移位操作,具体地,对小数位数较少的输入特征值作右移操作(相当于在低位补0),最终使得该至少两个输入特征值的小数点对齐。
再例如,该至少两个输入特征值的定点格式对应的总位宽不同,该至少两个输入特征值的定点格式对应的小数位数不同,则输入单元310按照计算单元320要求的输入位宽分别对该至少两个输入特征值进行位宽扩展操作,使得处理之后的该至少两个输入特征值各自的总位宽与计算单元320所要求的输入位宽一致。然后,还需要对该至少两个输入特征值做移位操作,具体地,对小数位数较少的输入特征值作右移操作(相当于在低位补0),最终使得该至少两个输入特征值的小数点对齐。
本实施例提供的神经网络加速装置,通过根据计算单元所要求的定点格式,对输入特征值的定点格式进行调整,使得调整后的输入特征值的定点格式与计算单元所要求的定点格式一致。本实施例提供的方案,相对于现有技术,无需CPU执行对输入特征值的定点格式进行调整的操作,这样可以有效降低加速装置通过DDR与CPU进行数据交换的次数,一方面可以提高数据处理效率,另一方面可以降低对DDR的占用。
还应理解,当输入单元310获取的输入特征值定点格式与计算单元320所要求的定点格式一致时,输入单元310无需对输入特征值作处理,可以直接将其发送至计算单元320中进行计算处理。
图5为本申请实施例提供的神经网络加速装置对输入特征值的处理方法的示意性流程图。如图5所示,该处理方法包括如下步骤。
S510,获取输入特征值。
S520,对输入特征值进行位宽扩展操作,位宽扩展的长度可以为0或大于0的值。
作为一个示例,根据计算单元310所要求的输入位宽,确定对输入特征值进行位宽扩展的长度。例如,当输入特征值的定点格式表示的总位宽等于计算单元310所要求的输入位宽时,无需对该输入特征值进行位宽扩展,或者说,位宽扩展的长度为0。再例如,当输入特征值的定点格式表示的总位宽小于计算单元310所要求的输入位宽时,需要对该输入特征值进行位宽扩展,且位宽扩展的长度为大于0的正数。
具体地,需要对输入特征值进行位宽扩展的长度可以由配置程度通过寄存器配置。
S530,对S520处理得到的输入特征值进行移位操作,使得移位后的输入特征值的小数点对齐。
具体地,输入单元310获取到至少两个输入特征值,且该至少两个输入特征值的定点格式对应的小数位数不同,这种情形下,按照至少两个输入特征值中小数位数最多的输入特征值为基准,对其余的输入特征值做右移操作(即低位补0)。
S540,将S530处理得到的输入特征值输出到计算单元310中。
应理解,输入单元320可以同时处理多个输入特征值,本申请实施例对此不做限定。
为了更好地理解本申请提供的方案,下面基于一个具体的例子,描述本申请提供的神经网络加速装置300对数据的处理流程。本例中涉及的定点格式表示待符号位的定点数。
对神经网络加速装置300作如下假设:神经网络加速装置300的输入单元310的输入的位宽为8比特,即输入单元310所获取的输入特征值的位宽为8比特。神经网络加速装置300中的计算单元320的输入、输出的位宽均为16比特,即计算单元320要求的数据格式对应的总位宽为16比特。计算单元320对输入特征值A和输入特征值完成C=A+B的操作,得到输出特征值C,将输出特征值C输出到输出单元330中。输出单元330按照预设定点格式对输出特征值C做处理,使得最终输出的输出特征值的定点格式与预设定点格式一致。
对输入特征值A和输入特征值B作如下假设:
输入特征值A的位宽为8比特,其值为8’b0111_0010,定点格式为7.2(即有效数据位数为7,有效数据中小数的位数为2)。
输入特征值B的位宽为8比特,其值为8’b0011_0010,定点化格式为7.4(即有效数据位数为7,有效数据中小数的位数为4)。
输入单元310获取输入特征子A和输入特征值B,并对输入特征值A和输入特征值B做位宽扩展和移位操作。
例如,为了不损失输入特征值A和B的数据精度,输入单元310将输入特征值A和B分别扩展为16比特的数据,定点格式为15.4。经过位宽扩展后的输入特征值A变为16’b0000_0000_0111_0010,经过位宽扩展之后的输入特征值B变为16’b0000_0000_0011_0010。
假如输入单元310的配置值表示对输入特征值左移的位数,则在输入单元310处理输入特征值A时使用的配置值为2,即将输入特征值A左移两位(相当于低位补2个零);而在输入单元310处理输入特征值B时使用的配置值为0,即不对输入特征值B作移位操作,或者说,对其移位的长度为0。
因此,按照定点格式15.4,输入特征值A被进行位宽扩展和移位操作之后,变为16’b0000_0001_1100_1000,输入特征值B被进行位宽扩展和移位操作(移位长度为0)之后,变为16’b0000_0000_0011_0010。
输入单元310将经过上述处理获得的输入特征值A和输入特征值B发送至处理单元320。
处理单元320对接收到的输入特征值A和输入特征值B做如下计算处理:C=A+B,得到输出特征值C,其值为16’b0000_0001_1111_1010。处理单元320将输出特征值C发送给输出单元330处理。
例如,输出单元330按照预设定点格式7.2对输出特征值C进行处理。
输出单元330从计算单元320接收的输出特征值C的定点格式为15.4,要将其处理为定点格式7.2的数据。首先,对输出特征值C进行移位操作,具体地,进行右移操作(相当于低位移出)。例如,输出单元330的配置值表示对输出特征值右移的位数,则输出单元在处理输出特征值C时使用的配置值为2。
经过右移两位(相当于移出2位低位)的操作后,输出特征值C变为16’b0000_0000_0111_1110。
然后对经过低位移出操作的输出特征值C进行四舍五入操作。因为输出特征值C为正数,且移出的数据为2’b10,大于两个比特位能够表示的最大值“2’b11”的一半,所以对经过低位移出操作的输出特征值C做加1操作,输出特征值C变为16’b0000_0000_0111_1111。
由于预设定点格式为7.2,则需要对输出特征值C进行高位截断操作,使其总位宽变为8,应理解,经过高位截断操作之后的输出特征值C变为8’b0111_1111。也就是说,输出单元330最终输出的输出特征值C的值为8’b0111_1111。
假设输入单元310获取的输入特征值A和输入特征值B为别的值,且使得计算单元320对输入特征值A与输入特征值B作了C=A+B的计算处理后,得到的输出特征值C的值为16’b0000_0011_1111_1010。假设预设定点格式还是7.2,则输出单元330对输出特征值C执行上述的移位操作和高位截断操作之后,输出特征值C变为8’b1111_1111,由于这个值超过了8位比特能够表示的整数最大值8’b0111_1111,因此,需要对输入特征值C做饱和处理,即将8位比特能够表示的整数最大值8’b0111_1111作为输出特征值C最终的值。
综上所述,本申请实施例通过神经网络加速装置对数据的定点格式进行调整,由于无需CPU来执行数据的定点格式的调整,在一定程度上减少了对DDR的占用,因此可以减少资源耗费。
应理解,本申请实施例提供的神经网络加速装置可以集成在芯片上。
上文描述了本申请的装置实施例,下文描述本申请的方法实施例。应理解,方法实施例与上述装置实施例相对应,装置实施例中的具体方案描述与技术效果描述也适用于下面的方法实施例。
图6为本申请实施例提供的用于神经网络的数据处理方法600的示意性流程图,该方法600由上文实施例中的神经网络加速装置300执行,该方法600包括如下步骤。
S610,接收输入特征值。
S620,对该输入特征值进行计算处理,获得输出特征值。
S630,在该输出特征值的定点格式与预设定点格式不同的情况下,按照该预设定点格式对该输出特征值进行低位移出和/或高位截断,获得目标输出特征值,该目标输出特征值的定点格式为该预设定点格式。
本申请实施例提供的方案,通过神经网络加速装置对数据的定点格式进行调整,由于无需CPU来执行数据的定点格式的调整,在一定程度上减少了对DDR的占用,因此可以减少资源耗费。
可选地,在一些实施例中,该获得目标输出特征值,包括:按照该预设定点格式,将该输出特征值的L1个低位移出,L1为正整数,该L1个低位表示的值大于或等于L1个比特表示的最大值的一半;对已经移出该L1个低位的输出特征值进行加1操作,获得该目标输出特征值。
可选地,在一些实施例中,该获得目标输出特征值,包括:按照该预设定点格式,将该输出特征值的L2个低位移出,L2为正整数,该L2个低位表示的值小于L2个比特表示的最大值的一半;将已经移出该L2个低位的输出特征值作为该目标输出特征值。
可选地,在一些实施例中,该输出特征值的值大于该预设定点格式表示的最大值;该获得目标输出特征值,还包括:将该预设定点格式表示的最大值作为该目标输出特征值。
可选地,在一些实施例中,该预设定点格式表示带符号位的定点数的有效位数据的位数为m1,该有效数据中小数的位数为n1;其中,该目标输出特征值大于m1+1位比特表示的最大值;该获得目标输出特征值,包括:将该m1+1位比特表示的正数最大值作为该目标输出特征值。
可选地,在一些实施例中,该输出特征值的值大于该预设定点格式表示的最小值;该获得目标输出特征值,还包括:将该预设定点格式表示的最小值作为该目标输出特征值。
可选地,在一些实施例中,该预设定点格式表示带符号位的定点数的有效位数据的位数为m2,该有效位数据中小数的位数为n2;其中,该目标输出特征值小于m2+1位比特表示的负数最小值;该获得目标输出特征值,包括:将该m2+1位比特表示的负数最小值作为该目标输出特征值。
可选地,在一些实施例中,该方法600还包括:对接收的该输入特征值进行位宽扩展操作;其中,该对该输入特征值进行计算处理,包括:对经过该位宽扩展操作之后的该输入特征值进行计算处理,获得该输出特征值。
可选地,在一些实施例中,该接收输入特征值,包括:接收至少两个输入特征值,该至少两个输入特征值的定点格式不同;该方法还包括:对该至少两个输入特征值进行位宽扩展操作;对经过该位宽扩展操作之后的该至少两个输入特征值进行移位操作,经过该移位操作后的该至少两个输入特征值的定点格式相同;其中,该对该输入特征值进行计算处理,包括:对经过该移位操作后的该至少两个输入特征值进行计算处理,获得该输出特征值。
可选地,在一些实施例中,该对该输入特征值进行计算处理,包括:对该输入特征值进行如下计算处理中的任一种:卷积计算,池化计算。
本申请实施例还提供一种计算机存储介质,其上存储有计算机程序,该计算机程序被计算机执行时,使得该计算机执行如上文方法实施例提供的方法。
本申请实施例还提供一种包含指令的计算机程序产品,该指令被计算机执行时使得该计算机执行如上文方法实施例提供的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (22)
1.一种神经网络加速装置,其特征在于,包括:
输入单元,用于获取输入特征值;
计算单元,用于对所述输入单元接收的所述输入特征值进行计算处理,获得输出特征值;
输出单元,用于在所述计算单元获得的所述输出特征值的定点格式与预设定点格式不同的情况下,按照所述预设定点格式对所述输出特征值进行低位移出和/或高位截断,获得目标输出特征值,所述目标输出特征值的定点格式为所述预设定点格式。
2.根据权利要求1所述的装置,其特征在于,所述输出单元用于:
按照所述预设定点格式,将所述输出特征值的L1个低位移出,L1为正整数,所述L1个低位表示的值大于L1个比特表示的最大值的一半;
对已经移出所述L1个低位的输出特征值进行加1操作,获得所述目标输出特征值。
3.根据权利要求1所述的装置,其特征在于,所述输出单元用于:
按照所述预设定点格式,将所述输出特征值的L2个低位移出,L2为正整数,所述L2个低位表示的值小于L2个比特表示的最大值的一半;
将已经移出所述L2个低位的输出特征值作为所述目标输出特征值。
4.根据权利要求2或3所述的装置,其特征在于,所述输出特征值的值大于所述预设定点格式表示的最大值;
所述输出单元还用于,将所述预设定点格式表示的最大值作为所述目标输出特征值。
5.根据权利要求4所述的装置,其特征在于,所述预设定点格式表示带符号位的定点数的有效位数据的位数为m1,所述有效数据中小数的位数为n1;
其中,所述目标输出特征值大于m1+1位比特表示的最大值;
所述输出单元用于,将所述m1+1位比特表示的正数最大值作为所述目标输出特征值。
6.根据权利要求2或3所述的装置,其特征在于,所述输出特征值的值大于所述预设定点格式表示的最小值;
所述输出单元还用于,将所述预设定点格式表示的最小值作为所述目标输出特征值。
7.根据权利要求6所述的装置,其特征在于,所述预设定点格式表示带符号位的定点数的有效位数据的位数为m2,所述有效位数据中小数的位数为n2;
其中,所述目标输出特征值小于m2+1位比特表示的负数最小值;
所述输出单元用于,将所述m2+1位比特表示的负数最小值作为所述目标输出特征值。
8.根据权利要求1至7中任一项所述的装置,其特征在于,所述输入单元还用于,对所述输入特征值进行位宽扩展操作;
其中,所述计算单元用于,对经过所述位宽扩展操作之后的所述输入特征值进行计算处理,获得所述输出特征值。
9.根据权利要求1至7中任一项所述的装置,其特征在于,所述输入单元用于获取至少两个输入特征值,所述至少两个输入特征值的定点格式不同;
所述输入单元用于,对所述至少两个输入特征值进行位宽扩展操作;对经过所述位宽扩展操作之后的所述至少两个输入特征值进行移位操作,经过所述移位操作后的所述至少两个输入特征值的定点格式相同;
其中,所述计算单元用于,对经过所述移位操作后的所述至少两个输入特征值进行计算处理,获得所述输出特征值。
10.根据权利要求1至9中任一项所述的装置,其特征在于,所述计算单元用于,对所述输入特征值进行如下计算处理中的任一种:卷积计算,池化计算。
11.一种用于神经网络的数据处理方法,其特征在于,所述方法由神经网络加速装置执行,所述方法包括:
接收输入特征值;
对所述输入特征值进行计算处理,获得输出特征值;
在所述输出特征值的定点格式与预设定点格式不同的情况下,按照所述预设定点格式对所述输出特征值进行低位移出和/或高位截断,获得目标输出特征值,所述目标输出特征值的定点格式为所述预设定点格式。
12.根据权利要求11所述的方法,其特征在于,所述获得目标输出特征值,包括:
按照所述预设定点格式,将所述输出特征值的L1个低位移出,L1为正整数,所述L1个低位表示的值大于L1个比特表示的最大值的一半;
对已经移出所述L1个低位的输出特征值进行加1操作,获得所述目标输出特征值。
13.根据权利要求11所述的方法,其特征在于,所述获得目标输出特征值,包括:
按照所述预设定点格式,将所述输出特征值的L2个低位移出,L2为正整数,所述L2个低位表示的值小于L2个比特表示的最大值的一半;
将已经移出所述L2个低位的输出特征值作为所述目标输出特征值。
14.根据权利要求12或13所述的方法,其特征在于,所述输出特征值的值大于所述预设定点格式表示的最大值;
所述获得目标输出特征值,还包括:将所述预设定点格式表示的最大值作为所述目标输出特征值。
15.根据权利要求14所述的方法,其特征在于,所述预设定点格式表示带符号位的定点数的有效位数据的位数为m1,所述有效数据中小数的位数为n1;
其中,所述目标输出特征值大于m1+1位比特表示的最大值;
所述获得目标输出特征值,包括:将所述m1+1位比特表示的正数最大值作为所述目标输出特征值。
16.根据权利要求12或13所述的方法,其特征在于,所述输出特征值的值大于所述预设定点格式表示的最小值;
所述获得目标输出特征值,还包括:将所述预设定点格式表示的最小值作为所述目标输出特征值。
17.根据权利要求16所述的方法,其特征在于,所述预设定点格式表示带符号位的定点数的有效位数据的位数为m2,所述有效位数据中小数的位数为n2;
其中,所述目标输出特征值小于m2+1位比特表示的负数最小值;
所述获得目标输出特征值,包括:将所述m2+1位比特表示的负数最小值作为所述目标输出特征值。
18.根据权利要求11至17中任一项所述的方法,其特征在于,所述方法还包括:
对接收的所述输入特征值进行位宽扩展操作;
其中,所述对所述输入特征值进行计算处理,包括:
对经过所述位宽扩展操作之后的所述输入特征值进行计算处理,获得所述输出特征值。
19.根据权利要求11至17中任一项所述的方法,其特征在于,所述接收输入特征值,包括:
接收至少两个输入特征值,所述至少两个输入特征值的定点格式不同;
所述方法还包括:
对所述至少两个输入特征值进行位宽扩展操作;
对经过所述位宽扩展操作之后的所述至少两个输入特征值进行移位操作,经过所述移位操作后的所述至少两个输入特征值的定点格式相同;
其中,所述对所述输入特征值进行计算处理,包括:对经过所述移位操作后的所述至少两个输入特征值进行计算处理,获得所述输出特征值。
20.根据权利要求11至19中任一项所述的方法,其特征在于,所述对所述输入特征值进行计算处理,包括:对所述输入特征值进行如下计算处理中的任一种:卷积计算,池化计算。
21.一种计算机存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被计算机执行时,使得所述计算机执行如权利要求11至20中任一项所述的方法。
22.一种包含指令的计算机程序产品,其特征在于,所述指令被计算机执行时使得计算机执行如权利要求11至20中任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2018/084704 WO2019205064A1 (zh) | 2018-04-26 | 2018-04-26 | 神经网络加速装置与方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110337658A true CN110337658A (zh) | 2019-10-15 |
Family
ID=68139439
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880011107.2A Pending CN110337658A (zh) | 2018-04-26 | 2018-04-26 | 神经网络加速装置与方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20210044303A1 (zh) |
CN (1) | CN110337658A (zh) |
WO (1) | WO2019205064A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115222015A (zh) | 2021-04-21 | 2022-10-21 | 阿里巴巴新加坡控股有限公司 | 指令处理装置、加速单元和服务器 |
US20220405596A1 (en) * | 2021-06-16 | 2022-12-22 | International Business Machines Corporation | Transfer learning with basis scaling and pruning |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095966A (zh) * | 2015-07-16 | 2015-11-25 | 清华大学 | 人工神经网络和脉冲神经网络的混合计算系统 |
CN106203621A (zh) * | 2016-07-11 | 2016-12-07 | 姚颂 | 用于卷积神经网络计算的处理器 |
US20170102921A1 (en) * | 2015-10-08 | 2017-04-13 | Via Alliance Semiconductor Co., Ltd. | Apparatus employing user-specified binary point fixed point arithmetic |
CN107291419A (zh) * | 2017-05-05 | 2017-10-24 | 中国科学院计算技术研究所 | 用于神经网络处理器的浮点乘法器及浮点数乘法 |
CN107330515A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行人工神经网络正向运算的装置和方法 |
-
2018
- 2018-04-26 WO PCT/CN2018/084704 patent/WO2019205064A1/zh active Application Filing
- 2018-04-26 CN CN201880011107.2A patent/CN110337658A/zh active Pending
-
2020
- 2020-10-26 US US17/080,138 patent/US20210044303A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095966A (zh) * | 2015-07-16 | 2015-11-25 | 清华大学 | 人工神经网络和脉冲神经网络的混合计算系统 |
US20170102921A1 (en) * | 2015-10-08 | 2017-04-13 | Via Alliance Semiconductor Co., Ltd. | Apparatus employing user-specified binary point fixed point arithmetic |
CN107330515A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行人工神经网络正向运算的装置和方法 |
CN106203621A (zh) * | 2016-07-11 | 2016-12-07 | 姚颂 | 用于卷积神经网络计算的处理器 |
CN107291419A (zh) * | 2017-05-05 | 2017-10-24 | 中国科学院计算技术研究所 | 用于神经网络处理器的浮点乘法器及浮点数乘法 |
Also Published As
Publication number | Publication date |
---|---|
US20210044303A1 (en) | 2021-02-11 |
WO2019205064A1 (zh) | 2019-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109063825B (zh) | 卷积神经网络加速装置 | |
CN109062610A (zh) | 神经网络处理装置及其执行吉文斯旋转指令的方法 | |
CN104112053B (zh) | 一种面向图像处理的可重构架构平台设计方法 | |
CN109478144A (zh) | 一种数据处理装置和方法 | |
CN110046700A (zh) | 深度神经网络的卷积层的硬件实现 | |
CN105139282B (zh) | 一种电网指标数据处理方法、装置以及计算设备 | |
CN110337658A (zh) | 神经网络加速装置与方法 | |
CN110163356A (zh) | 一种计算装置及方法 | |
CN110990121B (zh) | 一种基于应用画像的Kubernetes调度策略 | |
CN110109646A (zh) | 数据处理方法、装置和乘加器及存储介质 | |
CN108055041A (zh) | 一种数据类型转换电路单元及装置 | |
CN110515587A (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN109583579A (zh) | 计算装置及相关产品 | |
CN109389218A (zh) | 数据压缩方法及压缩装置 | |
CN107220025A (zh) | 处理乘加运算的装置和处理乘加运算的方法 | |
CN111767188B (zh) | 一种训练任务监控方法及装置 | |
CN101136657B (zh) | 传输格式组合指示译码装置和方法 | |
CN109582279B (zh) | 数据运算装置及相关产品 | |
CN104683806B (zh) | 基于深度流水的mq算术编码器高速fpga实现方法 | |
CN109558109B (zh) | 数据运算装置及相关产品 | |
CN109582277A (zh) | 数据处理方法、装置及相关产品 | |
CN112631548B (zh) | 基于混合粒度乘法部件的多精度乘法器及运算方法 | |
Fang | Dynamics of strongly dissipative systems | |
CN105335784B (zh) | 一种基于遗传算法的选择最优dsp系统软防护的方法 | |
CN111260046A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20191015 |