CN107451654A - 卷积神经网络的加速运算方法、服务器及存储介质 - Google Patents

卷积神经网络的加速运算方法、服务器及存储介质 Download PDF

Info

Publication number
CN107451654A
CN107451654A CN201710544330.0A CN201710544330A CN107451654A CN 107451654 A CN107451654 A CN 107451654A CN 201710544330 A CN201710544330 A CN 201710544330A CN 107451654 A CN107451654 A CN 107451654A
Authority
CN
China
Prior art keywords
map
split
sub
layer
default
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
CN201710544330.0A
Other languages
English (en)
Other versions
CN107451654B (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.)
Shenzhen Self Technology Co Ltd
Original Assignee
Shenzhen Self 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 Shenzhen Self Technology Co Ltd filed Critical Shenzhen Self Technology Co Ltd
Priority to CN201710544330.0A priority Critical patent/CN107451654B/zh
Publication of CN107451654A publication Critical patent/CN107451654A/zh
Application granted granted Critical
Publication of CN107451654B publication Critical patent/CN107451654B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种卷积神经网络的加速运算方法、服务器及存储介质,通过对待拆分map拆分成预设数量的子map,并获取各子map的位置信息;对各子map分别进行跨层运算,获取每一层运算的中间结果,将所述中间结果存入内部存储器中,提取所述内部存储器中的中间结果参与下一层运算,从而充分利用内部存储器并复用资源,减少了与外部存储器的交互时间,大大提升CNN的运算速度和资源使用效率,使得CNN能够在嵌入式终端内高速高效的运行。

Description

