人工智能计算装置及相关产品的制作方法

文档序号:18145000发布日期:2019-07-10 11:35阅读:188来源:国知局
人工智能计算装置及相关产品的制作方法

本申请涉及人工智能技术领域,具体涉及一种人工智能计算装置及相关产品。



背景技术:

当今,人工智能技术不断的发展并应用在了越来越多的领域。传统的使用软件来实现人工智能算法的方式在一些高要求的场景下已经无法满足用户需求。因此必须使用特定的硬件对人工智能(ai)算法进行实现以及加速。这样就要求硬件能够尽可能多的支持ai算法的一些基本操作,这些基本的操作中有一类叫做反卷积de-convolution。

反卷积操作要求对特征图(featuremap)按照特定的规律进行插0膨胀。传统的使用软件方式进行膨胀的方案效率太低,而且膨胀之后的数据需要存回内存,这样也会占用大量的存储空间,同时对系统带宽也会有不小的压力。

申请内容

本申请实施例提供了一种人工智能计算装置及相关产品,对特征图进行插0膨胀,并在膨胀之后,直接送往对应的卷积运算单元进行计算。此方案大大提高了反卷积操作的效率,同时节省了内存的用量以及系统带宽的优点。

第一方面,本申请实施例提供一种神经网络芯片,所述神经网络芯片包括:存储器、数据读取电路和卷积计算电路,其中,

所述存储器,用于存储特征图;

所述数据读取电路,用于从所述存储器内读取特征图、,并根据配置信息对所述特征图执行膨胀插零操作后,发送给卷积计算电路;

所述卷积计算电路,用于对该膨胀插零操作后的数据执行卷积计算以完成反卷积操作。

可选的,所述数据读取电路,用于周期性的从所述存储器读取特征图的设定数量数据,对该设定数量数据执行膨胀插零后输入到卷积计算电路;

所述卷积计算电路,用于对该设定数量数据执行卷积运算。

可选的,所述数据读取电路包括:数据读取模块、先入先出命令模块、命令读取控制模块、命令缓存器、输出命令和先入先出模块、输入数据先入先出模块、数据缓存器和输出数据先入先出模块;

所述数据读取模块,用于对所述配置信息向所述存储器发送特征图的读取请求读取所述特征图;将所述特征图的配置信息发送至所述先入先出命令模块;

所述先入先出命令模块,用于存储所述特征图的配置信息,

所述输入数据先入先出模块,用于存储特征图的数据;

所述命令读取控制模块,用于检测所述先入先出命令模块非空时,将所述配置信息进行译码得到译码信息,检测所述输入数据先入先出模块的状态,如输入数据先入先出模块的状态为非空时,将输入数据先入先出模块存储的特征图的数据读出并存入到数据缓存器;将所述译码信息存入到命令缓存器;

所述命令读取控制模块,从数据缓存器读取m个数据,对m个数据执行右对齐操作,将对齐操作后的第二数据存入到另一数据缓存器,将所述第二数据对应的第二译码信息存入到另一命令缓存器,所述m为正整数且小于设定数量;

所述命令读取控制模块,用于依据所述另一命令缓存器内存储的第二译码信息对所述另一数据缓存器内的第二数据执行第一方向的插零膨胀得到第一膨胀结果,将所述第一膨胀结果存入到输出数据先入先出模块;

所述命令读取控制模块,用于依据所述第二译码信息对所述第一膨胀结果执行第二方向的插零膨胀得到第二膨胀结果,将所述第二膨胀结果输出给所述卷积运算单元。

可选的,所述第一方向为水平方向,所述第二方向为垂直方向;

或所述第一方向为垂直方向,所述第二方向为水平方向。

第二方面,提供一种应用神经网络芯片执行反卷积操作方法,所述神经网络芯片包括:存储器、数据读取电路和卷积计算电路,其中,

从所述存储器内读取特征图,并根据配置信息对所述特征图执行膨胀插零操作后得到最终膨胀结果;

对该最终膨胀结果执行卷积计算以完成反卷积操作。

可选的,所述从所述存储器内读取特征图,包括:

周期性的从所述存储器读取特征图的设定数量数据。

可选的,所述数据读取电路还包括:命令先入先出模块、输入数据先入先出模块、输出数据先入先出模块、数据缓存器和命令缓存器;所述根据配置信息对所述特征图执行膨胀插零操作后得到最终膨胀结果,包括:

对所述配置信息向所述存储器发送特征图的读取请求读取所述特征图;将所述特征图的配置信息发送至命令先入先出模块存储;

检测所述命令先入先出模块非空时,将所述配置信息进行译码得到译码信息,检测所述输入数据先入先出模块的状态,如输入数据先入先出模块的状态为非空时,将输入数据先入先出模块存储的特征图的数据读出并存入到数据缓存器;将所述译码信息存入到命令缓存器;

