掌桥专利:专业的专利平台
掌桥专利
首页

一种卷积神经网络加速方法及系统

文献发布时间:2023-06-19 09:44:49


一种卷积神经网络加速方法及系统

技术领域

本发明涉及软件技术领域,尤指一种卷积神经网络加速方法及系统。

背景技术

卷积神经网络作为深度学习领域中热门的网络结构,目前已广泛应用在计算机视觉领域与语言处理领域,随着卷积神经网络的层数与神经元个数的增加,模型的计算复杂度与参数数量随之增加。卷积是神经网络的基本运算,其中卷积核可以在输入数据上滑动进行卷积计算输出新的数据。

目前,传统的硬件平台因每一层的参数结构不同,对于存储器的访问较为单一,无法利用卷积神经网络的数据的复用性,数据的重复输入导致访问存储器的次数大大增加,进而导致卷积神经网络加速系统的功耗大大增加。

因此,如何充分利用卷积神经网络的数据的复用性,降低系统的功耗,是本领域技术人员亟待解决的技术问题。

发明内容

本发明实施例提供了一种卷积神经网络加速方法及系统,用以充分利用卷积神经网络的数据的复用性,降低系统的功耗。

第一方面,本发明实施例提供了一种卷积神经网络加速方法,包括:

在确定需要进行拆分重组处理时,分别对每个输入数据的多个数据通道中对应行的数据、以及每个参数数据的多个参数通道中对应行的数据进行拆分重组处理,分别得到与每个所述输入数据对应的至少一行第一数据、以及与每个所述参数数据对应的至少一行第二数据;其中,所述输入数据具有多个,每个所述输入数据具有多个数据通道,所述参数数据具有多个,每个所述参数数据具有多个参数通道,得到的每一行第一数据中包括多个所述数据通道对应行的数据,得到的每一行第二数据中包括多个所述参数通道对应行的数据;

将得到的不同行第一特定数据输出至不同PE单元中并进行计算;所述第一特定数据为所述第一数据和所述第二数据;

将各所述PE单元计算后的结果进行累加计算,生成输出数据。

可选地,分别对每个输入数据的多个数据通道中对应行的数据、以及每个参数数据的多个参数通道中对应行的数据进行拆分重组处理,具体包括:

提取任一个第二特定数据中的多个特定通道的对应的第i行数据;其中,所述第i行数据包括n个数据;

将各第i行数据中的第j个数据,按照对应的所述特定通道的编号依次顺序排列;

将各第i行数据中的第j+1个数据排布在各第i行数据中的第j个数据之后的位置;

其中,j大于0且小于或等于n;在所述第二特定数据为所述输入数据时,所述特定通道为数据通道;在所述第二特定数据为所述参数数据时,所述特定通道为参数通道。

可选地,确定是否需要进行拆分重组处理,具体包括:

判断所述数据通道和所述参数通道的数量、PE单元的数量、以及所述数据通道和所述参数通道的尺寸之间的关系是否满足预设条件;

若满足,则确定需要进行拆分重组处理;

若不满足,则确定不需要进行拆分重组处理。

可选地,所述预设条件为:所述卷积神经网络包括多层卷积,如果要完成每层卷积的计算,每个所述PE单元进行计算处理的次数不超过预设值。

可选地,得到的第二数据的行数根据所述PE单元内参数存储单元的存储空间确定,得到的第一数据的行数根据所述PE单元内数据存储单元的存储空间确定。

可选地,得到的第二数据的行数与得到的第一数据的行数相同。

可选地,得到的第二数据与得到的第一数据均为一行;

得到的该行第二数据中包括全部所述参数通道对应行的数据,得到的该行第一数据中包括全部所述数据通道对应行的数据。

可选地,在进行计算之前,该方法还包括:

确定与各所述第一特定数据对应的索引;

判断当前第一数据或当前第二数据对应的索引是否为预设值;

若是,则判断当前第一数据或当前第二数据为无效数据,且跳过该无效数据,继续判断下一个第一数据或下一个第二数据对应的索引是否为预设值;

若否,对当前第一数据和当前第二数据进行计算。

可选地,将得到的不同行第一特定数据输出至不同PE单元中并进行计算,具体包括:

将得到的不同行第一特定数据输出至不同PE单元中;

在所述参数数据为权值数据时,对所述第二数据和所述第一数据进行卷积计算;

或,在所述参数数据为偏置数据时,对所述第二数据和所述第一数据进行累加计算。

第二方面,本发明实施例提供了一种卷积神经网络加速系统,包括:

第一处理单元,用于在确定需要进行拆分重组处理时,分别对每个输入数据的多个数据通道中对应行的数据、以及每个参数数据的多个参数通道中对应行的数据进行拆分重组处理,分别得到与每个所述输入数据对应的至少一行第一数据、以及与每个所述参数数据对应的至少一行第二数据;其中,所述输入数据具有多个,每个所述输入数据具有多个数据通道,所述参数数据具有多个,每个所述参数数据具有多个参数通道,得到的每一行第一数据中包括多个所述数据通道对应行的数据,且得到的所述第一数据的行数小于所述数据通道的数量,得到的每一行第二数据中包括多个所述参数通道对应行的数据,且所述第二数据的行数小于所述参数通道的数量;

第二处理单元,用于将得到的不同行第一特定数据输出至不同PE单元中并进行计算;所述第一特定数据为所述第一数据和所述第二数据;将各所述PE单元计算后的结果进行累加计算,生成输出数据。

可选地,所述第一处理单元具体用于:

提取任一个第二特定数据中的多个特定通道的对应的第i行数据;其中,所述第i行数据包括n个数据;

将各第i行数据中的第j个数据,按照对应的所述特定通道的编号依次顺序排列;

将各第i行数据中的第j+1个数据排布在各第i行数据中的第j个数据之后的位置;

其中,j大于0且小于或等于n;在所述第二特定数据为所述输入数据时,所述特定通道为数据通道;在所述第二特定数据为所述参数数据时,所述特定通道为参数通道。

可选地,所述第一处理单元具体用于:

判断所述数据通道和所述参数通道的数量、PE单元的数量、以及所述数据通道和所述参数通道的尺寸之间的关系是否满足预设条件;

若满足,则确定需要进行拆分重组处理;

若不满足,则确定不需要进行拆分重组处理。

本发明有益效果如下:

本发明实施例提供的一种卷积神经网络加速方法及系统,在确定需要进行拆分重组处理时,通过对每个输入数据的多个数据通道中对应行的数据、以及每个参数数据的多个参数通道中对应行的数据,进行拆分重组处理,可以得到与每个输入数据对应的至少一行第一数据、以及与每个参数数据对应的至少一行第二数据。如此,可以将得到的不同行第一特定数据输出至不同PE单元中并进行计算,从而可以充分利用PE单元,避免每个PE单元进行多次操作,以减少PE单元与存储器之间的交互次数,在充分利用数据的复用性的同时,还可以降低系统的处理复杂度,降低系统功耗,提高系统工作效率。

附图说明

图1为本发明实施例中提供的一种卷积神经网络加速方法的流程图;

图2为本发明实施例中提供的一种PE单元的结构示意图;

图3为本发明实施例中提供的拆分重组的过程示意图;

图4为本发明实施例中提供的输入数据在经过ReLU激活前后的示意图;

图5为本发明实施例中提供的卷积计算过程示意图;

图6为本发明实施例中提供的池化计算过程示意图;

图7为本发明实施例中提供的一种卷积神经网络加速系统的结构示意图。

具体实施方式

下面将结合附图,对本发明实施例提供的一种卷积神经网络加速方法及系统的具体实施方式进行详细地说明。需要说明的是,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供了一种卷积神经网络加速方法,如图1所示,可以包括:

S101、在确定需要进行拆分重组处理时,分别对每个输入数据的多个数据通道中对应行的数据、以及每个参数数据的多个参数通道中对应行的数据进行拆分重组处理,分别得到与每个输入数据对应的至少一行第一数据、以及与每个参数数据对应的至少一行第二数据;

其中,输入数据具有多个,每个输入数据具有多个数据通道,参数数据具有多个,每个参数数据具有多个参数通道,得到的每一行第一数据中包括多个数据通道对应行的数据,且得到的第一数据的行数可以小于数据通道的数量,得到的每一行第二数据中包括多个参数通道对应行的数据,且第二数据的行数可以小于参数通道的数量。