卷积神经网络的加速运算方法、服务器及存储介质
技术领域
本发明涉及计算机应用领域,尤其涉及一种卷积神经网络的加速运算方法、服务器及存储介质。
背景技术
机器学习(Machine Learning,ML)和人工智能(Artificial Intelligence,AI)是研究如何让计算机去完成需要人的智力才能胜任的工作,是研究如何应用计算机的软硬件来模拟人类某些行为、思想的基本理论、方法和技术。AI是一门多学科交叉的科学,包含自然科学和社学科学交叉,更涉及哲学和认知科学,数学、神经生理学、心理学、计算机科学,信息科学、控制论等众多学科。因此,AI领域的理论研究和应用技术的壁垒很高,涉及到多学科协作以及实现困难等问题。
近年来,深度学习(Deep Learning,DL)进展大大推动了ML和AI的技术进步和实际应用。例如,AI为技术核心的应用已经渗透到了众多领域,安防、教育、金融、医疗、交通等等,典型应用包括:远程开户(金融、证券),智能安防、图像识别、自然语言处理、自动驾驶等等。DL是一种含多隐层的,多层感知的深度学习结构,通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。卷积神经网络(ConvolutionalNeural Network,CNN)就是一种有监督下的深度学习模型。
深度学***台之上,所需要的硬件资源非常巨大,导致成本和功耗都非常大。为了能够在嵌入式终端内应用CNN,就需要在相对处理器集群弱得多的硬件平台或处理器上运行CNN,这个问题已经是目前限制CNN在终端上应用的最大技术阻碍。为此,需要研究在处理器上的进行计算资源复用的方法,能够实现CNN在低成本、资源相对较少的处理器上运行。
CNN的计算过程是逐层计算,包括卷积层、池化层和全连接层,CNN的计算过程可以采用层间复用从而降低对处理器硬件资源的需求,即所有的卷积层或池化层依次运行在相同的模块中,在设计卷积层模块和池化层模块的时候,需要按照所有层的最大资源占用情况来设计相关参数,例如卷积核的尺寸、输入/输入卷积神经网络各层输入及输出的特征数据map的尺寸和数量等,CNN网络有一个特点:底层的map尺寸大,但是数量少,高层的map尺寸小,但是数量多。在层间复用方案中,需要设计按照大尺寸、大数量的标准来设计双端口随机存取存储器(random access memory,RAM)又称作“随机存储器”,是与CPU直接交换数据的内部存储器,将会造成计算资源的低效使用,同时也制约了并行路数,影响实时性。
发明内容
本发明的主要目的在于提出一种卷积神经网络的加速运算方法、服务器及存储介质,旨在解决现有技术中的卷积神经网络计算量大,难以充分利用硬件资源加速计算的技术问题。
为实现上述目的,本发明提供一种卷积神经网络的加速运算方法,所述卷积神经网络的加速运算方法包括以下步骤:
获取待拆分map;
对所述待拆分map进行卷积和池化操作,将进行卷积和池化操作后的待拆分map拆分成预设数量的子map,并获取各子map的位置信息;
对各子map分别进行跨层运算,获取每一层运算的中间结果,将所述中间结果存入内部存储器中;
提取所述内部存储器中的中间结果参与下一层运算,直至获得最终运算结果;
按照所述位置信息对所述最终运算结果进行拼接,获得用于后续网络计算的拼接结果。
优选地,所述将所述待拆分map进行卷积和池化操作之前,所述方法还包括:
判断所述待拆map是否需要进行边界补充,若需要,对所述待拆分map进行边界补充,并将边界补充后的待拆分map作为新的待拆分map。
优选地,所述对所述待拆分map进行边界补充,并将边界补充后的待拆分map作为新的待拆分map,具体包括:
获取预设跨层层数与预设卷积核尺寸;
根据所述预设跨层层数与所述预设卷积核尺寸计算出所述边界补充的数量;
根据所述边界补充的数量对所述待拆分map进行边界补充,并将边界补充后的待拆分map作为所述新的待拆分map;所述预设跨层层数为所述待拆分map跨越卷积神经网络的层数。
优选地,所述获得预设跨层层数与预设卷积核尺寸,其中,获取预设卷积核尺寸具体包括:
获取所述待拆分map进行卷积和池化操作的预设卷积核的类型,根据所述预设卷积核的类型获取所述预设卷积核尺寸。
优选地,所述根据所述预设跨层层数与所述预设卷积核尺寸计算出所述边界补充的数量具体包括:
根据所述预设跨层层数与所述预设卷积核尺寸通过下式计算出所述边界补充的数量:
其中S为所述边界补充的数量,T代表所述预设跨层层数中池化层的总数量,数组Lt代表所述预设跨层层数中第t个池化层的倍数,索引号是t,t=1~T;数组Ni代表所述预设跨层层数中第i-1次到第i次池化层之间的卷积层的数量,索引号是i,i=1~T;二维数组Kij代表所述预设跨层层数中第i-1次到第i次池化层之间的第j个卷积层的卷积核尺寸,j为第i-1次到第i次池化层之间多个卷积层的索引号,j=1~Ni,对应的卷积核就是一个Kij*Kij矩阵,S、T、Lt、Ni、Kij均为大于0的整数。
优选地,所述根据所述预设跨层层数与所述预设卷积核尺寸通过下式计算出所述边界补充的数量之后,所述方法还包括:
根据所述边界补充的数量对R*C矩阵待拆分map进行边界补充,以获得R0*C0矩阵待拆分map;
将所述R0*C0矩阵待拆分map按照预设拆分方式拆分为a*b个子map;
其中R0=R+S,C0=C+S,R为所述R*C矩阵待拆分map的行数,C为R*C矩阵待拆分map的列数,R0为所述R0*C0矩阵待拆分map的行数,C0为所述R0*C0矩阵待拆分map的列数。
优选地,所述将所述R0*C0矩阵待拆分map按照预设拆分方式拆分为a*b个子map具体包括:
当所述预设拆分方式是均匀拆分时,获取r*c矩阵子map的预设尺寸r和c,a=R/r,b=C/c,其中R为所述R*C矩阵待拆分map的行数,C为R*C矩阵待拆分map的列数;r为所述r*c矩阵子map的行数,c为所述r*c矩阵子map的列数;
当所述预设拆分方式是非均匀拆分时,a=up(R/r),b=up(C/c);所述a*b个子map中处于第a行且在第1至第b-1列的子map的尺寸为[R-r*down(R/r)]*c;所述a*b个子map中处于第1至第a-1行且在第b列的子map的尺寸为r*[C-c*down(C/c)];所述a*b个子map中处于第a行且在第b列的子map尺寸为[R-r*down(R/r)]*[C-c*down(C/c)];所述a*b个子map中除了处于在第a行和/或在第b列之外的子map的尺寸为r*c;
其中up(x)代表对括号里的实数x做向上取整操作,down(x)代表对括号里的实数x做向下取整操作;R为所述R*C矩阵待拆分map的行数,C为R*C矩阵待拆分map的列数;r为所述r*c矩阵子map的行数,c为所述r*c矩阵子map的列数,a、b、R、C、r和c为正整数。
优选地,所述判断所述待拆map是否需要进行边界补充之后,所述方法还包括:
当所述卷积和池化操作不需要边界补充时,将所述R*C矩阵待拆分map按照所述预设拆分方式拆分为a*b个所述子map;
当所述预设拆分方式是均匀拆分时,获取r*c矩阵子map的预设尺寸r和c,a=R/r,b=C/c,其中R为所述R*C矩阵待拆分map的行数,C为R*C矩阵待拆分map的列数;r为所述r*c矩阵子map的行数,c为所述r*c矩阵子map的列数;
当所述预设拆分方式是非均匀拆分时,a=up(R/r),b=up(C/c);所述a*b个子map中处于第a行且在第1至第b-1列的子map的尺寸为[R-r*down(R/r)]*c;所述a*b个子map中处于第1至第a-1行且在第b列的子map的尺寸为r*[C-c*down(C/c)];所述a*b个子map中处于第a行且在第b列的子map尺寸为[R-r*down(R/r)]*[C-c*down(C/c)];所述a*b个子map中除了处于在第a行和/或在第b列之外的子map的尺寸为r*c;
其中up(x)代表对括号里的实数x做向上取整操作,down(x)代表对括号里的实数x做向下取整操作;R为所述R*C矩阵待拆分map的行数,C为R*C矩阵待拆分map的列数;r为所述r*c矩阵子map的行数,c为所述r*c矩阵子map的列数,a、b、R、C、r和c为正整数。
此外,为实现上述目的,本发明还提出一种卷积神经网络的加速运算服务器,所述卷积神经网络的加速运算服务器包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的卷积神经网络的加速运算程序,所述卷积神经网络的加速运算程序配置为实现如上文所述的卷积神经网络的加速运算方法的步骤。
此外,为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有卷积神经网络的加速运算程序,所述卷积神经网络的加速运算程序被处理器执行时实现如上文所述的卷积神经网络的加速运算方法的步骤。
本发明提出的卷积神经网络的加速运算方法,通过对待拆分map拆分成预设数量的子map,并获取各子map的位置信息;对各子map分别进行跨层运算,获取每一层运算的中间结果,将所述中间结果存入内部存储器中,提取所述内部存储器中的中间结果参与下一层运算,从而充分利用内部存储器并复用资源,减少了与外部存储器的交互时间,大大提升CNN的运算速度和资源使用效率,使得CNN能够在嵌入式终端内高速高效的运行。
附图说明
图1为本发明实施例方案涉及的硬件运行环境的卷积神经网络的加速运算服务器结构示意图;
图2为本发明卷积神经网络的加速运算方法第一实施例的流程示意图;
图3为本发明卷积神经网络的加速运算方法第二实施例的流程示意图;
图4为本发明卷积神经网络的加速运算方法第三实施例的流程示意图;
图5为本发明卷积神经网络的加速运算方法中边界补充示意图;
图6为本发明卷积神经网络的加速运算方法第四实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的解决方案主要是:获取待拆分map,对所述待拆分map进行卷积和池化操作,将进行卷积和池化操作后的待拆分map拆分成预设数量的子map,并获取各子map的位置信息,对各子map分别进行跨层运算,获取每一层运算的中间结果,将所述中间结果存入内部存储器中,提取所述内部存储器中的中间结果参与下一层运算,直至获得最终运算结果,按照所述位置信息对所述最终运算结果进行拼接,获得用于后续网络计算的拼接结果。通过本发明实施例的技术方案,解决现有技术中的卷积神经网络计算量大,难以充分利用硬件资源加速计算的技术问题。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的卷积神经网络的加速运算服务器结构示意图。
如图1所示,该卷积神经网络的加速运算服务器可以包括:处理器1001,例如CPU,通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储服务器。
本领域技术人员可以理解,图1中示出的卷积神经网络的加速运算服务器结构并不构成对卷积神经网络的加速运算服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及卷积神经网络的加速运算程序。卷积神经网络的加速运算服务器通过处理器1001调用存储器1005中存储的卷积神经网络的加速运算程序,并执行以下操作:
获取待拆分map;
对所述待拆分map进行卷积和池化操作,将进行卷积和池化操作后的待拆分map拆分成预设数量的子map,并获取各子map的位置信息;
对各子map分别进行跨层运算,获取每一层运算的中间结果,将所述中间结果存入内部存储器中;
提取所述内部存储器中的中间结果参与下一层运算,直至获得最终运算结果;
按照所述位置信息对所述最终运算结果进行拼接,获得用于后续网络计算的拼接结果。
进一步地,处理器1001可以调用存储器1005中存储的卷积神经网络的加速运算程序,还执行以下操作:
判断所述待拆map是否需要进行边界补充,若需要,对所述待拆分map进行边界补充,并将边界补充后的待拆分map作为新的待拆分map。
进一步地,处理器1001可以调用存储器1005中存储的卷积神经网络的加速运算程序,还执行以下操作:
获取预设跨层层数与预设卷积核尺寸;
根据所述预设跨层层数与所述预设卷积核尺寸计算出所述边界补充的数量;
根据所述边界补充的数量对所述待拆分map进行边界补充,并将边界补充后的待拆分map作为所述新的待拆分map;所述预设跨层层数为所述待拆分map跨越卷积神经网络的层数。
进一步地,处理器1001可以调用存储器1005中存储的卷积神经网络的加速运算程序,还执行以下操作:
获取所述待拆分map进行卷积和池化操作的预设卷积核的类型,根据所述预设卷积核的类型获取所述预设卷积核尺寸。
进一步地,处理器1001可以调用存储器1005中存储的卷积神经网络的加速运算程序,还执行以下操作:
根据所述预设跨层层数与所述预设卷积核尺寸通过下式计算出所述边界补充的数量:
其中S为所述边界补充的数量,T代表所述预设跨层层数中池化层的总数量,数组Lt代表所述预设跨层层数中第t个池化层的倍数,索引号是t,t=1~T;数组Ni代表所述预设跨层层数中第i-1次到第i次池化层之间的卷积层的数量,索引号是i,i=1~T;二维数组Kij代表所述预设跨层层数中第i-1次到第i次池化层之间的第j个卷积层的卷积核尺寸,j为第i-1次到第i次池化层之间多个卷积层的索引号,j=1~Ni,对应的卷积核就是一个Kij*Kij矩阵,S、T、Lt、Ni、Kij均为大于0的整数。
进一步地,处理器1001可以调用存储器1005中存储的卷积神经网络的加速运算程序,还执行以下操作:
根据所述边界补充的数量对R*C矩阵待拆分map进行边界补充,以获得R0*C0矩阵待拆分map;
将所述R0*C0矩阵待拆分map按照预设拆分方式拆分为a*b个子map;
其中R0=R+S,C0=C+S,R为所述R*C矩阵待拆分map的行数,C为R*C矩阵待拆分map的列数,R0为所述R0*C0矩阵待拆分map的行数,C0为所述R0*C0矩阵待拆分map的列数。
进一步地,处理器1001可以调用存储器1005中存储的卷积神经网络的加速运算程序,还执行以下操作:
当所述预设拆分方式是均匀拆分时,获取r*c矩阵子map的预设尺寸r和c,a=R/r,b=C/c,其中R为所述R*C矩阵待拆分map的行数,C为R*C矩阵待拆分map的列数;r为所述r*c矩阵子map的行数,c为所述r*c矩阵子map的列数;
当所述预设拆分方式是非均匀拆分时,a=up(R/r),b=up(C/c);所述a*b个子map中处于第a行且在第1至第b-1列的子map的尺寸为[R-r*down(R/r)]*c;所述a*b个子map中处于第1至第a-1行且在第b列的子map的尺寸为r*[C-c*down(C/c)];所述a*b个子map中处于第a行且在第b列的子map尺寸为[R-r*down(R/r)]*[C-c*down(C/c)];所述a*b个子map中除了处于在第a行和/或在第b列之外的子map的尺寸为r*c;
其中up(x)代表对括号里的实数x做向上取整操作,down(x)代表对括号里的实数x做向下取整操作;R为所述R*C矩阵待拆分map的行数,C为R*C矩阵待拆分map的列数;r为所述r*c矩阵子map的行数,c为所述r*c矩阵子map的列数,a、b、R、C、r和c为正整数。
进一步地,处理器1001可以调用存储器1005中存储的卷积神经网络的加速运算程序,还执行以下操作:
当所述卷积和池化操作不需要边界补充时,将所述R*C矩阵待拆分map按照所述预设拆分方式拆分为a*b个所述子map;
当所述预设拆分方式是均匀拆分时,获取r*c矩阵子map的预设尺寸r和c,a=R/r,b=C/c,其中R为所述R*C矩阵待拆分map的行数,C为R*C矩阵待拆分map的列数;r为所述r*c矩阵子map的行数,c为所述r*c矩阵子map的列数;
当所述预设拆分方式是非均匀拆分时,a=up(R/r),b=up(C/c);所述a*b个子map中处于第a行且在第1至第b-1列的子map的尺寸为[R-r*down(R/r)]*c;所述a*b个子map中处于第1至第a-1行且在第b列的子map的尺寸为r*[C-c*down(C/c)];所述a*b个子map中处于第a行且在第b列的子map尺寸为[R-r*down(R/r)]*[C-c*down(C/c)];所述a*b个子map中除了处于在第a行和/或在第b列之外的子map的尺寸为r*c;
其中up(x)代表对括号里的实数x做向上取整操作,down(x)代表对括号里的实数x做向下取整操作;R为所述R*C矩阵待拆分map的行数,C为R*C矩阵待拆分map的列数;r为所述r*c矩阵子map的行数,c为所述r*c矩阵子map的列数,a、b、R、C、r和c为正整数。
本实施例通过上述方案,通过获取待拆分map,对所述待拆分map进行卷积和池化操作,将进行卷积和池化操作后的待拆分map拆分成预设数量的子map,并获取各子map的位置信息,对各子map分别进行跨层运算,获取每一层运算的中间结果,将所述中间结果存入内部存储器中,提取所述内部存储器中的中间结果参与下一层运算,从而充分利用内部存储器并复用资源,减少了与外部存储器的交互时间,大大提升CNN的运算速度和资源使用效率,使得CNN能够在嵌入式终端内高速高效的运行。
基于上述硬件结构,提出本发明卷积神经网络的加速运算方法实施例。
参照图2,图2为本发明卷积神经网络的加速运算方法第一实施例的流程示意图。
在第一实施例中,所述卷积神经网络的加速运算方法包括以下步骤:
步骤S10、获取待拆分map;
需要说明的是,map为卷积神经网络(Convolutional Neural Network,CNN)各层输入及输出的特征数据,所述待拆分map为在卷积神经网络CNN中选取的输入map,可以是选择比较大的map作为输入map,如256*256矩阵的map,还可以是其他规格的map,选择作为输入map即待拆分map可以灵活选择,并不一定只是以map的尺寸大小进行选择,还可以是通过其他方式进行选择,本实施例对此不加以限制。
步骤S20、对所述待拆分map进行卷积和池化操作,将进行卷积和池化操作后的待拆分map拆分成预设数量的子map,并获取各子map的位置信息;
可以理解的是,对所述待拆分map进行卷积和池化操作即将所述待拆分map按照预设的卷积核尺寸并且按照预设的移动方式对所述待拆分map进行扫描,结合预设的权重提取相应的特征;
应当理解的是,上述预设的权重和预设的卷积核尺寸也可以是通过训练获取,当然也可以是通过本领域技术人员进行长期的实验或经验确定的固定的值,还可以是其他方式获取的数值,本实施例对此不加以限制。
需要说明的是,将进行卷积和池化操作后的待拆分map拆分成预设数量的子map,预设数量的确定可以是根据预设跨层层数和拆分方式来进行确定,也可以是通过其他参数或者其他方式进行确定,本实施例对此不加以限制;因为同一个卷积核在同一个待拆分map中是共享的,所述待拆分map进行卷积和池化操作后会任然保留原先的位置信息;当将进行卷积和池化操作后的待拆分map拆分成预设数量的子map后,可以用内部存储器快速存储各子map的位置信息,也可以用非易失性存储器(Nonvolatile RAM,NVRAM)对所述各子map的位置信息进行存储,当然也可以是用双倍速率同步动态随机存储器(Dual Data RateSDRAM,DDR SDRAM)进行存储,还可以是通过其他的方式存储所述各子map的位置信息,本实施例对此不加以限制。
在具体实现中,一般是把所述待拆分map进行卷积和池化操作后拆分成最小的运算资源单元,即子map,在现场可编程门阵列(Field-Programmable Gate Array,FPGA)等硬件平台中可以在这种小单元上灵活设计,如多路复用,用小内部存储器快速存储和读取等,能够充分发掘硬件平台的潜力,充分利用FPGA的内部资源小而分散的优势。
步骤S30、对各子map分别进行跨层运算,获取每一层运算的中间结果,将所述中间结果存入内部存储器中;
可以理解的是,对各子map分别进行跨层运算的过程可以是并行运算,即将不同的子map同时跨越预设跨层层数,并同时进行每一层的运算;当然也可以是将所有的子map进行分批处理,即将第一批的子map全部运算完之后再进行下一批的子map运算,还可以是多批子map同时进行某一层的运算,同步输出运算结果,也可以是采取其他方式进行跨层运算。
需要说明的是,所述中间结果是指所述各子map在某一层的卷积运算后的结果,即中间环节的计算结果;将每一层的中间结果存入内部存储器中,利用内部存储器读写速度快的优点,高速地将中间结果进行存储以方便后续的操作。
在具体实现中,通常利用FPGA等硬件平台中的内部存储器对中间环节的运算结果进行存储,相对于双倍速率同步动态随机存储器(Dual Data Rate SDRAM,DDR SDRAM)来说,FPGA等硬件平台中的RAM读写速度更快,而且控制比较简单方便。
步骤S40、提取所述内部存储器中的中间结果参与下一层运算,直至获得最终运算结果;
需要说明的是,所述最终运算结果是指所述各子map在跨层运算中预设跨层层数的最后一层完成最后一次卷积的结果;所述最终运算结果是通过所述中间结果不断的参与下一层的运算获得的运算结果;
可以理解的是,所述最终运算结果可以为包含所述各子map最后的运算结果的集合;当然也可以是单个子map经过预设跨层层数的跨层运算后的最终运算结果;还可以是其他形式存在的能够表明所述待拆分map经过跨层运算后输出的结果,本实施例对此不加以限制。
在具体实现中,一般将所述中间结果存入内部存储器中,以方便在进行下一层的运算时或者下一次的运算时能够快速的反复读取和写入;直到将所有的预设跨层层数的跨层运算全部运算完后生成最终运算结果,一般将所述最终运算结果存入在所述FPGA等硬件平台之外的存储器即DDR,因为所述最终运算结果数据比较大且用于后续的很多网络计算,比较重要,因此利用DDR工作频率高兼容性好且永久保存的特性,将所述最终运算结果存入DDR中;当然也可以是存储在其他类型的存储器中,本实施例对此不加以限制。
步骤S50、按照所述位置信息对所述最终运算结果进行拼接,获得用于后续网络计算的拼接结果。
需要说明的是,拼接操作需要在所有的所述子map在预设跨层层数的跨层运算结束后进行,然后按照所述位置信息将各子map按照原先的位置进行拼接形成输出map,即所述待拆分map的多层计算结果,虽然将待拆分map进行拆分,生成子map以进行各层的跨层运算相较于传统map跨层运算消耗了更多的运算资源,但是极大加快了跨层运算的速度,改善了时序紧张的问题,且降低了成本。
在具体实现中,按照所述位置信息对所述最终运算结果进行拼接,位置信息可以是各子map对应的索引号,比如00、01、02……等,可以预先将索引号存入DDR中也可以存入其他存储器中,然后根据索引号将各子map按照各自的位置进行拼接,以获得输出map,当然也可以是其他能够对各map起标记作用的信息,本实施例对此不加以限制。
本实施例通过获取待拆分map,对所述待拆分map进行卷积和池化操作,将进行卷积和池化操作后的待拆分map拆分成预设数量的子map,并获取各子map的位置信息;对各子map分别进行跨层运算,获取每一层运算的中间结果,将所述中间结果存入内部存储器中;提取所述内部存储器中的中间结果参与下一层运算,将所述中间结果存入内部存储器中,提取所述内部存储器中的中间结果参与下一层运算,从而充分利用内部存储器并复用资源,减少了与外部存储器的交互时间,大大提升CNN的运算速度和资源使用效率,使得CNN能够在嵌入式终端内高速高效的运行。
进一步地,如图3所示,基于第一实施例提出本发明卷积神经网络的加速运算方法第二实施例,在本实施例中,所述步骤S20之前,还包括步骤:
步骤S11、判断所述待拆map是否需要进行边界补充,若需要,对所述待拆分map进行边界补充,并将边界补充后的待拆分map作为新的待拆分map。
需要说明的是,所述边界补充即对所述待拆分map进行外圈补数,外圈补数一般包括补零和补所述子map周边的数,外圈补数的圈数或外圈补数的行和列由所述待拆分map的预设跨层层数、预设跨层减少尺寸、卷积核尺寸和所述待拆分map的原始尺寸其中至少一项决定;当然也可以是由其他参数来确定所述外圈补数的圈数或外圈补数的行和列,本实施例对此不加以限制。
可以理解的是,对所述待拆分map进行边界补充并不一定是需要固定值的边界补充的数量,可以是根据实际情况进行灵活的配置,且不同的待拆分map进行边界补充的数量也不一定是相同的,且边界补充的数量即对所述待拆分map进行外圈补数的全数或者外圈补数的行和列也受当前网络栈道的影响,在不同的网络框架中同一个待拆分map的进行边界补充的数量即外圈补数也不一定相同。
在具体实现中,因为所述待拆分map在跨层运算中每跨一层即每运算一层都会丢失一圈数据,或者丢失很多行和/列,因此为了保护需要用到的map对所述待拆分map进边界补充,即外圈补数,一般对所述待拆分map进行外圈补零,根据实际情况会多补一些零便于后期的拆分运算。
本实施例通过判断所述待拆分map是否需要进行边界补充,若需要,对所述待拆分map进行边界补充,并将边界补充后的待拆分map作为新的待拆分map。对所述待拆分map进行边界补充可以防止所述待拆分map在进行跨层运算时造成的数据丢失,避免需要保护的map受损,能有效提供对所述待拆分map的保护。
进一步地,如图4所示,基于第二实施例提出本发明卷积神经网络的加速运算方法第三实施例,在本实施例中,所述步骤S11,具体包括以下步骤:
S12、获取预设跨层层数与预设卷积核尺寸;
需要说明的是,所述预设跨层层数为预先设定的所述待拆分map要进行跨层的层数,所述预设卷积核尺寸可以是通过训练获取,当然也可以是通过本领域技术人员进行长期的实验或经验确定的固定的值,还可以是其他方式获取的数值,本实施例对此不加以限制。
S13、根据所述预设跨层层数与所述预设卷积核尺寸计算出所述边界补充的数量;
需要说明的是,所述边界补充的数量即外圈补数的圈数或外圈补数的行和列由所述待拆分map的预设跨层层数、预设跨层减少尺寸、卷积核尺寸和所述待拆分map的原始尺寸其中至少一项决定;当然也可以是由其他参数来确定所述外圈补数的圈数或外圈补数的行和列,本实施例对此不加以限制。
可以理解的是,仅仅通过预设跨层层数与所述预设卷积核尺寸就可以计算出所述待拆分map的边界补充的数量,当然计算所述待拆分map的边界补充的数量的方式灵活多变,也可以采用特殊设计的算法或者计算模块进行计算,本实施例对此不加以限制。
在具体实现中,可以根据所述预设跨层层数与所述预设卷积核尺寸通过下式计算出所述边界补充的数量:
其中S为所述边界补充的数量,T代表所述预设跨层层数中池化层的总数量,数组Lt代表所述预设跨层层数中第t个池化层的倍数,索引号是t,t=1~T;数组Ni代表所述预设跨层层数中第i-1次到第i次池化层之间的卷积层的数量,索引号是i,i=1~T;二维数组Kij代表所述预设跨层层数中第i-1次到第i次池化层之间的第j个卷积层的卷积核尺寸,j为第i-1次到第i次池化层之间多个卷积层的索引号,j=1~Ni,对应的卷积核就是一个Kij*Kij矩阵,S、T、Lt、Ni、Kij均为大于0的整数。通过所述预设跨层层数的顺序为先通过N0个卷积层,再经过1个L1倍的池化层,再通过N1个卷积层,经过1个L2倍的池化层,以此类推最后通过第T个LT倍的池化层就结束。
根据所述边界补充的数量对R*C矩阵待拆分map进行边界补充,以获得R0*C0矩阵待拆分map;
将所述R0*C0矩阵待拆分map按照预设拆分方式拆分为a*b个子map;
当所述预设拆分方式是均匀拆分时,获取r*c矩阵子map的预设尺寸r和c,a=R/r、b=C/c,其中R为所述R*C矩阵待拆分map的行数,C为R*C矩阵待拆分map的列数;r为所述r*c矩阵子map的行数,c为所述r*c矩阵子map的列数;
当所述预设拆分方式是非均匀拆分时,a=up(R/r),b=up(C/c);所述a*b个子map中处于第a行且在第1至第b-1列的子map的尺寸为[R-r*down(R/r)]*c;所述a*b个子map中处于第1至第a-1行且在第b列的子map的尺寸为r*[C-c*down(C/c)];所述a*b个子map中处于第a行且在第b列的子map尺寸为[R-r*down(R/r)]*[C-c*down(C/c)];所述a*b个子map中除了处于在第a行和/或在第b列之外的子map的尺寸为r*c;
其中R0=S,C0=C+S,R为所述R*C矩阵待拆分map的行数,C为R*C矩阵待拆分map的列数,R0为所述R0*C0矩阵待拆分map的行数,C0为所述R0*C0矩阵待拆分map的列数,S为所述边界补充的数量。
应当理解的是,跨层运算的预设跨层层数不一定限制为跨越卷积层后跨越池化层再跨越卷积层,也可以是其他形式的组成的预设跨层层数,本实施例计算边界补充的数量仅以跨越多层卷积层和池化层运算为例,本实施例对此不加以限制。
S14、根据所述边界补充的数量对所述待拆分map进行边界补充,并将边界补充后的待拆分map作为所述新的待拆分map;所述预设跨层层数为所述待拆分map跨越卷积神经网络的层数。
可以理解的是,根据所述边界补充的数量对所述待拆分map进行边界补充,并将边界补充后的待拆分map作为所述新的待拆分map,此时新的待拆分map即可以进行后续卷积和池化操作的待拆分map,所述预设跨层层数为所述待拆分map跨越卷积神经网络的层数;将进行边界补充后的新的待拆分map进行跨层运算消耗掉边界补充的数量后,能够还原成未进行边界补充的待拆分map进行卷积的结果。
在具体实现中,也存在所述待拆分map进行卷积和池化操作不需要边界补充时的特殊情况,此时将所述R*C矩阵待拆分map按照所述预设拆分方式拆分为a*b个所述子map;预设拆分方式在均匀拆分或非均匀拆分时运算方式与进行边界补充的待拆分map运算方式一致,这里不加以赘述。
基于图4所示的方法,图5为本发明卷积神经网络的加速运算方法中边界补充示意图,参照图4,将待拆分map进行边界补充的情况如下:
获取卷积层的输入map尺寸240*320和卷积核尺寸3*3;获取预设跨层顺序和数量先通过1个卷积层,再通过1个2倍池化层,最后再通过1个卷积层;对输入map外均匀补6圈0,输入map尺寸由240*320变为246*326;对输入map外均匀补6圈0,输入map尺寸由240*320变为246*326。将输入map均匀切割成5*5=25个子map,每一个子map的尺寸为54*70,相邻子map行和列之间重叠6个元素。每一个子map单独进行卷积池化操作,并丢弃四周的边缘数据,得到24*32的卷积子map数据,然后将25个卷积子map原位拼接起来得到120*160的卷积map,即为原始输入map的卷积结果。
可以理解的是,通过判断预设拆分方式是均匀拆分或者非均匀拆分来采取不同的对应拆分方式,以实现将所述待拆分map拆分成子map的过程,能够快速利用拆分条件计算出所述子map的尺寸,使拆分子map的过程灵活多变,方便快速的进行拆分,提高了跨层运算的效率和速度。
本实施例通过获取预设跨层层数与预设卷积核尺寸;根据所述预设跨层层数与所述预设卷积核尺寸计算出所述边界补充的数量;根据所述边界补充的数量对所述待拆分map进行边界补充,并将边界补充后的待拆分map作为所述新的待拆分map;通过预设跨层层数与所述预设卷积核尺寸的计算方式能够快速得出进行所述边界补充的数量,能够更加灵活方便的调整所述待拆分map跨层运算的边界补充的数量,优化了所述待拆分map运算实现过程,避免所述待拆分map在跨层运算时造成的数据丢失,能有效提供对所述待拆分map的保护。
进一步地,如图6所示,基于第三实施例提出本发明卷积神经网络的加速运算方法第四实施例,在本实施例中,所述步骤S12,具体包括以下步骤:
S121、获取所述待拆分map进行卷积和池化操作的预设卷积核的类型,根据所述预设卷积核的类型获取所述预设卷积核尺寸。
在具体实现中,将进行边界补充后的新的待拆分map进行跨层运算消耗掉边界补充的数量后,能够还原成未进行边界补充的待拆分map进行卷积的结果,所述预设卷积核可以是常用的3*3或5*5矩阵类型的卷积核,也可以是其他类型的卷积核,或者可以是经过反复训练得到的卷积核类型,还可以是根据平时的实验或者经验得出的一个或者多个卷积核类型,本实施例对此不加以限制,然后根据卷积核类型能够获得对应的卷积和池化操作时卷积核的尺寸。
本实施例通过获取所述待拆分map进行卷积和池化操作的预设卷积核的类型,根据所述预设卷积核的类型获取所述预设卷积核尺寸,能够更加快速的确定进行所述卷积和池化操作要使用的卷积核的尺寸,提高所述待拆分map卷积运算的效率和速度。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有卷积神经网络的加速运算程序,所述卷积神经网络的加速运算程序被处理器执行时实现如下操作:
获取待拆分map;
对所述待拆分map进行卷积和池化操作,将进行卷积和池化操作后的待拆分map拆分成预设数量的子map,并获取各子map的位置信息;
对各子map分别进行跨层运算,获取每一层运算的中间结果,将所述中间结果存入内部存储器中;
提取所述内部存储器中的中间结果参与下一层运算,直至获得最终运算结果;
按照所述位置信息对所述最终运算结果进行拼接,获得用于后续网络计算的拼接结果。
进一步地,所述卷积神经网络的加速运算程序被处理器执行时还实现如下操作:
判断所述待拆map是否需要进行边界补充,若需要,对所述待拆分map进行边界补充,并将边界补充后的待拆分map作为新的待拆分map。
进一步地,所述卷积神经网络的加速运算程序被处理器执行时还实现如下操作:
获取预设跨层层数与预设卷积核尺寸;
根据所述预设跨层层数与所述预设卷积核尺寸计算出所述边界补充的数量;
根据所述边界补充的数量对所述待拆分map进行边界补充,并将边界补充后的待拆分map作为所述新的待拆分map;所述预设跨层层数为所述待拆分map跨越卷积神经网络的层数。
进一步地,所述卷积神经网络的加速运算程序被处理器执行时还实现如下操作:
获取所述待拆分map进行卷积和池化操作的预设卷积核的类型,根据所述预设卷积核的类型获取所述预设卷积核尺寸。
进一步地,所述卷积神经网络的加速运算程序被处理器执行时还实现如下操作:
根据所述预设跨层层数与所述预设卷积核尺寸通过下式计算出所述边界补充的数量:
其中S为所述边界补充的数量,T代表所述预设跨层层数中池化层的总数量,数组Lt代表所述预设跨层层数中第t个池化层的倍数,索引号是t,t=1~T;数组Ni代表所述预设跨层层数中第i-1次到第i次池化层之间的卷积层的数量,索引号是i,i=1~T;二维数组Kij代表所述预设跨层层数中第i-1次到第i次池化层之间的第j个卷积层的卷积核尺寸,j为第i-1次到第i次池化层之间多个卷积层的索引号,j=1~Ni,对应的卷积核就是一个Kij*Kij矩阵,S、T、Lt、Ni、Kij均为大于0的整数。
进一步地,所述卷积神经网络的加速运算程序被处理器执行时还实现如下操作:
根据所述边界补充的数量对R*C矩阵待拆分map进行边界补充,以获得R0*C0矩阵待拆分map;
将所述R0*C0矩阵待拆分map按照预设拆分方式拆分为a*b个子map;
其中R0=R+S,C0=C+S,R为所述R*C矩阵待拆分map的行数,C为R*C矩阵待拆分map的列数,R0为所述R0*C0矩阵待拆分map的行数,C0为所述R0*C0矩阵待拆分map的列数。
进一步地,所述卷积神经网络的加速运算程序被处理器执行时还实现如下操作:
当所述预设拆分方式是均匀拆分时,获取r*c矩阵子map的预设尺寸r和c,a=R/r,b=C/c,其中R为所述R*C矩阵待拆分map的行数,C为R*C矩阵待拆分map的列数;r为所述r*c矩阵子map的行数,c为所述r*c矩阵子map的列数;
当所述预设拆分方式是非均匀拆分时,a=up(R/r),b=up(C/c);所述a*b个子map中处于第a行且在第1至第b-1列的子map的尺寸为[R-r*down(R/r)]*c;所述a*b个子map中处于第1至第a-1行且在第b列的子map的尺寸为r*[C-c*down(C/c)];所述a*b个子map中处于第a行且在第b列的子map尺寸为[R-r*down(R/r)]*[C-c*down(C/c)];所述a*b个子map中除了处于在第a行和/或在第b列之外的子map的尺寸为r*c;
其中up(x)代表对括号里的实数x做向上取整操作,down(x)代表对括号里的实数x做向下取整操作;R为所述R*C矩阵待拆分map的行数,C为R*C矩阵待拆分map的列数;r为所述r*c矩阵子map的行数,c为所述r*c矩阵子map的列数,a、b、R、C、r和c为正整数。
进一步地,所述卷积神经网络的加速运算程序被处理器执行时还实现如下操作:
当所述卷积和池化操作不需要边界补充时,将所述R*C矩阵待拆分map按照所述预设拆分方式拆分为a*b个所述子map;
当所述预设拆分方式是均匀拆分时,获取r*c矩阵子map的预设尺寸r和c,a=R/r,b=C/c,其中R为所述R*C矩阵待拆分map的行数,C为R*C矩阵待拆分map的列数;r为所述r*c矩阵子map的行数,c为所述r*c矩阵子map的列数;
当所述预设拆分方式是非均匀拆分时,a=up(R/r),b=up(C/c);所述a*b个子map中处于第a行且在第1至第b-1列的子map的尺寸为[R-r*down(R/r)]*c;所述a*b个子map中处于第1至第a-1行且在第b列的子map的尺寸为r*[C-c*down(C/c)];所述a*b个子map中处于第a行且在第b列的子map尺寸为[R-r*down(R/r)]*[C-c*down(C/c)];所述a*b个子map中除了处于在第a行和/或在第b列之外的子map的尺寸为r*c;
其中up(x)代表对括号里的实数x做向上取整操作,down(x)代表对括号里的实数x做向下取整操作;R为所述R*C矩阵待拆分map的行数,C为R*C矩阵待拆分map的列数;r为所述r*c矩阵子map的行数,c为所述r*c矩阵子map的列数,a、b、R、C、r和c为正整数。
本实施例通过获取待拆分map;对所述待拆分map进行卷积和池化操作,将进行卷积和池化操作后的待拆分map拆分成预设数量的子map,并获取各子map的位置信息;对各子map分别进行跨层运算,获取每一层运算的中间结果,将所述中间结果存入内部存储器中;提取所述内部存储器中的中间结果参与下一层运算,从而充分利用内部存储器并复用资源,减少了与外部存储器的交互时间,大大提升CNN的运算速度和资源使用效率,使得CNN能够在嵌入式终端内高速高效的运行。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者***不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者***所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者***中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种卷积神经网络的加速运算方法,其特征在于,所述方法包括:
获取待拆分map;
对所述待拆分map进行卷积和池化操作,将进行卷积和池化操作后的待拆分map拆分成预设数量的子map,并获取各子map的位置信息;
对各子map分别进行跨层运算,获取每一层运算的中间结果,将所述中间结果存入内部存储器中;
提取所述内部存储器中的中间结果参与下一层运算,直至获得最终运算结果;
按照所述位置信息对所述最终运算结果进行拼接,获得用于后续网络计算的拼接结果。
2.如权利要求1所述的方法,其特征在于,所述将所述待拆分map进行卷积和池化操作之前,所述方法还包括:
判断所述待拆map是否需要进行边界补充,若需要,对所述待拆分map进行边界补充,并将边界补充后的待拆分map作为新的待拆分map。
3.如权利要求2所述的方法,其特征在于,所述对所述待拆分map进行边界补充,并将边界补充后的待拆分map作为新的待拆分map,具体包括:
获取预设跨层层数与预设卷积核尺寸;
根据所述预设跨层层数与所述预设卷积核尺寸计算出所述边界补充的数量;
根据所述边界补充的数量对所述待拆分map进行边界补充,并将边界补充后的待拆分map作为所述新的待拆分map;所述预设跨层层数为所述待拆分map跨越卷积神经网络的层数。
4.如权利要求3所述的方法,其特征在于,所述获得预设跨层层数与预设卷积核尺寸,其中,获取预设卷积核尺寸具体包括:
获取所述待拆分map进行卷积和池化操作的预设卷积核的类型,根据所述预设卷积核的类型获取所述预设卷积核尺寸。
5.如权利要求3所述的方法,其特征在于,所述根据所述预设跨层层数与所述预设卷积核尺寸计算出所述边界补充的数量具体包括:
根据所述预设跨层层数与所述预设卷积核尺寸通过下式计算出所述边界补充的数量:
<mrow> <mi>S</mi> <mo>=</mo> <munderover> <mo>&amp;Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>T</mi> </munderover> <mo>{</mo> <mo>&amp;lsqb;</mo> <munderover> <mo>&amp;Sigma;</mo> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <msub> <mi>N</mi> <mi>i</mi> </msub> </munderover> <mrow> <mo>(</mo> <msub> <mi>K</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>&amp;rsqb;</mo> <mo>&amp;CenterDot;</mo> <munderover> <mo>&amp;Pi;</mo> <mrow> <mi>t</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>i</mi> </munderover> <msub> <mi>L</mi> <mi>t</mi> </msub> <mo>}</mo> <mo>+</mo> <munderover> <mo>&amp;Sigma;</mo> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <msub> <mi>N</mi> <mn>0</mn> </msub> </munderover> <mrow> <mo>(</mo> <msub> <mi>K</mi> <mrow> <mn>0</mn> <mi>j</mi> </mrow> </msub> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow>
其中S为所述边界补充的数量,T代表所述预设跨层层数中池化层的总数量,数组Lt代表所述预设跨层层数中第t个池化层的倍数,索引号是t,t=1~T;数组Ni代表所述预设跨层层数中第i-1次到第i次池化层之间的卷积层的数量,索引号是i,i=1~T;二维数组Kij代表所述预设跨层层数中第i-1次到第i次池化层之间的第j个卷积层的卷积核尺寸,j为第i-1次到第i次池化层之间多个卷积层的索引号,j=1~Ni,对应的卷积核就是一个Kij*Kij矩阵,S、T、Lt、Ni、Kij均为大于0的整数。
6.如权利要求5所述的方法,其特征在于,所述根据所述预设跨层层数与所述预设卷积核尺寸通过下式计算出所述边界补充的数量之后,所述方法还包括:
根据所述边界补充的数量对R*C矩阵待拆分map进行边界补充,以获得R0*C0矩阵待拆分map;
将所述R0*C0矩阵待拆分map按照预设拆分方式拆分为a*b个子map;
其中R0=R+S,C0=C+S,R为所述R*C矩阵待拆分map的行数数,C为R*C矩阵待拆分map的列数数,R0为所述R0*C0矩阵待拆分map的行数,C0为所述R0*C0矩阵待拆分map的列数。
7.如权利要求6所述的方法,其特征在于,
所述将所述R0*C0矩阵待拆分map按照预设拆分方式拆分为a*b个子map具体包括:
当所述预设拆分方式是均匀拆分时,获取r*c矩阵子map的预设尺寸r和c,a=R/r,b=C/c,其中R为所述R*C矩阵待拆分map的行数,C为R*C矩阵待拆分map的列数;r为所述r*c矩阵子map的行数,c为所述r*c矩阵子map的列数;
当所述预设拆分方式是非均匀拆分时,a=up(R/r),b=up(C/c);所述a*b个子map中处于第a行且在第1至第b-1列的子map的尺寸为[R-r*down(R/r)]*c;所述a*b个子map中处于第1至第a-1行且在第b列的子map的尺寸为r*[C-c*down(C/c)];所述a*b个子map中处于第a行且在第b列的子map尺寸为[R-r*down(R/r)]*[C-c*down(C/c)];所述a*b个子map中除了处于在第a行和/或在第b列之外的子map的尺寸为r*c;
其中up(x)代表对括号里的实数x做向上取整操作,down(x)代表对括号里的实数x做向下取整操作;R为所述R*C矩阵待拆分map的行数,C为R*C矩阵待拆分map的列数;r为所述r*c矩阵子map的行数,c为所述r*c矩阵子map的列数,a、b、R、C、r和c为正整数。
8.如权利要求7所述的方法,其特征在于,所述判断所述待拆map是否需要进行边界补充之后,所述方法还包括:
当所述卷积和池化操作不需要边界补充时,将所述R*C矩阵待拆分map按照所述预设拆分方式拆分为a*b个所述子map;
当所述预设拆分方式是均匀拆分时,获取r*c矩阵子map的预设尺寸r和c,a=R/r,b=C/c,其中R为所述R*C矩阵待拆分map的行数,C为R*C矩阵待拆分map的列数;r为所述r*c矩阵子map的行数,c为所述r*c矩阵子map的列数;
当所述预设拆分方式是非均匀拆分时,a=up(R/r),b=up(C/c);所述a*b个子map中处于第a行且在第1至第b-1列的子map的尺寸为[R-r*down(R/r)]*c;所述a*b个子map中处于第1至第a-1行且在第b列的子map的尺寸为r*[C-c*down(C/c)];所述a*b个子map中处于第a行且在第b列的子map尺寸为[R-r*down(R/r)]*[C-c*down(C/c)];所述a*b个子map中除了处于在第a行和/或在第b列之外的子map的尺寸为r*c;
其中up(x)代表对括号里的实数x做向上取整操作,down(x)代表对括号里的实数x做向下取整操作;R为所述R*C矩阵待拆分map的行数,C为R*C矩阵待拆分map的列数;r为所述r*c矩阵子map的行数,c为所述r*c矩阵子map的列数,a、b、R、C、r和c为正整数。
9.一种卷积神经网络的加速运算服务器,其特征在于,所述卷积神经网络的加速运算服务器包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的卷积神经网络的加速运算程序,所述卷积神经网络的加速运算程序配置为实现如权利要求1至8中任一项所述的卷积神经网络的加速运算方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有卷积神经网络的加速运算程序,所述卷积神经网络的加速运算程序被处理器执行时实现如权利要求1至8中任一项所述的卷积神经网络的加速运算方法的步骤。
CN201710544330.0A 2017-07-05 2017-07-05 卷积神经网络的加速运算方法、服务器及存储介质 Active CN107451654B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710544330.0A CN107451654B (zh) 2017-07-05 2017-07-05 卷积神经网络的加速运算方法、服务器及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710544330.0A CN107451654B (zh) 2017-07-05 2017-07-05 卷积神经网络的加速运算方法、服务器及存储介质

Publications (2)

Publication Number Publication Date
CN107451654A true CN107451654A (zh) 2017-12-08
CN107451654B CN107451654B (zh) 2021-05-18

Family

ID=60488325

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710544330.0A Active CN107451654B (zh) 2017-07-05 2017-07-05 卷积神经网络的加速运算方法、服务器及存储介质

Country Status (1)

Country Link
CN (1) CN107451654B (zh)

Cited By (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107844828A (zh) * 2017-12-18 2018-03-27 北京地平线信息技术有限公司 神经网络中的卷积计算方法和电子设备
CN108074211A (zh) * 2017-12-26 2018-05-25 浙江大华技术股份有限公司 一种图像处理装置及方法
CN108122031A (zh) * 2017-12-20 2018-06-05 杭州国芯科技股份有限公司 一种低功耗的神经网络加速器架构
CN108364320A (zh) * 2018-03-29 2018-08-03 深圳市自行科技有限公司 摄像头标定方法、终端设备及计算机可读存储介质
CN108647776A (zh) * 2018-05-08 2018-10-12 济南浪潮高新科技投资发展有限公司 一种卷积神经网络卷积膨胀处理电路及方法
CN109146065A (zh) * 2018-09-30 2019-01-04 中国人民解放军战略支援部队信息工程大学 二维数据的卷积运算方法及装置
CN109313663A (zh) * 2018-01-15 2019-02-05 深圳鲲云信息科技有限公司 人工智能计算辅助处理装置、方法、存储介质、及终端
CN109313723A (zh) * 2018-01-15 2019-02-05 深圳鲲云信息科技有限公司 人工智能卷积处理方法、装置、可读存储介质、及终端
CN109509475A (zh) * 2018-12-28 2019-03-22 出门问问信息科技有限公司 语音识别的方法、装置、电子设备及计算机可读存储介质
CN109615059A (zh) * 2018-11-06 2019-04-12 海南大学 一种卷积神经网络中边缘填充和滤波器膨胀运算方法及***
CN109886390A (zh) * 2019-01-10 2019-06-14 平安科技(深圳)有限公司 卷积神经网络模型优化方法、装置、计算机设备及存储介质
CN109886400A (zh) * 2019-02-19 2019-06-14 合肥工业大学 基于卷积核拆分的卷积神经网络硬件加速器***及其计算方法
CN110321064A (zh) * 2018-03-30 2019-10-11 北京深鉴智能科技有限公司 用于神经网络的计算平台实现方法及***
CN110321999A (zh) * 2018-03-30 2019-10-11 北京深鉴智能科技有限公司 神经网络计算图优化方法
CN110321998A (zh) * 2018-03-31 2019-10-11 北京深鉴智能科技有限公司 卷积神经网络实现方法、装置、加速设备、存储介质
CN110533666A (zh) * 2018-05-25 2019-12-03 杭州海康威视数字技术股份有限公司 一种获取数据块尺寸的方法、处理数据的方法及装置
WO2020042739A1 (zh) * 2018-08-28 2020-03-05 中科寒武纪科技股份有限公司 数据预处理方法、装置、计算机设备和存储介质
CN110865792A (zh) * 2018-08-28 2020-03-06 中科寒武纪科技股份有限公司 数据预处理方法、装置、计算机设备和存储介质
CN110865950A (zh) * 2018-08-28 2020-03-06 中科寒武纪科技股份有限公司 数据预处理方法、装置、计算机设备和存储介质
CN111738424A (zh) * 2020-06-29 2020-10-02 湖南国科微电子股份有限公司 神经网络处理方法、装置、电子设备及存储介质
CN112862100A (zh) * 2021-01-29 2021-05-28 网易有道信息技术(北京)有限公司 用于优化神经网络模型推理的方法及设备
CN112925619A (zh) * 2021-02-24 2021-06-08 深圳依时货拉拉科技有限公司 大数据实时计算方法及平台
CN113807489A (zh) * 2020-06-17 2021-12-17 安徽寒武纪信息科技有限公司 用于执行反卷积操作的方法、板卡及其计算装置
CN114070675A (zh) * 2020-08-05 2022-02-18 展讯半导体(南京)有限公司 Ai网络模型匹配方法及装置、存储介质、用户设备
US11397579B2 (en) 2018-02-13 2022-07-26 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
US11442786B2 (en) 2018-05-18 2022-09-13 Shanghai Cambricon Information Technology Co., Ltd Computation method and product thereof
US11513586B2 (en) 2018-02-14 2022-11-29 Shanghai Cambricon Information Technology Co., Ltd Control device, method and equipment for processor
US11544059B2 (en) 2018-12-28 2023-01-03 Cambricon (Xi'an) Semiconductor Co., Ltd. Signal processing device, signal processing method and related products
US11609760B2 (en) 2018-02-13 2023-03-21 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11630666B2 (en) 2018-02-13 2023-04-18 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11676029B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
US11675676B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
US11703939B2 (en) 2018-09-28 2023-07-18 Shanghai Cambricon Information Technology Co., Ltd Signal processing device and related products
US11762690B2 (en) 2019-04-18 2023-09-19 Cambricon Technologies Corporation Limited Data processing method and related products
US11789847B2 (en) 2018-06-27 2023-10-17 Shanghai Cambricon Information Technology Co., Ltd On-chip code breakpoint debugging method, on-chip processor, and chip breakpoint debugging system
US11847554B2 (en) 2019-04-18 2023-12-19 Cambricon Technologies Corporation Limited Data processing method and related products
US11874898B2 (en) 2018-01-15 2024-01-16 Shenzhen Corerain Technologies Co., Ltd. Streaming-based artificial intelligence convolution processing method and apparatus, readable storage medium and terminal
US12001955B2 (en) 2019-08-23 2024-06-04 Anhui Cambricon Information Technology Co., Ltd. Data processing method, device, computer equipment and storage medium

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106228240A (zh) * 2016-07-30 2016-12-14 复旦大学 基于fpga的深度卷积神经网络实现方法
CN106447030A (zh) * 2016-08-30 2017-02-22 深圳市诺比邻科技有限公司 卷积神经网络的计算资源优化方法及***
CN106709441A (zh) * 2016-12-16 2017-05-24 北京工业大学 一种基于卷积定理的人脸验证加速方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106228240A (zh) * 2016-07-30 2016-12-14 复旦大学 基于fpga的深度卷积神经网络实现方法
CN106447030A (zh) * 2016-08-30 2017-02-22 深圳市诺比邻科技有限公司 卷积神经网络的计算资源优化方法及***
CN106709441A (zh) * 2016-12-16 2017-05-24 北京工业大学 一种基于卷积定理的人脸验证加速方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
林辉煌: "基于预决策的卷积神经网络加速研究", 《中国优秀硕士学位论文全文数据库(电子期刊)》 *

Cited By (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
CN107844828A (zh) * 2017-12-18 2018-03-27 北京地平线信息技术有限公司 神经网络中的卷积计算方法和电子设备
CN108122031A (zh) * 2017-12-20 2018-06-05 杭州国芯科技股份有限公司 一种低功耗的神经网络加速器架构
CN108122031B (zh) * 2017-12-20 2020-12-15 杭州国芯科技股份有限公司 一种低功耗的神经网络加速器装置
CN108074211A (zh) * 2017-12-26 2018-05-25 浙江大华技术股份有限公司 一种图像处理装置及方法
CN108074211B (zh) * 2017-12-26 2021-03-16 浙江芯昇电子技术有限公司 一种图像处理装置及方法
US11874898B2 (en) 2018-01-15 2024-01-16 Shenzhen Corerain Technologies Co., Ltd. Streaming-based artificial intelligence convolution processing method and apparatus, readable storage medium and terminal
CN109313663B (zh) * 2018-01-15 2023-03-31 深圳鲲云信息科技有限公司 人工智能计算辅助处理装置、方法、存储介质、及终端
CN109313723B (zh) * 2018-01-15 2022-03-15 深圳鲲云信息科技有限公司 人工智能卷积处理方法、装置、可读存储介质、及终端
CN109313663A (zh) * 2018-01-15 2019-02-05 深圳鲲云信息科技有限公司 人工智能计算辅助处理装置、方法、存储介质、及终端
CN109313723A (zh) * 2018-01-15 2019-02-05 深圳鲲云信息科技有限公司 人工智能卷积处理方法、装置、可读存储介质、及终端
US11507370B2 (en) 2018-02-13 2022-11-22 Cambricon (Xi'an) Semiconductor Co., Ltd. Method and device for dynamically adjusting decimal point positions in neural network computations
US11397579B2 (en) 2018-02-13 2022-07-26 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11740898B2 (en) 2018-02-13 2023-08-29 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11709672B2 (en) 2018-02-13 2023-07-25 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11704125B2 (en) 2018-02-13 2023-07-18 Cambricon (Xi'an) Semiconductor Co., Ltd. Computing device and method
US11663002B2 (en) 2018-02-13 2023-05-30 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11630666B2 (en) 2018-02-13 2023-04-18 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11620130B2 (en) 2018-02-13 2023-04-04 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11720357B2 (en) 2018-02-13 2023-08-08 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11609760B2 (en) 2018-02-13 2023-03-21 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11513586B2 (en) 2018-02-14 2022-11-29 Shanghai Cambricon Information Technology Co., Ltd Control device, method and equipment for processor
CN108364320A (zh) * 2018-03-29 2018-08-03 深圳市自行科技有限公司 摄像头标定方法、终端设备及计算机可读存储介质
CN108364320B (zh) * 2018-03-29 2021-12-21 深圳市自行科技有限公司 摄像头标定方法、终端设备及计算机可读存储介质
CN110321999A (zh) * 2018-03-30 2019-10-11 北京深鉴智能科技有限公司 神经网络计算图优化方法
CN110321999B (zh) * 2018-03-30 2021-10-01 赛灵思电子科技(北京)有限公司 神经网络计算图优化方法
CN110321064A (zh) * 2018-03-30 2019-10-11 北京深鉴智能科技有限公司 用于神经网络的计算平台实现方法及***
CN110321998A (zh) * 2018-03-31 2019-10-11 北京深鉴智能科技有限公司 卷积神经网络实现方法、装置、加速设备、存储介质
CN110321998B (zh) * 2018-03-31 2022-06-14 赛灵思公司 卷积神经网络实现方法、装置、加速设备、存储介质
CN108647776A (zh) * 2018-05-08 2018-10-12 济南浪潮高新科技投资发展有限公司 一种卷积神经网络卷积膨胀处理电路及方法
US11442785B2 (en) 2018-05-18 2022-09-13 Shanghai Cambricon Information Technology Co., Ltd Computation method and product thereof
US11442786B2 (en) 2018-05-18 2022-09-13 Shanghai Cambricon Information Technology Co., Ltd Computation method and product thereof
CN110533666A (zh) * 2018-05-25 2019-12-03 杭州海康威视数字技术股份有限公司 一种获取数据块尺寸的方法、处理数据的方法及装置
US11789847B2 (en) 2018-06-27 2023-10-17 Shanghai Cambricon Information Technology Co., Ltd On-chip code breakpoint debugging method, on-chip processor, and chip breakpoint debugging system
US11243895B2 (en) 2018-08-28 2022-02-08 Cambricon Technologies Corporation Limited Data pre-processing method and device, and related computer device and storage medium
CN110865950A (zh) * 2018-08-28 2020-03-06 中科寒武纪科技股份有限公司 数据预处理方法、装置、计算机设备和存储介质
US11966583B2 (en) 2018-08-28 2024-04-23 Cambricon Technologies Corporation Limited Data pre-processing method and device, and related computer device and storage medium
WO2020042739A1 (zh) * 2018-08-28 2020-03-05 中科寒武纪科技股份有限公司 数据预处理方法、装置、计算机设备和存储介质
CN110865792A (zh) * 2018-08-28 2020-03-06 中科寒武纪科技股份有限公司 数据预处理方法、装置、计算机设备和存储介质
CN112732601A (zh) * 2018-08-28 2021-04-30 中科寒武纪科技股份有限公司 数据预处理方法、装置、计算机设备和存储介质
CN110865792B (zh) * 2018-08-28 2021-03-19 中科寒武纪科技股份有限公司 数据预处理方法、装置、计算机设备和存储介质
CN110865950B (zh) * 2018-08-28 2021-01-12 中科寒武纪科技股份有限公司 数据预处理方法、装置、计算机设备和存储介质
JP2020533659A (ja) * 2018-08-28 2020-11-19 カンブリコン テクノロジーズ コーポレイション リミティド データ前処理方法、装置、コンピュータ機器及び記憶媒体
US11703939B2 (en) 2018-09-28 2023-07-18 Shanghai Cambricon Information Technology Co., Ltd Signal processing device and related products
CN109146065A (zh) * 2018-09-30 2019-01-04 中国人民解放军战略支援部队信息工程大学 二维数据的卷积运算方法及装置
CN109146065B (zh) * 2018-09-30 2021-06-08 中国人民解放军战略支援部队信息工程大学 二维数据的卷积运算方法及装置
CN109615059A (zh) * 2018-11-06 2019-04-12 海南大学 一种卷积神经网络中边缘填充和滤波器膨胀运算方法及***
CN109509475A (zh) * 2018-12-28 2019-03-22 出门问问信息科技有限公司 语音识别的方法、装置、电子设备及计算机可读存储介质
CN109509475B (zh) * 2018-12-28 2021-11-23 出门问问信息科技有限公司 语音识别的方法、装置、电子设备及计算机可读存储介质
US11544059B2 (en) 2018-12-28 2023-01-03 Cambricon (Xi'an) Semiconductor Co., Ltd. Signal processing device, signal processing method and related products
WO2020143302A1 (zh) * 2019-01-10 2020-07-16 平安科技(深圳)有限公司 卷积神经网络模型优化方法、装置、计算机设备及存储介质
CN109886390B (zh) * 2019-01-10 2023-11-24 平安科技(深圳)有限公司 卷积神经网络模型优化方法、装置、计算机设备及存储介质
CN109886390A (zh) * 2019-01-10 2019-06-14 平安科技(深圳)有限公司 卷积神经网络模型优化方法、装置、计算机设备及存储介质
CN109886400A (zh) * 2019-02-19 2019-06-14 合肥工业大学 基于卷积核拆分的卷积神经网络硬件加速器***及其计算方法
US11934940B2 (en) 2019-04-18 2024-03-19 Cambricon Technologies Corporation Limited AI processor simulation
US11847554B2 (en) 2019-04-18 2023-12-19 Cambricon Technologies Corporation Limited Data processing method and related products
US11762690B2 (en) 2019-04-18 2023-09-19 Cambricon Technologies Corporation Limited Data processing method and related products
US11676028B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
US11675676B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
US11676029B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
US12001955B2 (en) 2019-08-23 2024-06-04 Anhui Cambricon Information Technology Co., Ltd. Data processing method, device, computer equipment and storage medium
CN113807489B (zh) * 2020-06-17 2024-04-02 安徽寒武纪信息科技有限公司 用于执行反卷积操作的方法、板卡及其计算装置
CN113807489A (zh) * 2020-06-17 2021-12-17 安徽寒武纪信息科技有限公司 用于执行反卷积操作的方法、板卡及其计算装置
CN111738424B (zh) * 2020-06-29 2023-12-26 湖南国科微电子股份有限公司 神经网络处理方法、装置、电子设备及存储介质
CN111738424A (zh) * 2020-06-29 2020-10-02 湖南国科微电子股份有限公司 神经网络处理方法、装置、电子设备及存储介质
CN114070675A (zh) * 2020-08-05 2022-02-18 展讯半导体(南京)有限公司 Ai网络模型匹配方法及装置、存储介质、用户设备
CN112862100A (zh) * 2021-01-29 2021-05-28 网易有道信息技术(北京)有限公司 用于优化神经网络模型推理的方法及设备
CN112925619A (zh) * 2021-02-24 2021-06-08 深圳依时货拉拉科技有限公司 大数据实时计算方法及平台

Also Published As

Publication number Publication date
CN107451654B (zh) 2021-05-18

Similar Documents

Publication Publication Date Title
CN107451654A (zh) 卷积神经网络的加速运算方法、服务器及存储介质
CN107451653A (zh) 深度神经网络的计算方法、装置及可读存储介质
Fumagalli Twenty theses on contemporary capitalism (cognitive biocapitalism)
CN107679522A (zh) 基于多流lstm的动作识别方法
JP2020524858A (ja) セマンティックセグメンテーションモデルの訓練方法、装置、コンピュータデバイス、プログラム及び記憶媒体
CN107704563A (zh) 一种问句推荐方法及***
CN107578098A (zh) 基于脉动阵列的神经网络处理器
CN110033086A (zh) 用于神经网络卷积运算的硬件加速器
CN103810150A (zh) 关系可嵌套的问卷自动生成方法和装置
CN107341548A (zh) 一种数据处理方法、装置及电子设备
CN109597965A (zh) 基于深度神经网络的数据处理方法、***、终端及介质
CN110163269A (zh) 基于深度学习的模型生成方法、装置和计算机设备
CN110399211A (zh) 机器学习的分配***、方法及装置、计算机设备
CN112215350A (zh) 一种基于强化学习的智能体控制方法及装置
CN110046705A (zh) 用于卷积神经网络的装置
CN110059805A (zh) 用于二值阵列张量处理器的方法
CN110379475A (zh) 基于电子病历完善临床指南的方法、装置及存储介质
CN108875917A (zh) 一种用于卷积神经网络处理器的控制方法及装置
CN109857861A (zh) 基于卷积神经网络的文本分类方法、装置、服务器及介质
CN110009644B (zh) 一种特征图行像素分段的方法和装置
CN108985449A (zh) 一种对卷积神经网络处理器的控制方法及装置
Duan et al. The innovative model of artificial intelligence computer education under the background of educational innovation
CN109271897A (zh) 人脸动作单元检测方法、装置、计算机设备及存储介质
CN103871086B (zh) 基于fpga构建的分层次栅格转矢量处理方法
Norval The politics of ethnicity and identity

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