从数据缓存器读取m个数据,对m个数据执行右对齐操作,将对右对齐操作后的第二数据存入到另一数据缓存器,将所述第二数据对应的第二译码信息存入到另一命令缓存器,所述m取值为正整数且小于设定数量;

所依据所述另一命令缓存器内存储的第二译码信息对所述第二数据执行第一方向的插零膨胀得到第一膨胀结果,将所述第一膨胀结果存入到输出数据先入先出模块;

依据所述第二译码信息对所述第一膨胀结果执行第二方向的插0膨胀得到最终膨胀结果。

可选的,所述第一方向为水平方向,所述第二方向为垂直方向;

或所述第一方向为垂直方向,所述第二方向为水平方向。

第三方面,提供一种电子装置,所述电子装置包括第二方面提供的计算装置。

第四方面,提供一种计算机可读存储介质,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如第一方面提供的方法。

第五方面,提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行第一方面提供的方法。

实施本申请实施例,具有如下有益效果:

可以看出,本申请提供的技术方案能够根据配置信息自动对特征图进行插零膨胀。增加了数据读取电路直接对特征图提取数据并且执行插零膨胀,插零膨胀后的数据直接输入到卷积计算电路执行卷积运算,所以中间数据无需存储至内存,节省了内存用量,所以其通过增加该硬件模块提高了反卷积操作的效率,同时节省了内存的用量以及系统带宽。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是一种电子装置的结构示意图。

图2是一种神经网络芯片的结构示意图。

图3是本发明提供的一种数据读取电路的结构示意图。

图4是本申请实施例公开的一种应用神经网络芯片执行反卷积操作方法的流程示意图。

图4a是本申请实施例公开的一种神经网络芯片的示意图。

图5是本申请实施例公开的一种电子装置的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

本申请中的电子装置可以包括:服务器、智能摄像设备、智能手机(如android手机、ios手机、windowsphone手机等)、平板电脑、掌上电脑、笔记本电脑、移动互联网设备(mid,mobileinternetdevices)或穿戴式设备等,上述电子装置仅是举例,而非穷举,包含但不限于上述电子装置,为了描述的方便,下面实施例中将上述电子装置称为用户设备(userequipment,ue)、终端或电子设备。当然在实际应用中,上述用户设备也不限于上述变现形式,例如还可以包括:智能车载终端、计算机设备等等。

对于上述电子装置,其结构如图1所示,具体的,其可以包括:处理器101、存储器102、神经网络芯片103,其中处理器101与存储器102以及神经网络芯片103之间连接,具体的在一种可选的技术方案中,上述神经网络芯片103可以集成在处理器101内。存储器102可以包括:闪存盘、只读存储器(英文:read-onlymemory,简称:rom)、随机存取器(英文:randomaccessmemory,简称:ram)等。本发明的技术方案并不局限上述神经网络芯片103是单独设置还是集成在处理器101内。

参阅图2,图2提供了一种神经网络芯片的结构示意图,如图2所示,该芯片可以包括:存储器(memory)、数据读取电路(dataloadunit)和卷积计算电路(convolutioncalculateunit),数据读取模块(datareadfsm)从内存读取特征图数据,并根据配置信息对特征图数据进行膨胀插0之后,直接送给卷积计算电路进行计算以完成反卷积操作。每个周期数据读取电路从内存读取设定数量数据,经过膨胀插0之后,保证每个周期向卷积计算电路输送设定数量数据用于计算。上述n的取值范围可以为大于等于2的整数。

参阅图3,图3表示了整个数据读取电路的具体硬件架构。整个数据读取电路进行数据读取以及膨胀的处理流程如下:

数据读取模块(datareadfsm)首先对配置信息进行译码,并根据译码信息向存储器发出每个特征图的读请求。(具体的,根据特征图的规格可能通过一个或多个读请求才能够将特征图全部读回)。数据读取模块需要的配置信息包括但不限于:特征图的规格(宽、高)、特征图的个数、对特征图进行插0膨胀的方式。其中对特征图进行插0膨胀的方式包括单不限于:特征图第一行前面插入几行0,最后一行后面插入几行0,第一列前面插入几列0,最后一列后面插入几列0,每行的每个数据后面插入几个0。

数据读取模块向存储器发出特征图的读请求之后,需要将每个特征图的配置信息存入先入先出命令模块(commandfifo)中。当特征图的数据从存储器返回数据承载单元(数据读取电路)之后,会将数据存入输入数据先入先出模块(inputdatafifo),每个周期存入输入数据先入先出模块的数据个数是设定数量(为了方便说明,这里以设定数量=28为例,当然在实际应用中,也可以取其他的值,例如29、30、26、27等等)。

当命令读取控制(commandreadcontrol)逻辑检测到先入先出命令模块非空之后,将先入先出命令模块中存储的特征图的配置信息读出并译码,检测输入数据先入先出模块的状态,如果输入数据先入先出模块为非空,表示特征图的数据已经从存储器读回数据读取电路。此时需要将输入数据先入先出模块中的数据读出并存入数据缓冲器(databuf)0或数据缓冲器1中,同时将对应特征图相关的译码信息存入命令缓存器(cmdbuf0)和命令缓冲器1中。其中特征图相关的译码信息包括:数据缓冲器0/1中数据的插0膨胀方式、数据缓冲器0/1中数据在特征图中的位置信息。