S102、将得到的不同行第一特定数据输出至不同PE单元中并进行计算;其中,第一特定数据为第一数据和第二数据;

具体地,以输入数据为例,若每个输入数据在进行拆分重组处理之后得到一行第一数据时,将该行第一数据可以输出至一个PE单元中即可;若每个输入数据在进行拆分重组处理之后得到多行第一数据,那就将不同行第一数据输出至不同的PE单元中。

S103、将各PE单元计算后的结果进行累加计算,生成输出数据。

在目前技术中,并不会对输入数据和参数数据进行拆分重组处理,而是将每个输入数据的每个数据通道中的每行数据映射到一个预先配置好的PE单元阵列中的各PE单元中,若每个输入数据有C个数据通道,每个数据通道中包括K行数据,那么对于每个输入数据而言,需要映射到K*C个PE单元中;若输入数据具有M个时,那么M个输入数据需要映射到M*K*C个PE单元中,显然需要的PE单元的数量是非常庞大的,如果PE单元的数量较少时,就需要每个PE单元进行多次操作,且PE单元与存储器之间的交互次数也会非常多,这样的设置显然没有利用卷积神经网络的数据的复用性,造成系统功耗的大大增加。

在本发明实施例中,在确定需要进行拆分重组处理时,通过对每个输入数据的多个数据通道中对应行的数据、以及每个参数数据的多个参数通道中对应行的数据,进行拆分重组处理,可以得到与每个输入数据对应的至少一行第一数据、以及与每个参数数据对应的至少一行第二数据。如此,可以将得到的不同行第一特定数据输出至不同PE单元中并进行计算,使得PE单元与存储器之间的交互次数大大减少,从而可以充分利用PE单元,避免每个PE单元进行多次操作,以减少PE单元与存储器之间的交互次数,在资源有限的情况下,充分利用数据的复用性的同时,还可以降低系统的处理复杂度,降低系统功耗,提高系统工作效率。

例如,以输入数据的大小为3*224,数据通道的个数为64,卷积核的个数为1,每个参数通道(即权值)的大小为3*3,参数通道的个数为64为例,在PE单元内的数据存储单元的大小为24(单位为数据的个数)时,通过本发明实施例提供的上述方法,只需要24(8*3)个PE单元即可完成计算得到输出数据。

在具体实施时,为了能够实现拆分重组处理,在本发明实施例中,分别对每个输入数据的多个数据通道中对应行的数据、以及每个参数数据的多个参数通道中对应行的数据进行拆分重组处理,具体包括:

提取任一个第二特定数据中的多个特定通道的对应的第i行数据;其中,第i行数据包括n个数据;

将各第i行数据中的第j个数据,按照对应的特定通道的编号依次顺序排列;

将各第i行数据中的第j+1个数据排布在各第i行数据中的第j个数据之后的位置;

其中,j大于0且小于或等于n;在第二特定数据为输入数据时,特定通道为数据通道;在第二特定数据为参数数据时,特定通道为参数通道。

说明一点,在得到的每行第一特定数据中,各数据的排布顺序与拆分重组之前第i行数据中各数据的排布顺序相同。例如,若第i行数据中包括a和b两个数据,且b排在a之后,在经过拆分重组之后,得到的第一特定数据中,b也应该是排在所有的a之后的。

如此,可以有效实现拆分重组处理,充分利用PE单元,避免每个PE单元进行多次操作,以及减少PE单元与存储器之间的交互次数,充分利用了卷积神经网络的数据的复用性,从而可以大大降低系统的功耗。

可选地,在本发明实施例中,确定是否需要进行拆分重组处理,可以具体包括:

判断所述数据通道和所述参数通道的数量、PE单元的数量、以及所述数据通道和所述参数通道的尺寸之间的关系是否满足预设条件;

若满足,则确定需要进行拆分重组处理;

若不满足,则确定不需要进行拆分重组处理。

可选地,所述预设条件为:所述卷积神经网络包括多层卷积,如果要完成每层卷积的计算,每个所述PE单元进行计算处理的次数不超过预设值。

