CN108229648B - 匹配存储器中数据位宽的卷积计算方法和装置、设备、介质 - Google Patents
匹配存储器中数据位宽的卷积计算方法和装置、设备、介质 Download PDFInfo
- Publication number
- CN108229648B CN108229648B CN201710775655.XA CN201710775655A CN108229648B CN 108229648 B CN108229648 B CN 108229648B CN 201710775655 A CN201710775655 A CN 201710775655A CN 108229648 B CN108229648 B CN 108229648B
- Authority
- CN
- China
- Prior art keywords
- data
- bit width
- convolution
- convolutional layer
- calculation
- 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
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Complex Calculations (AREA)
Abstract
本发明实施例公开了一种匹配存储器中数据位宽的卷积计算方法和装置、设备、介质,其中,方法包括:根据卷积神经网络的算法模型,为卷积神经网络配置卷积计算配置信息;卷积神经网络包括至少一个卷积层;卷积计算配置信息包括至少一个卷积层中的各卷积层对应的数据位宽值;按照卷积计算配置信息从存储器读取待处理数据,待处理数据的位宽等于数据位宽值;通过卷积神经网络对待处理数据进行卷积计算,得到计算结果数据。本发明实施例提供的方法,通过读取设定位宽的输入数据使输入到卷积层中的数据的位宽符合该卷积层要求的位宽,使卷积层的运算速度得到加快;并且在保证计算结果精度的同时提升了计算效率。
Description
技术领域
本发明涉及深度学习技术,尤其是一种匹配存储器中数据位宽的卷积计算方法和装置、设备、介质。
背景技术
卷积神经网络(CNN)由于具有结构简单、适应性强和鲁棒性高等优点,因此得到了广泛的应用,近年卷积神经网络广泛应用于图像处理、模式识别等领域。卷积计算由于需要进行大量的矩阵乘法运算,因此是卷积神经网络中耗时最长的运算。在传统的图像处理硬件平台上,一般使用专用的浮点运算单元(FPU)处理卷积运算。
发明内容
本发明实施例提供了一种卷积计算技术。
本发明实施例提供的一种卷积计算方法,包括:
根据卷积神经网络的算法模型,为所述卷积神经网络配置卷积计算配置信息;所述卷积神经网络包括至少一个卷积层;所述卷积计算配置信息包括所述至少一个卷积层中的各卷积层对应的数据位宽值;
按照所述卷积计算配置信息从存储器读取待处理数据,所述待处理数据的位宽等于所述数据位宽值;
通过所述卷积神经网络对所述待处理数据进行卷积计算,得到计算结果数据。
根据本发明实施例的另一个方面,提供的一种卷积计算装置,包括:
动态配置单元,用于根据卷积神经网络的算法模型,为所述卷积神经网络配置卷积计算配置信息;所述卷积神经网络包括至少一个卷积层;所述卷积计算配置信息包括所述至少一个卷积层中的各卷积层对应的数据位宽;
可配置读取控制器,用于按照所述卷积计算配置信息从存储器读取待处理数据;所述待处理数据的位宽等于所述数据位宽值;
卷积计算单元,用于通过所述卷积神经网络对所述待处理数据进行卷积计算,得到计算结果数据。
根据本发明实施例的另一个方面,提供的一种电子设备,其特征在于,设置有如上所述的卷积计算装置。
根据本发明实施例的另一个方面,提供的一种电子设备,其特征在于,包括:存储器,用于存储可执行指令;
以及处理器,用于与所述存储器通信以执行所述可执行指令从而完成如上所述卷积计算方法的操作。
根据本发明实施例的另一个方面,提供的一种计算机存储介质,用于存储计算机可读取的指令,其特征在于,所述指令被执行时执行如上所述卷积计算方法的操作。
基于本发明上述实施例提供的一种卷积计算方法和装置、电子设备、计算机存储介质,根据卷积神经网络的算法模型,为卷积神经网络配置卷积计算配置信息;卷积神经网络包括至少一个卷积层;卷积计算配置信息包括至少一个卷积层中的各卷积层对应的数据位宽;按照卷积计算配置信息从存储器读取待处理数据,待处理数据的位宽等于数据位宽值;通过灵活调整输入卷积层的输入数据位宽,平衡了卷积层的计算效率和数据传输带宽;通过卷积神经网络对待处理数据进行卷积计算,得到计算结果数据。本发明实施例通过读取设定位宽的待处理数据使输入到卷积层中的数据的位宽符合该卷积层要求的位宽,实现了对输入卷积层的数据的动态配置,各卷积层无需对输入的数据进行处理即可执行计算,解决了定点运算计算精度低及影响计算结果准确度的问题,提高了卷积神经网络的运算精度。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
构成说明书的一部分的附图描述了本发明的实施例,并且连同描述一起用于解释本发明的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本发明,其中:
图1为浮点数数据格式示意图。
图2为定点数数据格式示意图。
图3本发明卷积计算方法一个实施例的流程图。
图4为本发明卷积计算装置一个实施例的结构示意图。
图5为本发明卷积计算装置上述各实施例的一个具体示例的结构示意图。
图6为本发明一个实施例的电子设备的结构示意图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本发明实施例可以应用于计算机系统/服务器,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与计算机系统/服务器一起使用的众所周知的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
计算机系统/服务器可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
卷积计算现有的技术实现方式,通常有以下几种:
A.基于浮点数的运算实现。浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学计数法。浮点运算是以浮点数表示的数值运算。对浮点数而言,浮点数的数值表示范围和精度是由浮点数的位数决定的。浮点数数据格式一般包括符号位,指数位,尾数位。浮点数数据格式如图1所示。
B.基于定点数的运算实现,定点数是计算机中采用的一种数的表示方法,参与运算的数的小数点位置固定不变。定点运算是操作数以整型数表示的数值运算。对定点数而言,数值范围与精度是一个权衡,一个变量能够表示比较大的数值范围,必须以牺牲精度为代价。定点数数据格式一般包括符号位和数据位。定点数数据格式如图2所示。
但是,浮点运算存在资源使用多,计算效率低,功耗大的缺点。
而定点运算则存在计算精度低,影响最终计算结果的准确度的问题。
因此,提出在可编程硬件平台上,通过配置不同的逻辑资源,可以实现浮点或者定点的专用运算电路;而在一般情况下,定点运算电路因为消耗硬件资源少,功耗低的优点,可编程硬件平台通常基于定点运算进行设计。
图3为本发明卷积计算方法一个实施例的流程图。如图3所示,该实施例方法包括:
步骤301,根据卷积神经网络的算法模型,为卷积神经网络配置卷积计算配置信息。
其中,卷积神经网络包括至少一个卷积层;卷积计算配置信息包括至少一个卷积层中的各卷积层对应的数据位宽。卷积神经网络的算法模型是由具体应用决定的,即对不同任务所采用的算法模型不同,有些应用需要准确度高,则设置输入数据位宽较大,而有些应用要求速度快,则设置输入数据的位宽较小;卷积神经网络中的参数主要包括filter滤波数据和bias偏置数据,这些数据为卷积层计算服务,而卷积核的大小决定了权值数据占用的位宽,权值数据即对应卷积核中的数据,即filter滤波数据,通过设置的适应当前应用的权值数据与输入数据进行卷积计算,能得到更准确的计算结果数据。
步骤302,按照卷积计算配置信息从存储器读取待处理数据。
其中,待处理数据的位宽等于数据位宽值。
步骤303,通过卷积神经网络对待处理数据进行卷积计算,得到计算结果数据。
基于本发明上述实施例提供的一种卷积计算方法,根据卷积神经网络的算法模型,为卷积神经网络配置卷积计算配置信息;卷积神经网络包括至少一个卷积层;卷积计算配置信息包括至少一个卷积层中的各卷积层对应的数据位宽;按照卷积计算配置信息从存储器读取待处理数据,待处理数据的位宽等于数据位宽值。通过灵活调整输入卷积层的输入数据位宽,平衡了卷积层的计算效率和数据传输带宽;通过卷积神经网络对待处理数据进行卷积计算,得到计算结果数据。本发明实施例通过读取设定位宽的待处理数据使输入到卷积层中的数据的位宽符合该卷积层要求的位宽,实现了对输入卷积层的数据的动态配置,各卷积层无需对输入的数据进行处理即可执行计算,解决了定点运算计算精度低及影响计算结果准确度的问题,提高了卷积神经网络的运算精度。
本发明卷积计算方法的另一个实施例中,在上述实施例的基础上,数据位宽值包括输入数据位宽值及权值数据位宽值,待处理数据包括输入数据及权值数据。
其中,输入数据的位宽等于输入数据位宽值,权值数据的位宽等于权值数据位宽值。通过对卷积层的输入数据位宽和权值数据位宽进行配置,在读取输入数据和权值数据时,分别按照设置的输入数据位宽和权值数据位宽进行读取,可通过多次读取将完整的输入数据输入到卷积层中,由于每次读取的数据位宽都与该卷积层相对应,因此提高了卷积层的计算效率,同时保证了输入数据的完整,不会因为输入数据位宽的设置使输入数据缺失而导致结果不准确。
在本发明卷积计算方法上述各实施例的一个具体示例中,卷积计算配置信息还包括至少一个卷积层中的各卷积层对应的卷积核大小、或待处理数据的存储地址。
其中,待处理数据的存储地址用于按照存储地址在存储器中读取待处理数据。
本实施例提供的方法,首先获取待加速卷积神经网络对应当前应用的算法模型,根据算法模型确定对应卷积层的卷积核大小、输入数据位宽、权值位宽和权值数据,卷积核的大小可以设置为1*1、3*3或5*5等,根据设置的输入数据位宽和权值位宽读取输入数据和权值数据,使卷积层对每次读取的输入数据都能一次处理,提高了数据处理效率。
在本发明卷积计算方法上述各实施例的一个具体示例中,操作303包括:
通过当前卷积层对待处理数据进行卷积计算,得到结果数据;当前卷积层为至少一个卷积层中各卷积层中的一个卷积层;
响应于存在下一个卷积层,以下一个卷积层作为当前卷积层,迭代执行根据为至少一个卷积层中当前卷积层配置的卷积计算配置信息从存储器读取待处理数据;通过当前卷积层对待处理数据进行卷积计算,得到结果数据,直到不存在下一个卷积层;
输出结果数据作为计算结果数据。
本实施例为了实现对卷积神经网络中每一个卷积层都进行加速,通过迭代的方法,将下一层卷积层作为当前卷积层,将上一个卷积层计算得到的计算结果数据作为下一个卷积层的输入数据,同样通过按照设置的输入数据位宽和权值位宽读取输入数据和权值数据,此时的权值数据是配置的对应该卷积层的权值数据,得到结果数据后,将结果数据存入存储器,以备下一个卷积层读取,直到完成当前卷积层的卷积计算之后,没有下一个卷积层,此时输出当前得到的结果数据为卷积神经网络的输出数据。
在本发明卷积计算方法上述各实施例的一个具体示例中,在迭代读取配置信息并执行卷积计算的过程中,将结果数据写入存储器。
将对应每层卷积层的结果数据存入存储器,使下一个卷积层在读取输入数据和权值数据时,可以直接从存储器中获取,方便数据的获取和数据位宽的设置。
在本发明卷积计算方法上述各实施例的一个具体示例中,卷积计算配置信息还包括偏移地址;
本实施例中偏移地址指两个相邻保存的输入数据首位之间的差值,偏移地址的大小由前一个存储的输入数据的位宽决定,为了保证存储的输入数据是完整的,该偏移地址必须大于或等于该输入数据的位宽。
为卷积神经网络配置卷积计算配置信息,还包括:
根据输入数据的存储地址和偏移地址配置为下一个卷积层对应的输入数据的存储地址;
将结果数据写入存储器,包括:将结果数据写入存储器中的下一个卷积层对应的输入数据的存储地址。
通过输入数据的存储地址叠加偏移地址即可得到下一个卷积层对应的输入数据的存储地址,由于卷积神经网络中,上一个卷积层的输出数据就是下一个卷积层的输入数据,因此,将上一个卷积层的输出数据处理为下一个卷积层的输入数据并存储到确定的下一个卷积层对应的输入数据的存储地址中,在下一个卷积层开始卷积计算时,只需到对应的存储地址进行读取即可。
在本发明卷积计算方法上述各实施例的一个具体示例中,在将结果数据写入存储器之前,还包括:
将结果数据的位宽与配置的下一个卷积层对应的输入数据位宽值进行比较,根据比较结果对结果数据执行截断或补位处理,使处理后的结果数据的位宽等于下一个卷积层对应的输入数据位宽值。
由于卷积神经网络中上一个卷积层的输出数据等于下一个卷积的输入数据,因此,本申请在保存计算结果数据之前,直接将输出的结果数据的位宽处理为对应下一个卷积层的输入数据位宽,并将转换位宽后的数据存入对应下一个卷积层的输入数据的存储地址中,以便于下一个卷积层在输入数据是进行读取,方便读取的同时无需进行额外的处理,该输入数据的位宽直接与设定的输入数据位宽相同,能够提高该下一个卷积层的计算效率。
在本发明卷积计算方法上述各实施例的一个具体示例中,根据比较结果对结果数据执行截断或补位处理,包括:
当结果数据的位宽大于下一个卷积层对应的输入数据位宽值,在结果数据中选择保留对应下一个卷积层对应的输入数据位宽值的数据,其他数据丢弃。
当结果数据的位宽小于下一个卷积层对应的输入数据位宽值,在结果数据的高位数据位中补零。
在本实施例中,输入数据的位宽调整包括两种情况,将输入数据的位宽与配置的输入数据位宽进行比较,比较存在两种结果,一种是输入数据的位宽大于配置的输入数据位宽,此时,将输入数据按照预设的输入数据位宽进行截断,以牺牲一定的数据精度为代价提高卷积层的计算效率;另一种是输入数据的位宽小于配置的输入数据位宽,此时,将输入数据的数据位中高位进行补零,在不改变输入数据大小的情况下使输入数据的位宽符合卷积层的要求,提高卷积层的计算效率。
在本发明卷积计算方法还一个实施例中,在上述各实施例的基础上,按照所述卷积计算配置信息从存储器读取权值数据之前,还包括:
将权值数据的初始位宽与权值数据位宽值进行比较,根据比较结果对权值数据进行截断或补位处理,使处理后的权值数据的位宽等于权值数据位宽值。
对于设置的权值数据,可以采用按照设置的权值位宽读取的方式进行读取,也可以先按照设置的权值位宽将权值数据进行转换,对于数据位宽的转换可以包括截断和补位两种,通过截断或补位将权值数据的位宽转换为与当前卷积层相符合的权值位宽,以提高卷积层计算效率,通过截断的位宽会导致权值数据在数值上有一定变化,此处是为了提高计算效率,牺牲了一些数据精度。
在本发明卷积计算方法上述各实施例的一个具体示例中,根据比较结果对权值数据进行截断或补位处理,包括:
当权值数据的初始位宽大于权值数据位宽值,在权值数据中选择保留对应权值数据位宽值的数据,其他数据丢弃。
当权值数据的初始位宽小于权值数据位宽值,在权值数据的高位数据位中补零。
本实施例中针对截断改变权值位宽进行详细描述,当需要将位宽大的数据转换为位宽小的数据时,需要放弃一部分的数据,而此时丢弃哪些数据是由待加速卷积神经网络对应的算法模型决定的,即在截断数据时,保留哪些数据位的数据是根据配置对应每个卷积层的,可以是从高位数据位获取相应位宽的数据、可以是从低位数据位获取相应位宽的数据,还可以从中间某些设定位置获得相应位宽的数据,具体获取数据的位置根据算法模型决定,但需要注意的时,截断时,不对符号位进行操作,符号位是必须保留的,上述截断只针对数据位。
在本发明卷积计算方法上述各实施例的一个具体示例中,操作301包括:
通过外部处理器为至少一个卷积层中各卷积层分别配置的卷积计算配置信息。
本实施例中,通过外部处理器对卷积神经网络中的各卷积层进行配置,使配置过程独立,实现了在计算之前一次配置完成整个卷积神经网络的配置,而配置完成的卷积神经网络,在计算过程中只需调用存储器中配置好的数据即可,实现了快速卷积计算。
在本发明卷积计算方法上述各实施例的一个具体示例中,输入数据为定点数据。
本实施例中指出输入数据为定点数据,针对现有技术中提出的定点数据计算精度低的问题,本发明方法通过设置输入数据位宽和权值数据位宽,在提高卷积层计算效率的同时,由于对计算精度的影响仅在于对位宽较大的数据进行截断,而截断的位数是根据算法模型决定的,因此,获取的位宽较小的定点数据其精度与现有技术中的定点数据相比,提高了计算精度。
在本发明卷积计算方法上述各实施例的一个具体示例中,具体卷积计算过程如下:
获取待加速卷积神经网络的算法模型中首层卷积层对应的输入数据位宽,通过配置模块配置首层卷积层的输入数据位宽为8位位宽;将卷积运算的8位位宽的定点输入数据图像数值和权值存储在存储器中。
对配置模块进行配置,包括卷积运算输入数据的存储地址,偏移地址,卷积输入数据的大小,卷积核的大小,输入输出数据位宽大小。
通过配置模块从存储器中读取卷积运算的输入8位位宽数据和8位位宽的权值,可配置卷积计算单元(卷积层)进行定点8位的卷积运算,并将16位位宽输出写入存储器,做为下一个卷积层卷积计算的输入数据。
通过配置模块重复多次启动,通过启动配置模块对存储器执行读取和写入操作;从存储器中读取卷积运算的输入16位位宽数据和16位位宽的权值,并将16位位宽输出数据写入存储器的预设地址中;此时保存的输出数据作为下一层的输入数据,该数据位宽可以是16位位宽,也可以说是8位位宽,因为数据在内部运算后,数据位宽也逐步累加,例如累加到了32位的输出数据,在输出时可以选择截断的方式输出8位位宽或16位位宽的输出数据。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图4为本发明卷积计算装置一个实施例的结构示意图。该实施例的装置可用于实现本发明上述各方法实施例。如图4所示,该实施例的装置包括:
动态配置单元41,用于根据卷积神经网络的算法模型,为卷积神经网络配置计算配置信息。
其中,卷积神经网络包括至少一个卷积层;卷积计算配置信息包括至少一个卷积层中的各卷积层对应的数据位宽。
可配置读取控制器42,用于按照卷积计算配置信息从存储器读取待处理数据。
待处理数据的位宽等于数据位宽值。
卷积计算单元43,用于通过卷积神经网络对待处理数据进行卷积计算,得到计算结果数据。
基于本发明上述实施例提供的一种卷积计算装置,根据卷积神经网络的算法模型,为卷积神经网络配置卷积计算配置信息;卷积神经网络包括至少一个卷积层;卷积计算配置信息包括至少一个卷积层各卷积层中的各卷积层对应的数据位宽;按照卷积计算配置信息从存储器读取待处理数据,待处理数据的位宽等于数据位宽值。通过灵活调整输入卷积层的输入数据位宽,平衡了卷积层的计算效率和数据传输带宽;通过卷积神经网络对待处理数据进行卷积计算,得到计算结果数据。本发明实施例通过读取设定位宽的待处理数据使输入到卷积层中的数据的位宽符合该卷积层要求的位宽,实现了对输入卷积层的数据的动态配置,各卷积层无需对输入的数据进行处理即可执行计算,解决了定点运算计算精度低及影响计算结果准确度的问题,提高了卷积神经网络的运算精度。
本发明卷积计算装置的另一个实施例中,在上述实施例的基础上,
数据位宽值包括输入数据位宽值及权值数据位宽值,待处理数据包括输入数据及权值数据。
其中,输入数据的位宽等于输入数据位宽值,权值数据的位宽等于权值数据位宽值。通过对卷积层的输入数据位宽和权值数据位宽进行配置,在读取输入数据和权值数据时,分别按照设置的输入数据位宽和权值数据位宽进行读取,可通过多次读取将完整的输入数据输入到卷积层中,由于每次读取的数据位宽都与该卷积层相对应,因此提高了卷积层的计算效率,同时保证了输入数据的完整,不会因为输入数据位宽的设置使输入数据缺失而导致结果不准确。
在本发明卷积计算装置上述各实施例的一个具体示例中,卷积计算配置信息还包括至少一个卷积层中的各卷积层对应的卷积核大小、或待处理数据的存储地址。
其中,待处理数据的存储地址用于按照存储地址在存储器中读取待处理数据。
在本发明卷积计算装置上述各实施例的一个具体示例中,卷积计算单元43,包括:
层计算模块,用于通过当前卷积层对待处理数据进行卷积计算,得到结果数据;当前卷积层为所述至少一个卷积层中各卷积层中的一个卷积层;
迭代模块,用于响应于存在下一个卷积层,以下一个卷积层作为当前卷积层,迭代执行根据为至少一个卷积层中当前卷积层配置的卷积计算配置信息从存储器读取待处理数据;通过当前卷积层对待处理数据进行卷积计算,得到结果数据,直到不存在下一个卷积层;输出结果数据作为计算结果数据。
本实施例为了实现对卷积神经网络中每一个卷积层都进行加速,通过迭代的方法,将下一层卷积层作为当前卷积层,将上一个卷积层计算得到的计算结果数据作为下一个卷积层的输入数据,同样通过按照设置的输入数据位宽和权值位宽读取输入数据和权值数据,此时的权值数据是配置的对应该卷积层的权值数据,得到计算结果数据后,将就是那结果数据存入存储器,以备下一个卷积层读取,直到完成当前卷积层的卷积计算之后,没有下一个卷积层,此时输出当前得到的计算结果数据为卷积神经网络的输出数据。
在本发明卷积计算装置上述各实施例的一个具体示例中,还包括:
可配置写回控制器,用于将结果数据写入存储器。
通过可配置写回控制器将对应每层卷积层的结果数据存入存储器,使下一个卷积层在读取输入数据和权值数据时,可以直接从存储器中获取,方便数据的获取和数据位宽的设置。
在本发明卷积计算装置上述各实施例的一个具体示例中,卷积计算配置信息还包括偏移地址;
动态配置单元,还用于根据输入数据的存储地址和偏移地址配置为下一个卷积层对应的输入数据的存储地址;
可配置写回控制器,具体用于将结果数据写入存储器中的下一个卷积层对应的输入数据的存储地址。
在本发明卷积计算装置上述各实施例的一个具体示例中,还包括:
结果处理单元,用于将结果数据的位宽与配置的下一个卷积层对应的输入数据位宽值进行比较,根据比较结果对结果数据执行截断或补位处理,使处理后的结果数据的位宽等于下一个卷积层对应的输入数据位宽值。
在本发明卷积计算装置上述各实施例的一个具体示例中,结果处理单元,包括:
数据截断模块,用于当结果数据的位宽大于下一个卷积层对应的输入数据位宽值,在计算结果数据中选择保留对应下一个卷积层对应的输入数据位宽值的数据,其他数据丢弃;
数据补位模块,用于当结果数据位宽小于下一个卷积层对应的输入数据位宽值,在计算结果数据的高位数据位中补零。
在本发明卷积计算装置还一个实施例中,在上述各实施例的基础上,还包括:
权值转换单元,用于将权值数据的初始位宽与权值数据位宽值进行比较,根据比较结果对权值数据进行截断或补位处理,使处理后的权值数据的位宽等于权值数据位宽值。
对于设置的权值数据,可以采用按照设置的权值位宽读取的方式进行读取,也可以先按照设置的权值位宽将权值数据进行转换,对于数据位宽的转换可以包括截断和补位两种,通过截断或补位将权值数据的位宽转换为与当前卷积层相符合的权值位宽,以提高卷积层计算效率,通过截断的位宽会导致权值数据在数值上有一定变化,此处是为了提高计算效率,牺牲了一些数据精度。
在本发明卷积计算装置上述各实施例的一个具体示例中,权值转换单元,包括:
权值截断模块,用于当权值数据的初始位宽大于权值数据位宽值,在权值数据中选择保留对应权值数据位宽值的数据,其他数据丢弃;
权值补位模块,用于当权值数据的初始位宽小于权值数据位宽值,在权值数据的高位数据位中补零。
在本发明卷积计算装置上述各实施例的一个具体示例中,动态配置单元,具体用于根据外部处理器的控制为至少一个卷积层中各卷积层分别配置的卷积计算配置信息。
在本发明卷积计算装置上述各实施例的一个具体示例中,输入数据为定点数据。
图5为在本发明卷积计算装置上述各实施例的一个具体示例的结构示意图。如图5所示,具体结构包括:
处理器控制配置模块(相当于本发明动态配置单元41),根据卷积神经网络的算法模型,为卷积神经网络中各卷积层分别配置卷积计算配置信息;
通过可配置读取控制器42从存储器中读取配置模块配置好的卷积计算配置信息输入到可配置卷积计算单元(相当于本发明卷积计算单元43);
可配置卷积计算单元根据可配置读取控制器42输入的动态配置位宽的输入数据和权值数据进行卷积计算,得到结果数据;并将结果数据输入到可配置写回控制器;
可配置写回控制器将结果数据经过存储器控制器写入存储器;其中,存储器控制器用来控制片外存储器的读写控制逻辑和时序。
根据本发明实施例的另一个方面,提供的一种电子设备,设置有如上述任意一项实施例的卷积计算装置。
根据本发明实施例的另一个方面,提供的一种电子设备,其特征在于,包括:存储器,用于存储可执行指令;
以及处理器,用于与所述存储器通信以执行所述可执行指令从而完成上述任意一项实施例的卷积计算方法的操作。
根据本发明实施例的另一个方面,提供的一种计算机存储介质,用于存储计算机可读取的指令,其特征在于,所述指令被执行时执行上述任意一项实施例卷积计算方法的操作。
本发明实施例还提供了一种电子设备,例如可以是移动终端、个人计算机(PC)、平板电脑、服务器等。下面参考图6,其示出了适于用来实现本申请实施例的终端设备或服务器的电子设备600的结构示意图:如图6所示,计算机系统600包括一个或多个处理器、通信部等,所述一个或多个处理器例如:一个或多个中央处理单元(CPU)601,和/或一个或多个图像处理器(GPU)613等,处理器可以根据存储在只读存储器(ROM)602中的可执行指令或者从存储部分608加载到随机访问存储器(RAM)603中的可执行指令而执行各种适当的动作和处理。通信部612可包括但不限于网卡,所述网卡可包括但不限于IB(Infiniband)网卡,
处理器可与只读存储器602和/或随机访问存储器630中通信以执行可执行指令,通过总线604与通信部612相连、并经通信部612与其他目标设备通信,从而完成本申请实施例提供的任一项方法对应的操作,例如,根据卷积神经网络的算法模型,为卷积神经网络配置卷积计算配置信息;卷积神经网络包括至少一个卷积层;卷积计算配置信息包括至少一个卷积层中的各卷积层对应的数据位宽值;按照卷积计算配置信息从存储器读取待处理数据,待处理数据的位宽等于数据位宽值;通过卷积神经网络对待处理数据进行卷积计算,得到计算结果数据。
此外,在RAM 603中,还可存储有装置操作所需的各种程序和数据。CPU601、ROM602以及RAM603通过总线604彼此相连。在有RAM603的情况下,ROM602为可选模块。RAM603存储可执行指令,或在运行时向ROM602中写入可执行指令,可执行指令使处理器601执行上述通信方法对应的操作。输入/输出(I/O)接口605也连接至总线604。通信部612可以集成设置,也可以设置为具有多个子模块(例如多个IB网卡),并在总线链接上。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
需要说明的,如图6所示的架构仅为一种可选实现方式,在具体实践过程中,可根据实际需要对上述图6的部件数量和类型进行选择、删减、增加或替换;在不同功能部件设置上,也可采用分离设置或集成设置等实现方式,例如GPU和CPU可分离设置或者可将GPU集成在CPU上,通信部可分离设置,也可集成设置在CPU或GPU上,等等。这些可替换的实施方式均落入本发明公开的保护范围。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,计算机程序包含用于执行流程图所示的方法的程序代码,程序代码可包括对应执行本申请实施例提供的方法步骤对应的指令,例如,根据卷积神经网络的算法模型,为卷积神经网络配置卷积计算配置信息;卷积神经网络包括至少一个卷积层;卷积计算配置信息包括至少一个卷积层中的各卷积层对应的数据位宽值;按照卷积计算配置信息从存储器读取待处理数据,待处理数据的位宽等于数据位宽值;通过卷积神经网络对待处理数据进行卷积计算,得到计算结果数据。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本申请的方法中限定的上述功能。
可能以许多方式来实现本发明的方法和装置、设备。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和装置、设备。用于方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
Claims (23)
1.一种匹配存储器中数据位宽的卷积计算方法,其特征在于,包括:
根据卷积神经网络的算法模型,为所述卷积神经网络配置卷积计算配置信息;所述卷积神经网络包括至少一个卷积层;所述卷积计算配置信息包括所述至少一个卷积层中的各卷积层对应的数据位宽值;其中,所述卷积神经网络的算法模型是由应用决定的,对不同任务所采用的算法模型不同;所述数据位宽值包括输入数据位宽值及权值数据位宽值,待处理数据包括输入数据及权值数据;其中,所述输入数据的位宽等于所述输入数据位宽值,所述权值数据的位宽等于所述权值数据位宽值;
将所述权值数据的初始位宽与所述权值数据位宽值进行比较,根据比较结果对所述权值数据进行截断或补位处理,使处理后的所述权值数据的位宽等于所述权值数据位宽值;
按照所述卷积计算配置信息从存储器读取待处理数据,所述待处理数据的位宽等于所述数据位宽值;
通过所述卷积神经网络对所述待处理数据进行卷积计算,得到计算结果数据。
2.根据权利要求1所述的方法,其特征在于,所述卷积计算配置信息还包括所述至少一个卷积层中的各卷积层对应的卷积核大小、或待处理数据的存储地址;其中,所述待处理数据的存储地址用于按照所述存储地址在所述存储器中读取所述待处理数据。
3.根据权利要求1所述的方法,其特征在于,按照所述卷积神经网络对所述待处理数据进行卷积计算,包括:
通过当前卷积层对所述待处理数据进行卷积计算,得到结果数据;所述当前卷积层为所述至少一个卷积层中各卷积层中的一个卷积层;
响应于存在下一个卷积层,以下一个卷积层作为当前卷积层,迭代执行根据为所述至少一个卷积层中当前卷积层配置的所述卷积计算配置信息从存储器读取待处理数据;通过当前卷积层对所述待处理数据进行卷积计算,得到结果数据,直到不存在下一个卷积层;
输出所述结果数据作为计算结果数据。
4.根据权利要求3所述的方法,其特征在于,还包括:
将所述结果数据写入所述存储器。
5.根据权利要求4所述的方法,其特征在于,所述卷积计算配置信息还包括偏移地址;
为所述卷积神经网络配置卷积计算配置信息,还包括:
根据所述输入数据的存储地址和所述偏移地址配置为所述下一个卷积层对应的输入数据的存储地址;
将所述结果数据写入所述存储器,包括:将结果数据写入所述存储器中的所述下一个卷积层对应的输入数据的存储地址。
6.根据权利要求5所述的方法,其特征在于,将所述结果数据写入存储器之前,还包括:
将所述结果数据的位宽与配置的下一个卷积层对应的输入数据位宽值进行比较,根据比较结果对所述结果数据执行截断或补位处理,使处理后的所述结果数据的位宽等于所述下一个卷积层对应的输入数据位宽值。
7.根据权利要求6所述的方法,其特征在于,所述根据比较结果对所述结果数据执行截断或补位处理,包括:
当所述结果数据的位宽大于所述下一个卷积层对应的输入数据位宽值,在所述结果数据中选择保留对应所述下一个卷积层对应的输入数据位宽值的数据,其他数据丢弃;
当所述结果数据的位宽小于所述下一个卷积层对应的输入数据位宽值,在所述结果数据的高位数据位中补零。
8.根据权利要求7所述的方法,其特征在于,所述根据比较结果对所述权值数据进行截断或补位处理,包括:
当所述权值数据的初始位宽大于所述权值数据位宽值,在所述权值数据中选择保留对应所述权值数据位宽值的数据,其他数据丢弃;
当所述权值数据的初始位宽小于所述权值数据位宽值,在所述权值数据的高位数据位中补零。
9.根据权利要求1-8任一所述的方法,其特征在于,所述卷积神经网络中的卷积计算配置信息,包括:
通过外部处理器为所述至少一个卷积层中各卷积层分别配置的卷积计算配置信息。
10.根据权利要求1-8任一所述的方法,其特征在于,所述输入数据为定点数据。
11.一种匹配存储器中数据位宽的卷积计算装置,其特征在于,包括:
动态配置单元,用于根据卷积神经网络的算法模型,为所述卷积神经网络配置卷积计算配置信息;所述卷积神经网络包括至少一个卷积层;所述卷积计算配置信息包括所述至少一个卷积层中的各卷积层对应的数据位宽值;其中,所述卷积神经网络的算法模型是由应用决定的,对不同任务所采用的算法模型不同;所述数据位宽值包括输入数据位宽值及权值数据位宽值,待处理数据包括输入数据及权值数据;其中,所述输入数据的位宽等于所述输入数据位宽值,所述权值数据的位宽等于所述权值数据位宽值;
权值转换单元,用于将所述权值数据的初始位宽与所述权值数据位宽值进行比较,根据比较结果对所述权值数据进行截断或补位处理,使处理后的所述权值数据的位宽等于所述权值数据位宽值;
可配置读取控制器,用于按照所述卷积计算配置信息从存储器读取待处理数据;所述待处理数据的位宽等于所述数据位宽值;
卷积计算单元,用于通过所述卷积神经网络对所述待处理数据进行卷积计算,得到计算结果数据。
12.根据权利要求11所述的装置,其特征在于,所述卷积计算配置信息还包括所述至少一个卷积层中的各卷积层对应的卷积核大小、或待处理数据的存储地址;其中,所述待处理数据的存储地址用于按照所述存储地址在所述存储器中读取所述待处理数据。
13.根据权利要求11所述的装置,其特征在于,所述卷积计算单元,包括:
层计算模块,用于通过当前卷积层对所述待处理数据进行卷积计算,得到结果数据;所述当前卷积层为所述至少一个卷积层中各卷积层中的一个卷积层;
迭代模块,用于响应于存在下一个卷积层,以下一个卷积层作为当前卷积层,迭代执行根据为所述至少一个卷积层中当前卷积层配置的所述卷积计算配置信息从存储器读取待处理数据;通过当前卷积层对所述待处理数据进行卷积计算,得到结果数据,直到不存在下一个卷积层;输出所述结果数据作为计算结果数据。
14.根据权利要求13所述的装置,其特征在于,还包括:
可配置写回控制器,用于将所述结果数据写入所述存储器。
15.根据权利要求14所述的装置,其特征在于,所述卷积计算配置信息还包括偏移地址;
所述动态配置单元,还用于根据所述输入数据的存储地址和所述偏移地址配置为所述下一个卷积层对应的输入数据的存储地址;
所述可配置写回控制器,具体用于将结果数据写入所述存储器中的所述下一个卷积层对应的输入数据的存储地址。
16.根据权利要求15所述的装置,其特征在于,还包括:
结果处理单元,用于将所述结果数据的位宽与配置的下一个卷积层对应的输入数据位宽值进行比较,根据比较结果对所述结果数据执行截断或补位处理,使处理后的所述结果数据的位宽等于所述下一个卷积层对应的输入数据位宽值。
17.根据权利要求16所述的装置,其特征在于,所述结果处理单元,包括:
数据截断模块,用于当所述结果数据的位宽大于所述下一个卷积层对应的输入数据位宽值,在所述计算结果数据中选择保留对应所述下一个卷积层对应的输入数据位宽值的数据,其他数据丢弃;
数据补位模块,用于当所述结果数据的位宽小于所述下一个卷积层对应的输入数据位宽值,在所述计算结果数据的高位数据位中补零。
18.根据权利要求17所述的装置,其特征在于,所述权值转换单元,包括:
权值截断模块,用于当所述权值数据的初始位宽大于所述权值数据位宽值,在所述权值数据中选择保留对应所述权值数据位宽值的数据,其他数据丢弃;
权值补位模块,用于当所述权值数据的初始位宽小于所述权值数据位宽值,在所述权值数据的高位数据位中补零。
19.根据权利要求11-18任一所述的装置,其特征在于,所述动态配置单元,具体用于根据外部处理器的控制为所述至少一个卷积层中各卷积层分别配置的卷积计算配置信息。
20.根据权利要求11-18任一所述的装置,其特征在于,所述输入数据为定点数据。
21.一种电子设备,其特征在于,设置有如权利要求11至20任一所述的匹配存储器中数据位宽的卷积计算装置。
22.一种电子设备,其特征在于,包括:存储器,用于存储可执行指令;
以及处理器,用于与所述存储器通信以执行所述可执行指令从而完成权利要求1至10任一所述匹配存储器中数据位宽的卷积计算方法的操作。
23.一种计算机存储介质,用于存储计算机可读取的指令,其特征在于,所述指令被执行时执行权利要求1至10任一所述匹配存储器中数据位宽的卷积计算方法的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710775655.XA CN108229648B (zh) | 2017-08-31 | 2017-08-31 | 匹配存储器中数据位宽的卷积计算方法和装置、设备、介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710775655.XA CN108229648B (zh) | 2017-08-31 | 2017-08-31 | 匹配存储器中数据位宽的卷积计算方法和装置、设备、介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108229648A CN108229648A (zh) | 2018-06-29 |
CN108229648B true CN108229648B (zh) | 2020-10-09 |
Family
ID=62654388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710775655.XA Active CN108229648B (zh) | 2017-08-31 | 2017-08-31 | 匹配存储器中数据位宽的卷积计算方法和装置、设备、介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108229648B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020223856A1 (zh) * | 2019-05-05 | 2020-11-12 | 深圳市大疆创新科技有限公司 | 一种基于卷积神经网络架构的数据处理方法及装置 |
CN112085176B (zh) * | 2019-06-12 | 2024-04-12 | 安徽寒武纪信息科技有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN110673802B (zh) * | 2019-09-30 | 2023-04-07 | 上海寒武纪信息科技有限公司 | 数据存储方法、装置、芯片、电子设备和板卡 |
CN110738312A (zh) * | 2019-10-15 | 2020-01-31 | 百度在线网络技术(北京)有限公司 | 用于数据处理的方法、系统、设备和计算机可读存储介质 |
CN111047037B (zh) * | 2019-12-27 | 2024-05-24 | 北京市商汤科技开发有限公司 | 数据处理方法、装置、设备及存储介质 |
CN111831354B (zh) * | 2020-07-09 | 2023-05-16 | 北京灵汐科技有限公司 | 数据精度配置方法、装置、芯片、芯片阵列、设备及介质 |
CN112799599B (zh) * | 2021-02-08 | 2022-07-15 | 清华大学 | 一种数据存储方法、计算核、芯片和电子设备 |
CN113642724B (zh) * | 2021-08-11 | 2023-08-01 | 西安微电子技术研究所 | 一种高带宽存储的cnn加速器 |
CN114692833B (zh) * | 2022-03-30 | 2023-11-21 | 广东齐芯半导体有限公司 | 一种卷积计算电路、神经网络处理器以及卷积计算方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105760933A (zh) * | 2016-02-18 | 2016-07-13 | 清华大学 | 卷积神经网络的逐层变精度定点化方法及装置 |
WO2016182672A1 (en) * | 2015-05-08 | 2016-11-17 | Qualcomm Incorporated | Reduced computational complexity for fixed point neural network |
CN106990937A (zh) * | 2016-01-20 | 2017-07-28 | 南京艾溪信息科技有限公司 | 一种浮点数处理装置 |
-
2017
- 2017-08-31 CN CN201710775655.XA patent/CN108229648B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016182672A1 (en) * | 2015-05-08 | 2016-11-17 | Qualcomm Incorporated | Reduced computational complexity for fixed point neural network |
CN106990937A (zh) * | 2016-01-20 | 2017-07-28 | 南京艾溪信息科技有限公司 | 一种浮点数处理装置 |
CN105760933A (zh) * | 2016-02-18 | 2016-07-13 | 清华大学 | 卷积神经网络的逐层变精度定点化方法及装置 |
Non-Patent Citations (1)
Title |
---|
基于FPGA的Hopfield神经网络可配置硬件实现方法研究;王彤;《中国优秀硕士学位论文全文数据库 信息科技辑》;20170415;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108229648A (zh) | 2018-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108229648B (zh) | 匹配存储器中数据位宽的卷积计算方法和装置、设备、介质 | |
CN113330421B (zh) | 点积计算器及其操作方法 | |
CN112183713A (zh) | 神经网络装置和操作神经网络的方法 | |
CN108628807A (zh) | 浮点数矩阵的处理方法、装置、设备及计算机可读存储介质 | |
WO2020074989A1 (en) | Data representation for dynamic precision in neural network cores | |
US10747501B2 (en) | Providing efficient floating-point operations using matrix processors in processor-based systems | |
CN113721884B (zh) | 运算方法、装置、芯片、电子装置及存储介质 | |
US20220092399A1 (en) | Area-Efficient Convolutional Block | |
EP4260174A1 (en) | Data-type-aware clock-gating | |
CN116700663B (zh) | 一种浮点数处理方法及装置 | |
EP4018388A1 (en) | Neural network training with decreased memory consumption and processor utilization | |
EP4356298A1 (en) | Single function to perform combined matrix multiplication and bias add operations | |
CN112085175A (zh) | 基于神经网络计算的数据处理方法和装置 | |
US20220245433A1 (en) | Sparse convolutional neural network | |
US20230161555A1 (en) | System and method performing floating-point operations | |
CN116700666A (zh) | 一种浮点数处理方法及装置 | |
US20230289138A1 (en) | Hardware device to execute instruction to convert input value from one data format to another data format | |
TWI852292B (zh) | 執行指令以將輸入值從一種資料格式轉換為另一種資料格式之硬體裝置 | |
CN118312130B (zh) | 数据处理方法及装置、处理器、电子设备、存储介质 | |
CN108229668A (zh) | 基于深度学习的运算实现方法、装置和电子设备 | |
CN115469829B (zh) | 运算装置和基于运算电路的指数运算方法 | |
CN115965047A (zh) | 数据处理器、数据处理方法和电子设备 | |
CN113508363B (zh) | 多用户网络中的算术和逻辑运算 | |
CN115965048A (zh) | 数据处理装置、数据处理方法和电子设备 | |
CN115951858A (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 |