数据缓冲器0和数据缓冲器1是两个乒乓缓存器,它们对应的特征图相关译码信息分别存储在命令缓冲器0和命令缓冲器1中。

数据缓冲器0和数据缓冲器1中数据准备好之后,需要根据命令缓冲器0和命令缓冲器1中的信息对数据缓冲器0和数据缓冲器1中的数据进行读取并进行对齐操作。之所以要进行对齐操作,是因为只需要在数据膨胀之后,每个周期需要给卷积计算电路卷积计算电路提供28个数据,因此并不需要每个周期都从数据缓冲器0和数据缓冲器1中取出28个数据。假设每个周期从数据缓冲器0/1中读取m个数据,那么这m个数据可能位于数据缓冲器0/1中的任何位置,所以需要将这m个数据进行右对齐操作。m的选取可以根据每个feature插0膨胀的具体要求提前计算好,只要保证数据膨胀之后,每个周期能够提供28个数据就可以保证流水线不断流。

对齐操作完成之后,将数据存入数据缓冲器_2中,同时将数据对应的特征图信息存入命令缓冲器_2中,准备进行水平方向的插0膨胀操作。

数据缓冲器_2中的数据准备好之后,就可以根据存储在命令缓冲器_2中的特征图的插0膨胀信息、以及数据缓冲器_2中的数据在特征图中的位置信息进行水平方向的插0膨胀。并将水平膨胀之后的结果存入输出数据先入先出模块(outputdatafifo)中。同时在每个特征图进行水平膨胀之前将其对应的特征图信息存入输出数据先入先出模块中。

当先入先出命令模块非空之后,首先从先入先出命令模块中读出特征图相关的信息,根据特征图相关信息对输出数据先入先出模块进行读操作,并进行垂直方向的插0膨胀操作,并将最终的结果送给卷积计算电路。

本申请提供的技术方案能够根据配置信息自动对特征图进行插零膨胀。增加了数据读取电路直接对特征图提取数据并且执行插零膨胀,插零膨胀后的数据直接输入到卷积计算电路执行卷积运算,所以中间数据无需存储至内存,节省了内存用量,所以其通过增加该硬件模块提高了反卷积操作的效率,同时节省了内存的用量以及系统带宽。

参阅图4,图4提供一种应用神经网络芯片执行反卷积操作方法,所述神经网络芯片如图4a所示,包括:存储器、数据读取电路和卷积计算电路,该方法包括如下步骤:

步骤s401、从所述存储器内读取所述存储器内的特征图,并根据配置信息对所述特征图执行膨胀插零操作后得到最终膨胀结果;

步骤s402、对该最终膨胀结果执行卷积计算以完成反卷积操作。

可选的,所述从所述存储器内读取所述存储器内的特征图,包括:

周期性的从所述存储器读取特征图的设定数量数据。

可选的,所述数据读取电路还包括:命令先入先出模块先入先出命令模块、输入数据先入先出模块输入数据先入先出模块、输出数据先入先出模块、数据缓存器和命令缓存器;所述根据配置信息对所述特征图执行膨胀插零操作后得到最终膨胀结果,包括:

对所述配置信息向所述存储器发送特征图的读取请求读取所述特征图;将所述配置信息发送至先入先出命令模块存储;

检测所述先入先出命令模块非空时,将所述配置信息进行译码得到译码信息,检测所述输入数据先入先出模块的状态,如输入数据先入先出模块的状态为非空时,将输入数据先入先出模块存储的特征图的数据读出并存入到数据缓存器;将所述译码信息存入到命令缓存器;

从数据缓存器读取m个数据,对m个数据执行右对齐操作,将对右对齐操作后的第二数据存入到另一数据缓存器,将所述第二数据对应的第二译码信息存入到另一命令缓存器;

所依据所述另一命令缓存器内存储的第二译码信息对所述第二数据执行第一方向的插0膨胀得到第一膨胀结果,将所述第一膨胀结果存入到输出数据先入先出模块;

依据所述第二译码信息对所述第一膨胀结果执行第二方向的插0膨胀得到最终膨胀结果。

可选的,所述第一方向为水平方向,所述第二方向为垂直方向;

或所述第一方向为垂直方向,所述第二方向为水平方向。

如图5所示,本申请实施例还提供一种电子装置,该电子装置包括上述神经网络芯片。

本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种应用神经网络芯片执行反卷积操作方法的部分或全部步骤。

本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种应用神经网络芯片执行反卷积操作方法的部分或全部步骤。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。

所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:read-onlymemory,简称:rom)、随机存取器(英文:randomaccessmemory,简称:ram)、磁盘或光盘等。

以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1