例如,在判断出数据通道和所述参数通道的数量大于第一预设值,所述数据通道的尺寸大于第二预设值,所述参数通道的尺寸大于第三预设值,PE单元的数量不大于第四预设值时,可以认为PE单元的数量较少,而数据通道的数量和尺寸均较大,参数通道的数量和尺寸也均较大,说明目前的每个PE单元不能通过一次操作完成一层卷积处理,需要每个PE单元进行N次操作才可以完成一层卷积处理,且N大于预设值。此时,为了提高系统的处理效率,需要对输入数据和参数数据进行拆分重组处理,在资源有限的情况下,充分利用数据的复用性,降低系统的处理复杂度,降低系统功耗,提高系统工作效率。

在判断出数据通道和所述参数通道的数量不大于第一预设值,所述数据通道的尺寸不大于第二预设值,所述参数通道的尺寸不大于第三预设值,PE单元的数量大于第四预设值时,说明目前的每个PE单元的数量能够通过一次操作即可完成一层卷积处理,而不需要每个PE单元需要进行多次重复操作,所以此时每个PE单元进行计算处理的此处是小于预设值的。此时,则不需要对输入数据和参数数据进行拆分重组处理,以降低系统操作的复杂性。

其中,预设条件、预设值、第一预设值、第二预设值、第三预设值、第四预设值可以根据实际需要进行设置,只要能够在资源有限的情况下,充分利用数据的复用性,减少每个PE单元的操作次数即可,在此并不做具体限定。

可选地,在本发明实施例中,得到的第二数据的行数与得到的第一数据的行数可以设置为相同。如此,可以避免在参数数据进行滑窗操作时出现错误,保证滑窗操作的正常进行,从而有利于提高计算结果的准确性。

可选地,在本发明实施例中,PE单元的具体结构如图2所示,其中,Psum In表示输入的部分和,Psum Out表示输出的计算结果。

参见图2所示,PE单元可以包括数据存储单元、参数存储单元、计算单元、输出存储单元、索引存储单元、以及控制单元;

其中,数据存储单元可以存储输出到PE单元中的输入数据;

参数存储单元可以存储输出到PE单元中的参数数据;

索引存储单元可以存储输入数据和参数数据的索引(关于索引的描述可参见下文);

计算单元可以对数据存储单元、参数存储单元和索引存储单元存储的内容进行计算;

输出存储单元可以存储计算单元在进行计算后输出的计算结果;

控制单元可以对各单元进行控制,且PE单元内的控制流程可以由控制单元来进行统一调度完成,例如,控制单元负责的PE单元内的控制流程,可以包括数据和参数的存储、计算、结果的存储与输出、以及计算模式的选择。

在本发明实施例中,经过对参数数据和输入数据进行拆分重组之后,第一数据可以流动的方式存储到PE单元内的数据存储单元,第二数据存储到PE单元内的参数存储单元,以进行相应的计算。并且,只需要一个乘法器、一个加法器、以及一个比较器,即可完成相应的计算,在简化系统的结构的同时,实现高效率的处理。

可选地,在本发明实施例中,得到的第二数据的行数根据PE单元内参数存储单元的存储空间确定,得到的第一数据的行数根据PE单元内数据存储单元的存储空间确定。

如此,不仅可以避免在将第一数据和第二数据传输(或映射)至PE单元中时无法正常存储第一数据和第二数据,进而避免PE单元中的计算单元出现计算错误,从而在保证PE单元能够正常工作的情况下保证计算的准确性。

可选地,在本发明实施例中,得到的第二数据与得到的第一数据均为一行;

得到的该行第二数据中包括全部参数通道对应行的数据,得到的该行第一数据中包括全部数据通道对应行的数据。

例如,如图3所示,对于输入数据而言,以其中一个输入数据(如input 1),以及每个数据通道中的第一行数据为例,输入数据input 1具有s个数据通道(用channel 1至channel s表示),第一行包括三个数据,分别为a、b和c。对于参数数据而言,具有N个参数数据,分别为Filter 1至Filter N,每个参数数据包括s个参数通道(用channel 1至channels表示),以每个参数通道中的第一行数据为例,第一行包括三个数据,也分别为a、b和c。

在拆分重组时,对于参数数据而言,以Filter 1为例,提取s个参数通道中的第一行数据中的a,然后按照参数通道的编号(编号即为1至N)依次顺序排列(如按照编号从小到大的顺序排列);接着,提取s个参数通道中的第一行数据中的b,然后按照参数通道的编号(编号即为1至N)依次顺序排列(如按照编号从小到大的顺序排列),且全部的b要排布在全部的a之后;最后,提取s个参数通道中的第一行数据中的c,然后按照参数通道的编号(编号即为1至N)依次顺序排列(如按照编号从小到大的顺序排列),且全部的c要排布在全部的b之后,形成一行第一数据。

同理,对于Filter 2至Filter N而言,每个参数数据均按照Filter 1的方式进行拆分重组处理。相应地,对于输入数据而言,也按照Filter 1的方式进行拆分重组处理。

也就是说,以Filter 1为例,在进行拆分重组处理后,使得形成的一行第一数据中包括全部通道中的数据,此时,可以将该行第一数据映射到一个PE单元中,而现有技术中的方式则需要映射到3s个PE单元,显然,通过本发明实施例中提供的上述方法,在PE单元的设置数量有限的情况下,可以减少PE单元与存储器之间的交互次数,充分利用了卷积神经网络的数据的复用性,从而可以大大降低系统的功耗。

当然,得到的第二数据与得到的第一数据可以均为多行,但需要保证得到的第一数据的行数小于数据通道的数量,以及得到的第二数据的行数小于参数通道的数量。

如此,有利于减少PE单元与存储器之间的交互次数,利用了卷积神经网络的数据的复用性,从而可以大大降低系统的功耗。

并且,还可以根据实际需要对第一数据和第二数据的行数进行设置,提高设计的灵活性,以满足各种应用场景的需要。

在具体实施时,卷积神经网络在进行ReLU(线性整流函数)激活后,如图4所示,使得卷积神经网络的数据结构具有一定的稀疏性,进一步对卷积神经网络压缩操作后,例如网络剪枝与知识蒸馏等,使得卷积神经网络数据具有更好的稀疏性。

其中,网络剪枝可以理解为:通过移除一些非重要的连接来对网络进行剪枝,具体步骤为进行正常的网络训练,将所有权重小于一定阈值归零,对上面得到的稀疏连接网络再进行训练。

经过上述操作,使得卷积神经网络具有较好的稀疏性,并且能够利用卷积神经网络的数据结构的稀疏性,进一步降低系统功耗,在本发明实施例中,在进行计算之前,该方法还可以包括:

确定与各第一特定数据对应的索引;

判断当前第一数据或当前第二数据对应的索引是否为预设值;

若是,则判断当前第一数据或当前第二数据为无效数据,且跳过该无效数据,继续判断下一个第一数据或下一个第二数据对应的索引是否为预设值;

若否,对当前第一数据和当前第二数据进行计算。

其中,预设值可以设置为0,在当前第一数据或当前第二数据为0时,进行乘积计算后得到的结果依然为0,进行累加计算后得到的结果依然不变,所以此时可以将为0的当前第一数据或当前第二数据称之为无效数据,在跳过该无效数据后,可以减少PE单元内部的数据流动与计算,降低系统的功耗,提高系统的工作效率。

在具体实施时,在本发明实施中,可以支持多种计算,如卷积计算、累加计算、以及池化计算。

具体地,对于卷积计算:

其中,卷积计算的过程可以理解为:

参见图5所示,C表示每个卷积核的参数通道的个数以及每个输入数据的数据通道个数,N表示卷积核的个数,K*K表示每个参数通道的数据大小,M表示输入数据的个数,H*W表示每个数据通道的数据大小,E*F表示每个输出数据通道的大小。

图5中以C=3为例,针对第一个输入数据,使用第一个卷积核,三个参数通道分别与三个数据通道进行卷积计算得到第一个输出数据中第一个输出数据通道的第一个数据;之后,三个参数通道在三个数据通道中按照预设步长向右进行滑窗后,同样进行卷积计算,得到第一个输出数据中第一个输出数据通道的第二个数据;同理,经过相同的过程得到第一个输出数据中第一个输出数据通道。

接着使用第二个卷积核,同样采用上述方式进行卷积计算后得到第一个输出数据中第二个输出数据通道。因此,在经过N个卷积核的处理之后,得到具有N个输出数据通道的第一个输出数据。

接着,针对之后的每一个输入数据,采用与第一个输入数据同样的方式进行卷积计算,最后得到M个输出数据。

在本发明实施例中,根据数据通道和参数通道的个数、以及数据大小,将输入数据和参数数据进行拆分重组处理,使得在资源有限地情况下,可以充分利用数据的复用性,从而降低系统的功耗。

其中,在图2中,c由具体的网络结构、PE单元内的数据存储单元、以及参数存储单元的大小确定。

例如,PE单元内的数据存储单元的大小为12(单位为数据的个数),参数通道和数据通道的个数C=8,卷积核中的参数通道的尺寸K=3,此时c=4;若卷积核中的参数通道的尺寸K=5时,则c=2。

又例如,PE单元内的数据存储单元的大小为12,卷积核中的参数通道的尺寸K=3,若参数通道和数据通道的个数C=3,则c=3;若参数通道和数据通道的个数C=8,则c=4。

再例如,参数通道和数据通道的个数C=8,卷积核中的参数通道的尺寸K=3,PE内数据存储单元大小为12,则c=4;若PE单元内的数据存储单元的大小为24,则c=8。

当然,上述只是举例说明,对于PE单元内的数据存储单元的大小、参数通道和数据通道的个数、以及卷积核中的参数通道的尺寸的具体数值并不限于上述内容,可以根据实际需要设置或人为设计,在此并不限定。

并且,通过在对输入数据进行拆分重组之后,可以将第二数据存储到PE单元内的数据存储单元,以便于在计算单元中进行卷积计算。

可选地,每个PE单元在进行卷积计算后得到的部分和可以存储在输出存储单元,可以将当前PE单元计算得到的部分和输出至其他的任一PE单元中进行累加计算,或者输出至全局缓存中,以生成输出数据。

也就是说,以图2所示为例,若每个卷积核中的每个参数通道具有三行数据时,每个卷积核中多个参数通道中的对应行数据进行拆分重组之后形成一行第二数据,且该行第二数据输出至一个PE单元中;使得对于每个卷积核而言,在进行拆分重组之后,将每个卷积核中的数据分别输出至三个PE单元中,此时,需要将三个PE单元中计算得到的结果进行累加计算,以得到其中一个输出数据通道。

通常,各PE单元之间存在连接关系,所以在将三个PE单元中计算得到的结果进行累加计算时,可以将其中的一个PE单元输出的计算结果通过输出存储单元输出至连接的下一个PE单元中,由下一个PE单元进行卷积和累加计算,在得到计算结果之后,可以继续将该结果通过输出存储单元传输至再下一个PE单元进行卷积和累加计算,以得到一个输出数据通道。

当然,对于PE单元而言,也可以将计算结果通过输出存储单元传输至全局缓存中,以等待调度进行下一步地计算。

并且,数据存储单元可以设计为支持地址读取数据的移位寄存器,以便于数据的读取。

具体地,对于累加计算:

在本发明实施例中,在参数数据为偏置数据时,在分别将偏置数据和输入数据进行拆分重组处理之后,将偏置参数存储到PE单元中的参数存储单元,将输入数据存储到PE单元内的数据存储单元,然后在计算单元中进行累加计算。之后,可以将计算所得的结果输出至全局缓存,以等待调度进行下一步地计算。

在实际过程中,可以将偏置数据作为psum_in的输入作为卷积计算的累加,如图2所示,若无该操作时,将第一次卷积psum_in设置为空闲。

并且,在PE单元内进行卷积计算的同时,支持将卷积计算得到的部分和输出至其他任一PE单元内进行累加计算,累加计算所得的结果输出至其他任一PE单元内再次进行累加或者输出至全局缓存进行下一步调度,具体可参见上述内容,重复之处不再赘述。

因此,在本发明实施例中,将得到的不同行第一特定数据输出至不同PE单元中并进行计算,具体包括:

将得到的不同行第一特定数据输出至不同PE单元中;

在参数数据为权值数据时,对第二数据和第一数据进行卷积计算;

或,在参数数据为偏置数据时,对第二数据和第一数据进行累加计算。

如此,使得PE单元具有较好的通用性,可以支持卷积计算和累加计算,以适应于各种应用场景的需要。

具体地,对于池化计算:

参见图6所示,池化窗口的大小为K*K,池化窗口在输入数据内滑动,输出滑动窗口内的最大值,以此在保留数据特征的同时,可以减少计算量,防止过拟合,在数据经池化后,当其中像素在邻域发生微小位移时,网络的输出是不变的,这使得网络的鲁棒性增强,具有一定抗扰动的作用。

其中,具体的池化过程可以参见现有技术,在此不再详述。

在本发明实施例中,可以将输入数据直接传输至PE单元内的数据存储单元中,无需进行拆分重组处理,在池化计算后,可以将得到的结果存储在输出存储单元中,并输出至其他任一PE单元进行池化计算或者输出至全局缓存。

如此,因可以支持池化计算,使得PE单元可以具有更好的通用性。

并且,支持可配置的卷积核大小、池化窗口大小与滑动步长的大小,对于目前通用的卷积神经网络模型而言,在一定程度上不受卷积核的大小、池化窗口的大小与滑动步长的限制。

此外,卷积核的大小与池化窗口的大小与滑动步长,可以取决于数据存储单元的尺寸,其中,积核的大小与池化窗口的大小与滑动步长小于等于数据存储单元的尺寸,以保证PE单元的正常工作。

基于同一发明构思,本发明实施例提供了一种卷积神经网络加速系统,该系统的实现原理与前述一种卷积神经网络加速方法的实现原理类似,具体可参见上述一种卷积神经网络加速方法的实施方式,重复之处不再赘述。

具体地,本发明实施例提供的一种卷积神经网络加速系统,如图7所示,可以包括:

第一处理单元701,用于在确定需要进行拆分重组处理时,分别对每个输入数据的多个数据通道中对应行的数据、以及每个参数数据的多个参数通道中对应行的数据进行拆分重组处理,分别得到与每个输入数据对应的至少一行第一数据、以及与每个参数数据对应的至少一行第二数据;其中,输入数据具有多个,每个输入数据具有多个数据通道,参数数据具有多个,每个参数数据具有多个参数通道,得到的每一行第一数据中包括多个数据通道对应行的数据,且得到的第一数据的行数小于数据通道的数量,得到的每一行第二数据中包括多个参数通道对应行的数据,且第二数据的行数小于参数通道的数量;

第二处理单元702,用于将得到的不同行第一特定数据输出至不同PE单元中并进行计算;第一特定数据为第一数据和第二数据;将各PE单元计算后的结果进行累加计算,生成输出数据。

可选地,在本发明实施例中,第一处理单元701具体用于:

提取任一个第二特定数据中的多个特定通道的对应的第i行数据;其中,第i行数据包括n个数据;

将各第i行数据中的第j个数据,按照对应的特定通道的编号依次顺序排列;

将各第i行数据中的第j+1个数据排布在各第i行数据中的第j个数据之后的位置;

其中,j大于0且小于或等于n;在第二特定数据为输入数据时,特定通道为数据通道;在第二特定数据为参数数据时,特定通道为参数通道。

可选地,在本发明实施例中,第一处理单元701具体用于:

判断所述数据通道和所述参数通道的数量、PE单元的数量、以及所述数据通道和所述参数通道的尺寸之间的关系是否满足预设条件;

若满足,则确定需要进行拆分重组处理;

若不满足,则确定不需要进行拆分重组处理。

本发明实施例提供的一种卷积神经网络加速方法及系统,通过对每个输入数据的多个数据通道中对应行的数据、以及每个参数数据的多个参数通道中对应行的数据,进行拆分重组处理,可以得到与每个输入数据对应的至少一行第一数据、以及与每个参数数据对应的至少一行第二数据。如此,可以将得到的不同行第一特定数据输出至不同PE单元中并进行计算,从而可以充分利用PE单元,避免每个PE单元进行多次操作,以减少PE单元与存储器之间的交互次数,在充分利用数据的复用性的同时,还可以降低系统的处理复杂度,降低系统功耗,提高系统工作效率。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

相关技术
  • 卷积神经网络加速引擎、卷积神经网络加速系统及方法
  • 一种深度可分离卷积神经网络加速方法和加速器
技术分类

06120112286784