一种卷积神经网络的池化方法和装置与流程

文档序号:18450999发布日期:2019-08-17 01:16阅读:172来源:国知局
一种卷积神经网络的池化方法和装置与流程

本发明涉及电子技术领域,特别涉及一种卷积神经网络的池化方法和装置。



背景技术:

卷积神经网络(convolutionalneuralnetwork,cnn)是一种前馈型神经网络,其通常包含多组的卷积层(convolutionlayer)及池化层(poolinglayer)。卷积层能够提取输入数据的局部特征,而池化层可针对输入数据某个区域上的特定特征进行最大池化(maxpooling)或平均池化(averagepooling)运算,以减小参数量及神经网络中的运算,池化运算完的结果可再传给下一层进行卷积运算,然后再次进行池化运算。

现有,在进行池化操作时,可以使用不同尺寸的池化窗口进行池化操作得到不同的输出结果,比如,本领域惯用的窗口尺寸为2×2和3×3,由算法定义的使用2×2池化窗口进行池化操作的池化参数为:stride(步长)为2,pad(填充)为0;使用3×3池化窗口进行池化操作的池化参数为:stride为1,pad为1,因此,在使用不同的池化窗口进行池化操作时,对于特征图的处理不同,同一待处理特征图只能针对特定的池化参数,更改池化参数时需要修改底层待处理图中图部分的代码,同一待处理特征图无法兼容池化参数不同的池化窗口进行池化操作。

综上所述,现有在进行池化操作时,对不同池化参数的池化操作兼容性较差,池化方式不灵活。



技术实现要素:

本发明提供一种卷积神经网络的池化方法和装置,用以解决现有技术在进行池化操作时,对不同池化参数的池化操作兼容性较差,池化方式不灵活的问题。

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

确定待处理特征图,其中所述待处理特征图包含输入的原始特征图和外加的n圈pad;

使用第一池化窗口对所述待处理特征图进行池化操作,得到输出数据;

根据所述第一池化窗口的池化参数和所述第二池化窗口的池化参数确定所述输出数据中的有效数据;

其中,第一池化窗口的尺寸大于第二池化窗口的尺寸。

上述方法,确定原始特征图对应的待处理特征图后,使用第一池化窗口进行池化操作,得到输出数据,根据第一池化窗口的池化参数和第二池化窗口的池化参数确定输出数据中等效于使用第二池化窗口进行池化操作的有效数据,本发明实施例可以在不更改待处理特征图的条件下,得到对应的使用第二池化窗口的有效数据,在不更改底层代码的前提下,通过复用第一池化窗口以及后续的数据筛选,得到不同池化参数的池化窗口的输出数据,提高了对不同池化参数的兼容性,池化方式更加灵活。

在一种可选的实施方式中,所述根据所述第一池化窗口的池化参数和所述第二池化窗口的池化参数确定所述输出数据中的有效数据,包括:

根据池化窗口的池化参数、池化窗口的尺寸与有效池化操作的序号的对应关系,确定所述第一池化窗口和所述第二池化窗口的池化参数以及所述第一池化窗口和所述第二池化窗口的尺寸,对应的有效池化操作的序号;

将使用第一池化窗口对所述待处理特征图进行池化操作中,与确定的有效池化操作的序号对应的池化操作的输出数据作为有效数据。

上述方法,根据第一池化窗口和第二池化窗口的池化参数和尺寸,确定第一池化操作等效于第二池化窗口进行池化操作的有效操作的序号,根据既有规律,对第一池化窗口的输出数据进行筛选,得到等效于第二池化窗口的输出数据,即输出数据中的有效数据,同一待处理特征图可以得到不同池化参数进行池化操作后的输出数据,兼容性更高,池化操作的选择更加简便、灵活。

在一种可选的实施方式中,所述根据所述第一池化窗口的池化参数和所述第二池化窗口的池化参数确定所述输出数据中的有效数据,包括:

根据第一池化窗口的池化参数、第二池化窗口的池化参数和第二池化窗口的尺寸,从第一池化窗口中确定需要进行池化操作的原始特征图中的数据点;

将使用第一池化窗口对所述待处理特征图进行池化操作中,对确定的所述数据点进行的池化操作得到的输出数据作为有效数据。

上述方法,在第一池化窗口中确定第二池化窗口在原始特征图上的数据点,对这部分数据点进行池化操作,得到等效于第二池化窗口的输出数据,同一待处理特征图可以得到不同池化参数进行池化操作后的输出数据,兼容性更高,池化操作的选择更加简便、灵活。

在一种可选的实施方式中,所述池化参数包括设置步长;所述使用第一池化窗口对所述待处理特征图进行池化操作,包括:

使用第一池化窗口按照所述第一池化窗口的设置步长对所述待处理特征图进行池化操作,得到输出数据;或

使用第一池化窗口按照所述第二池化窗口的设置步长对所述待处理特征图进行池化操作,得到输出数据。

上述方法,第一池化窗口在进行池化操作时按照第一池化窗口的设置步长进行移动可以得到第一池化窗口进行池化操作的输出数据;若通过第一池化窗口的输出数据得到等效于第二池化窗口的有效数据时,使第一池化窗口按照第二池化窗口的设置步长进行移动,可以减少池化操作,加快处理速度。

在一种可选的实施方式中,所述使用第一池化窗口按照所述第一池化窗口的设置步长对所述待处理特征图进行池化操作,包括:

在使用第一池化窗按照第一池化窗口的设置步长进行池化操作的同时,按照第一池化窗口的设置步长读取下一步长对应的所述待处理特征图中未参与当前池化操作的数据;或

所述使用第一池化窗口按照所述第二池化窗口的设置步长对所述待处理特征图进行池化操作,包括:

在使用所述第一池化窗口按照第二池化窗的设置步长进行池化操作的同时,按照所述第二池化窗的设置步长读取下一步长对应的所述待处理特征图中未参与当前池化操作的数据。

上述方法,第一池化窗口使用第一池化窗口的设置步长进行池化操作的同时,按照第一池化窗口的设置步长读取下一步长对应的待处理特征图的数据,或第一池化窗口使用第二池化窗口的设置步长进行池化操作的同时,按照第二池化窗口的设置步长读取下一步长对应的待处理特征图的数据,则在下一次纵向移动时,直接根据已读取的数据进行池化操作,不需要再单独耗费读取下一步长对应的数据的时间,实现了连续行的池化操作,加快了项目进度。

第二方面,本发明实施例还提供了一种卷积神经网络的池化装置,该装置包括:处理器以及存储器,其中,所述存储器存储有程序代码,当所述存储器存储的一个或多个计算机程序被所述处理器执行时,使得所述终端执行下列过程:

确定待处理特征图,其中所述待处理特征图包含输入的原始特征图和外加的n圈pad;

使用第一池化窗口对所述待处理特征图进行池化操作,得到输出数据;

根据所述第一池化窗口的池化参数和所述第二池化窗口的池化参数确定所述输出数据中的有效数据;

其中,第一池化窗口的尺寸大于第二池化窗口的尺寸。

在一种可能的实现方式中,所述处理器具体用于:

根据池化窗口的池化参数、池化窗口的尺寸与有效池化操作的序号的对应关系,确定所述第一池化窗口和所述第二池化窗口的池化参数以及所述第一池化窗口和所述第二池化窗口的尺寸,对应的有效池化操作的序号;

将使用第一池化窗口对所述待处理特征图进行池化操作中,与确定的有效池化操作的序号对应的池化操作的输出数据作为有效数据。

在一种可能的实现方式中,所述处理器具体用于:

根据第一池化窗口的池化参数、第二池化窗口的池化参数和第二池化窗口的尺寸,从第一池化窗口中确定需要进行池化操作的原始特征图中的数据点;

将使用第一池化窗口对所述待处理特征图进行池化操作中,对确定的所述数据点进行的池化操作得到的输出数据作为有效数据。

在一种可能的实现方式中,所述处理器具体用于:

使用第一池化窗口按照所述第一池化窗口的设置步长对所述待处理特征图进行池化操作,得到输出数据;或

使用第一池化窗口按照所述第二池化窗口的设置步长对所述待处理特征图进行池化操作,得到输出数据。

在一种可能的实现方式中,所述处理器具体用于:

在使用第一池化窗按照第一池化窗口的设置步长进行池化操作的同时,按照第一池化窗口的设置步长读取下一步长对应的所述待处理特征图中未参与当前池化操作的数据;或

在使用所述第一池化窗口按照第二池化窗的设置步长进行池化操作的同时,按照所述第二池化窗的设置步长读取下一步长对应的所述待处理特征图中未参与当前池化操作的数据。

第三方面,本发明实施例还提供一种卷积神经网络的池化装置该装置,包括:

确定模块:用于确定待处理特征图,其中所述待处理特征图包含输入的原始特征图和外加的n圈pad;

执行模块:用于使用第一池化窗口对所述待处理特征图进行池化操作,得到输出数据;

处理模块:用于根据所述第一池化窗口的池化参数和所述第二池化窗口的池化参数确定所述输出数据中的有效数据;其中,第一池化窗口的尺寸大于第二池化窗口的尺寸。

第四方面,本发明实施例还提供一种计算机存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现第一方面所述方法的步骤。

另外,第二方面至第四方面中任一种实现方式所带来的技术效果可参见第一方面中不同实现方式所带来的技术效果,此处不再赘述。

本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。

附图说明

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

图1为本发明实施例提供的一种卷积神经网络的池化方法示意图;

图2为本发明实施例提供的4×4特征图示意图;

图3为本发明实施例提供的待处理特征图示意图;

图4a为本发明实施例提供3×3池化窗口进行的第一行第一次池化操作示意图;

图4b为本发明实施例提供3×3池化窗口进行的第一行第二次池化操作示意图;

图4c为本发明实施例提供3×3池化窗口进行的第一行第三次池化操作示意图;

图4d为本发明实施例提供3×3池化窗口进行的第一行第四次池化操作示意图;

图5a为本发明实施例提供3×3池化窗口进行的第二行第一次池化操作示意图;

图5b为本发明实施例提供3×3池化窗口进行的第二行第二次池化操作示意图;

图5c为本发明实施例提供3×3池化窗口进行的第二行第三次池化操作示意图;

图5d为本发明实施例提供3×3池化窗口进行的第二行第四次池化操作示意图;

图6a为本发明实施例提供3×3池化窗口进行的第三行第一次池化操作示意图;

图6b为本发明实施例提供3×3池化窗口进行的第三行第二次池化操作示意图;

图6c为本发明实施例提供3×3池化窗口进行的第三行第三次池化操作示意图;

图6d为本发明实施例提供3×3池化窗口进行的第三行第四次池化操作示意图;

图7a为本发明实施例提供3×3池化窗口进行的第四行第一次池化操作示意图;

图7b为本发明实施例提供3×3池化窗口进行的第四行第二次池化操作示意图;

图7c为本发明实施例提供3×3池化窗口进行的第四行第三次池化操作示意图;

图7d为本发明实施例提供3×3池化窗口进行的第四行第四次池化操作示意图;

图8为本发明实施例提供3×3池化窗口进行池化操作的输出结果;

图9为本发明实施例提供2×2池化窗口进行池化操作的流程示意图;

图10为本发明实施例提供2×2池化窗口进行池化操作的输出结果;

图11为本发明实施例提供池化参数配置示意图;

图12a为本发明实施例提供复用3×3池化窗口进行的第一行第一次池化操作示意图;

图12b为本发明实施例提供复用3×3池化窗口进行的第一行第二次池化操作示意图;

图12c为本发明实施例提供复用3×3池化窗口进行的第一行第三次池化操作示意图;

图12d为本发明实施例提供复用3×3池化窗口进行的第一行第四次池化操作示意图;

图13为本发明实施例提供的另一种池化参数配置示意图;

图14a为本发明实施例提供复用3×3池化窗口按照步长2进行的第二行第一次池化操作示意图;

图14b为本发明实施例提供复用3×3池化窗口按照步长2进行的第二行第二次池化操作示意图;

图14c为本发明实施例提供复用3×3池化窗口按照步长2进行的第二行第三次池化操作示意图;

图14d为本发明实施例提供复用3×3池化窗口按照步长2进行的第二行第四次池化操作示意图;

图15a为本发明实施例提供复用3×3池化窗口进行池化操作的输出结果;

图15b为本发明实施例提供另一种通过3×3池化窗口确定的数据点进行的第一行第一次池化操作示意图;

图15c为本发明实施例提供另一种通过3×3池化窗口确定的数据点进行的第一行第二次池化操作示意图;

图15d为本发明实施例提供另一种通过3×3池化窗口确定的数据点进行的第一行第三次池化操作示意图;

图15e为本发明实施例提供一种第一行池化操作时提前读取行数据的方法示意图;

图15f为本发明实施例提供一种第二行池化操作时提前读取行数据的方法示意图;

图15g为本发明实施例提供一种第三行提前读取行数据的方法示意图;

图15h为本发明实施例提供另一种提前读取行数据的方法示意图;

图16为本发明实施例第一种卷积神经网络的池化装置的结构示意图;

图17为本发明实施例第二种卷积神经网络的池化装置的结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

下面对文中出现的一些词语进行解释:

1、本发明实施例中术语“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

下面结合说明书附图对本发明实施例做进一步详细描述。

如图1所示,本发明实施例提供的是一种卷积神经网络的池化方法,具体包括以下步骤:

步骤100:确定待处理特征图,其中所述待处理特征图包含输入的原始特征图和外加的n圈pad;

步骤101:使用第一池化窗口对所述待处理特征图进行池化操作,得到输出数据;

步骤102:根据所述第一池化窗口的池化参数和所述第二池化窗口的池化参数确定所述输出数据中的有效数据;其中,第一池化窗口的尺寸大于第二池化窗口的尺寸。

通过上述方案,确定原始特征图对应的待处理特征图后,使用第一池化窗口进行池化操作,得到输出数据,根据第一池化窗口的池化参数和第二池化窗口的池化参数确定输出数据中等效于使用第二池化窗口进行池化操作的有效数据,本发明实施例可以在不更改待处理特征图的条件下,得到对应的使用第二池化窗口的有效数据,在不更改底层代码的前提下,通过复用第一池化窗口以及后续的数据筛选,得到不同池化参数的池化窗口的输出数据,提高了对不同池化参数的兼容性,池化方式更加灵活。

下面以具体实施例对本发明的方案进行介绍说明:

惯用的池化窗口及池化参数如下所示:

1、kernal_size(卷积核尺寸)为3×3,stride=1,pad=1;

2、kernal_size为2×2,stride=2,pad=0。

其中,kernal_size为池化窗口的尺寸,步长为池化窗口在特征图上进行一次池化操作移动的像素数,pad为特征图的填充圈数,填充数为0。

假设原始特征图为4×4,第一池化窗口为3×3;第二池化窗口为2×2,下面分别通过上述两种池化窗口,对原始特征图进行的池化处理流程进行介绍说明:

方案1,使用3×3的池化窗口进行池化操作;

如图2所示为4×4原始特征图,若使用3×3池化窗口对原始特征图进行处理,则根据池化参数pad=1,需要在原始特征图外加一圈pad,如图3示为原始特征图外加一圈pad后构成的待处理特征图。

根据池化参数步长stride1,使用3×3池化窗口在待处理特征图上进行横向和纵向移动,移动步长为1个像素,如下图所示,为使用3×3池化窗口对待处理特征图进行池化操作的流程示意图:

如图4a所示为第一行的第一次池化操作n11;

使用3×3池化窗口进行第一行的第一次池化操作n11,对原始特征图上的l11、l12、l21和l22进行池化操作,得到输出数据6。

如图4b所示为第一行的第二次池化操作n12;

使用3×3池化窗口进行第一行的第一次池化操作n12,对原始特征图上的l11、l12、l13、l21、l22和l23进行池化操作,得到输出数据7。

如图4c所示为第一行的第三次池化操作n13;

使用3×3池化窗口进行第一行的第三次池化操作n13,对原始特征图上的l14、l12、l13、l24、l22和l23进行池化操作,得到输出数据8。

如图4d所示为第一行的第四次池化操作n14;

使用3×3池化窗口进行第一行的第四次池化操作n14,对原始特征图上的l13、l14、l23和l24进行池化操作,得到输出数据8。

如图5a所示为第二行的第一次池化操作n21;

使用3×3池化窗口进行第二行的第一次池化操作n21,对原始特征图上的l11、l12、l21、l22、l31和l32进行池化操作,得到输出数据10。

如图5b所示为第二行的第二次池化操作n22;

使用3×3池化窗口进行第二行的第二次池化操作n22,对原始特征图上的l11、l12、l13、l21、l22、l23、l31、l32和l33进行池化操作,得到输出数据11。

如图5c所示为第二行的第三次池化操作n23;

使用3×3池化窗口进行第二行的第三次池化操作n23,对原始特征图上的l14、l12、l13、l24、l22、l23、l34、l32和l33进行池化操作,得到输出数据12。

如图5d所示为第二行的第四次池化操作n24;

使用3×3池化窗口进行第二行的第四次池化操作n24,对原始特征图上的l14、l13、l23、l24、l33和l34进行池化操作,得到输出数据12。

如图6a所示为第三行的第一次池化操作n31;

使用3×3池化窗口进行第三行的第三次池化操作n31,对原始特征图上的l21、l22、l31、l32、l41和l42进行池化操作,得到输出数据14。

如图6b所示为第三行的第二次池化操作n32;

使用3×3池化窗口进行第三行的第二次池化操作n32,对原始特征图上的l21、l22、l23、l31、l32、l33、l41、l42和l43进行池化操作,得到输出数据15。

如图6c所示为第三行的第三次池化操作n33;

使用3×3池化窗口进行第三行的第三次池化操作n33,对原始特征图上的l24、l22、l23、l34、l32、l33、l44、l42和l43进行池化操作,得到输出数据16。

如图6d所示为第三行的第四次池化操作n34;

使用3×3池化窗口进行第三行的第四次池化操作n34,对原始特征图上的l23、l24、l33、l34、l43和l44进行池化操作,得到输出数据16。

如图7a所示为第四行的第一次池化操作n41;

使用3×3池化窗口进行第四行的第一次池化操作n41,对原始特征图上的l31、l32、l41和l42进行池化操作,得到输出数据14。

如图7b所示为第四行的第二次池化操作n42;

使用3×3池化窗口进行第四行的第二次池化操作n42,对原始特征图上的l31、l32、l33、l41、l42和l43进行池化操作,得到输出数据15。

如图7c所示为第四行的第三次池化操作n43;

使用3×3池化窗口进行第四行的第三次池化操作n43,对原始特征图上的l32、l33、l34、l42、l43和l44进行池化操作,得到输出数据16。

如图7d所示为第四行的第四次池化操作n44;

使用3×3池化窗口进行第四行的第四次池化操作n44,对原始特征图上的l33、l34、l43和l44进行池化操作,得到输出数据16。

如图8所示,为使用3×3池化窗口进行池化操作的输出结果。

综上,在4×4的特征图中,对于卷积核为3×3、stride为1、pad为1的池化操作,可分解4×4个基3×3的比较操作;扩展到n×n的特征图,可分解为n×n个3×3的比较操作。

举个例子,比如使用3×3池化窗口处理8×8的特征图时,由于步长为1,因此可以分解8×8个3×3的比较操作,又由于pad=1,可以得到输出结果为8×8。

方案2,使用2×2的池化窗口进行池化操作;

使用2×2池化窗口进行池化操作时,可以在原始特征图上直接进行池化操作,不需要外加pad,如图9所示的池化操作,如图10所示为使用2×2池化窗口进行池化操作的输出结果。

综上,可以看出现有方式,如果使用2×2池化窗口无法上述图3所示的待处理特征图上进行池化操作,在进行池化操作时,若池化窗口不同,则相对于待处理特征图的底层代码是不同的,也即同一特征图无法兼容两种池化窗口的池化操作。

本发明实施例,可以在不修改待处理特征图的底层代码的条件下,得到等效于使用2×2池化窗口进行池化操作的输出结果。

一种可行的实施方式为,使用3×3池化窗口对待处理特征图进行池化操作,确定等效于2×2池化窗口进行池化操作的有效池化操作的序号,根据该序号的有效池化操作得到2×2池化窗口的输出结果。

另一种可行的实施方式为,对2×2池化窗口进行填充,使填充后的池化窗口尺寸为3×3,但在使用填充后形成的3×3池化窗口在待处理特征图上移动时,该3×3池化窗口在待处理特征图上的有效数据点依然为2×2池化窗口在原始特征图上移动时的数据点,对通过填充后的3×3池化窗口进行池化操作得到的输出结果进行筛选,得到有效数据,该有效数据等效于2×2池化窗口相对于原始特征图的输出结果。

还有一种可能的实施方式,复用3×3池化窗口进行池化操作,在3×3池化窗口移动的过程中,根据2×2池化窗口的尺寸及步长等池化参数确定3×3池化窗口在原始特征图需要进行池化操作的数据点,对确定的所述数据点进行的池化操作得到的输出数据作为等效于使用2×2池化窗口进行池化操作的有效数据。其中,特征图上每一像素上的数据为一个数据点。

需要说明的是,若使用填充的方式,在使用填充后形成的3×3池化窗口进行移动时,可以使用原3×3池化窗口的设置步长和/或2×2池化窗口的设置步长,具体可以通过弹窗修改池化窗口的池化参数。

下面通过实施例对上述方式的具体实施步骤进行举例说明:

实施例1:对原3×3池化窗口的输出结果进行筛选,得到等效于使用2×2池化窗口的有效数据。

以4×4特征图为例,池化参数为:步长1,pad1;结合上图4a-图7d,对池化操作进行排序,序号为1-16,等效于使用2×2池化窗口进行池化操作的有效池化操作序号为池化操作1、池化操作4、池化操作13和池化操作16,则根据有效池化操作的序号,在输出数据中帅选得到对应的有效数据。

综上,本发明实施例根据池化窗口的池化参数、池化窗口的尺寸与有效池化操作的序号的对应关系,确定3×3池化窗口和2×2池化窗口的池化参数以及3×3池化窗口和2×2池化窗口的尺寸,对应的有效池化操作的序号;将使用3×3池化窗口对待处理特征图进行池化操作中,与确定的有效池化操作的序号对应的池化操作的输出数据作为有效数据。

实施例2:填充2×2池化窗口,使填充后的池化窗口尺寸为3×3,复用3×3池化窗口得到输出数据。

如图11所示,通过该配置窗口修改池化窗口参数,使用修改后的池化窗口进行池化操作。

可以配置的池化参数有多种,对应的池化操作方式也不同,下面举例说明:

池化方式一:步长按照原3×3池化窗口进行移动;

如图12a为使用填充后的3×3池化窗口进行的第一行第一次池化操作;

使用填充后的3×3池化窗口进行第一行的第一次池化操作,有效数据为l11、l12、l21和l22,对l11、l12、l21和l22进行池化操作,得到输出数据6。

如图12b为使用填充后的3×3池化窗口进行的第一行第二次池化操作;

使用填充后的3×3池化窗口进行第一行的第二次池化操作,有效数据为l13、l12、l23和l22,对l13、l12、l23和l22进行池化操作,得到输出数据7。

如图12c为使用填充后的3×3池化窗口进行的第一行第三次池化操作;

使用填充后的3×3池化窗口进行第一行的第三次池化操作,有效数据为l13、l14、l23和l24,对l13、l14、l23和l24进行池化操作,得到输出数据8。

如图12d为使用填充后的3×3池化窗口进行的第一行第四次池化操作;

使用填充后的3×3池化窗口进行的第一行第四次池化操作为无效操作。

横向移动和纵向移动都是1个像素,其余行的池化操作以此类推,不再赘述。

则根据的3×3池化窗口的尺寸和2×2池化窗口的尺寸以及3×3池化窗口的设置步长,可以得到上述池化参数对应的有效池化操作的序号为池化操作1,池化操作3,池化操作9和池化操作11。

池化方式二:横向移动按照原3×3池化窗口的设置步长进行移动,纵向移动按照2×2池化窗口的设置步长进行移动;

如图13所示的修改参数,对于第一行的池化操作,设置填充的3×3池化窗口的无效行为第一行,无效列为第一列;其他行的池化操作,设置填充的3×3池化窗口的无效行为第三行,无效列为第一列。

具体使用上述池化参数进行池化操作的流程如下:

对于第一行的池化操作与上图12a-图12d相同,可参见图12a-图12d,此处不再赘述。

如图14a为使用填充后的3×3池化窗口按照步长2进行的第二行第一次池化操作;

使用填充后的3×3池化窗口进行第二行的第一次池化操作,有效数据为l31、l32、l41和l42,对l31、l32、l41和l42进行池化操作,得到输出数据14。

如图14b为使用填充后的3×3池化窗口按照步长2进行的第二行第二次池化操作;

使用填充后的3×3池化窗口进行第二行的第二次池化操作,有效数据为l32、l33、l42和l43,对l32、l33、l42和l43进行池化操作,得到输出数据15。

如图14c为使用填充后的3×3池化窗口按照步长2进行的第二行第三次池化操作;

使用填充后的3×3池化窗口进行第二行的第三次池化操作,有效数据为l33、l34、l43和l44,对l33、l34、l43和l44进行池化操作,得到输出数据16。

如图14d为使用填充后的3×3池化窗口按照步长2进行的第二行第四次池化操作。

使用填充后的3×3池化窗口进行的第二行第四次池化操作为无效操作。

如图15a所示,由上述池化操作的输出结果,可以看出,纵向若按照步长2移动,则可以减少一半的池化操作,并根据3×3池化窗口的尺寸和2×2池化窗口的尺寸以及3×3池化窗口的设置步长,可以得到上述池化参数对应的有效池化操作的序号为池化操作1,池化操作3,池化操作5和池化操作7。

实施例3:使用3×3池化窗口进行池化操作,确定3×3池化窗口需要进行池化操作的原始特征图中的数据点;

3×3池化窗口可以是实施例1中未填充的池化窗口,也可以是上述实施例2中填充后组成的3×3池化窗口,下面以未填充的3×3池化窗口为例,对本方式进行说明:

如图15b为第一行的第一次池化操作,确定此次池化操作中3×3池化窗口需要进行等效于2×2池化窗口进行池化操作时,在原始特征图上的数据点,即l11、l12、l21和l22,对l11、l12、l21和l22进行池化操作,得到输出数据6。

如图15c为第一行第二次池化操作,根据2×2池化窗口的尺寸,以及2×2池化窗口的设置步长,可知本次没有符合2×2池化窗口移动步长的数据点。

判断方式可以根据如下原则:

根据2×2池化窗口的尺寸和设置步长2,使用3×3池化窗口进行池化操作时进行的有效池化操作时在包含原始特征图的数据点应为4个,且只参与一次池化操作,若已参与池化操作的数据点,则不再参与下一次移动后池化操作,且每次有效池化操作中在原始特征图上的数据点为4个。比如图15c中l11、l12、l21和l22为已池化处理后的数据点,l13和l23无法进行有效池化操作,因此本次为无线池化操作。

如图15d,为第一行第三次池化操作,为有效池化操作,对包含的数据点l13、l23、l14和l24进行池化操作,得到输出数据8,该数据为有效数据。

以此类推,若纵向移动步长为2,可得到如图15a所示的输出数据,根据有效池化操作对输出数据进行筛选,得到等效于2×2池化窗口进行池化操作的有效数据。

需要说明的是,在对输出数据进行筛选时,可以在池化操作过程中,根据有效池化操作得到的数据进行组合,直接输出有效数据;也可以输出全部池化操作的数据,在输出数据中进行筛选,本发明并不限定于筛选顺序。

本发明实施例,2×2池化窗口能够处理的特征图尺寸为2n,比如上述的4×4,以及8×8、16×16等,下面以8×8特征图为例,对通过本发明实施例中的2×2池化窗口复用3×3池化窗口进行池化如何得到使用2×2池化窗口进行池化的等效输出进行举例说明:

通过参数配置框,修改针对8×8特征的池化窗口参数,定义横向移动步长为1,纵向移动步长为2,池化窗口尺寸3×3,第一行池化操作时池化窗口的无效行为第一行,无效列为第一列,其余行的池化操作时池化窗口的无效行为第三行,无效列为第一列。

为使用配置后的3×3池化窗口进行池化操作的示意图。

应用实施例一的池化方式一,确定复用3×3池化窗口进行池化操作时等效于使用2×2池化窗口进行池化操作的有效池化操作的序号为横向1,3,5……(1+2n),n为正整数;纵向有效池化操作的序号为1,3,5……(1+2n),n为正整数。

应用实施例一的池化方式二,确定复用3×3池化窗口进行池化操作时等效于使用2×2池化窗口进行池化操作的有效池化操作的序号为横向1,3,5……(1+2n),n为正整数;纵向移动都为有效池化操作。

因此,根据有效池化操作的序号对输出结果进行筛选可以得到等效使用2×2池化窗口进行池化操作的输出结果。

本发明实施例可以通过修改池化参数来配置池化窗口,也可以通过大量实验,将不同特征图对应不同的池化窗口的池化参数进行定义。本发明并不限定于通过人工配置池化参数的方式。

可选的,本发明实施例在进行池化操作时,还可以同时读取下一步长对应的原始特征图上的数据,下面举例说明:

例1,结合图4a~图7d,使用3×3池化窗口进行池化操作,步长为1,pad=1,3×3池化窗口在待处理特征图上纵向移动1像素,其中,待处理特征图的第一行记为l0,第二行记为l1,第三行记为l2,第四行记为l3,第五行记为l4,第六行记为l5,如图4a~图4d,在对待处理特征图的第一行、第二行和第三行的数据进行池化操作时,可以同时读取第四行的数据,如图5a所示,在进行第二行的池化时,则不需要单独耗费读取第四行数据的时间,能够实现连续行的池化操作。

如图15e所示,为进行第一次池化操作时涉及的行l0、l1、l2,在对l0、l1、l2中的数据进行池化操作的同时读取第四行l3的数据的示意图,其中,填充部分l0、l1、l2为当前使用数据,白色区域l3为提前读取的下一步长对应的行数据;

如图15f所示,为进行第二次纵向移动的操作时涉及的行l1、l2、l3,在对l1、l2、l3中的数据进行池化操作的同时读取第五行l4的数据的示意图,其中,填充部分l1、l2、l3为当前使用数据,白色区域l4为提前读取的下一步长对应的行数据;

如图15g所示,为进行第三次纵向移动的池化操作时涉及的行l2、l3、l4,在对l2、l3、l4中的数据进行池化操作的同时读取第六行l5的数据的示意图,其中,填充部分l2、l3、l4为当前使用数据,白色区域l5为提前读取的下一步长对应的行数据。

以此类推,根据设置步长读取下一步长对应的且未参与池化操作的行数据,当前保存的行数据已池化完成且不再参与后续的池化操作时,利用该行数据占用的ram保存提前读取的行数据,直到池化完成或者原始特征图中的数据已全部读取完成。

例2:结合图9,使用2×2池化窗口进行池化操作,步长为2,pad=0,其中,原始特征图的第一行记为l1,第二行记为l2,第三行记为l3,第四行记为l4,移动步长为2,如图15h所示,为进行第一次池化操作时涉及的行l1和l2,在对l1和l2中的数据进行池化操作的同时,根据移动步长2读取第三行l3和第四行l4的数据的示意图,其中,填充部分l1和l2为当前使用数据,白色区域l3和l4为提前读取的下一步长对应的行数据。

需要说明的是,在池化操作的同时按照下一步长读取待处理的原始特征图上的数据时,可以是行数据也可以是列数据,若读取行数据,则可以在下一次纵向移动前读取完成,上述仅为举例,任何读取方式均适用于本发明。

基于相同的构思,如图16所示,本发明实施例提供一种用于fpga的神经网络仿真的装置,该装置包括:处理器1600以及存储器1601,其中,所述存储器1601存储有程序代码,当所述存储器1601存储的一个或多个计算机程序被所述处理器1600执行时,使得所述终端执行下列过程:

确定待处理特征图,其中所述待处理特征图包含输入的原始特征图和外加的n圈pad;

使用第一池化窗口对所述待处理特征图进行池化操作,得到输出数据;

根据所述第一池化窗口的池化参数和所述第二池化窗口的池化参数确定所述输出数据中的有效数据;

其中,第一池化窗口的尺寸大于第二池化窗口的尺寸。

可选的,所述处理器1600具体用于:

根据池化窗口的池化参数、池化窗口的尺寸与有效池化操作的序号的对应关系,确定所述第一池化窗口和所述第二池化窗口的池化参数以及所述第一池化窗口和所述第二池化窗口的尺寸,对应的有效池化操作的序号;

将使用第一池化窗口对所述待处理特征图进行池化操作中,与确定的有效池化操作的序号对应的池化操作的输出数据作为有效数据。

可选的,所述处理器1600具体用于:

根据第一池化窗口的池化参数、第二池化窗口的池化参数和第二池化窗口的尺寸,从第一池化窗口中确定需要进行池化操作的原始特征图中的数据点;

将使用第一池化窗口对所述待处理特征图进行池化操作中,对确定的所述数据点进行的池化操作得到的输出数据作为有效数据。

可选的,所述池化参数包括设置步长,所述处理器1600具体用于:

使用第一池化窗口按照所述第一池化窗口的设置步长对所述待处理特征图进行池化操作,得到输出数据;或

使用第一池化窗口按照所述第二池化窗口的设置步长对所述待处理特征图进行池化操作,得到输出数据。

可选的,所述处理器1600具体用于:

在使用第一池化窗按照第一池化窗口的设置步长进行池化操作的同时,按照第一池化窗口的设置步长读取下一步长对应的所述待处理特征图中未参与当前池化操作的数据;或

在使用所述第一池化窗口按照第二池化窗的设置步长进行池化操作的同时,按照所述第二池化窗的设置步长读取下一步长对应的所述待处理特征图中未参与当前池化操作的数据。

基于相同的构思,如图17所示,本发明实施例提供另一种卷积神经网络的池化装置,包括:

确定模块1700:用于确定待处理特征图,其中所述待处理特征图包含输入的原始特征图和外加的n圈pad;

执行模块1701:用于使用第一池化窗口对所述待处理特征图进行池化操作,得到输出数据;

处理模块1702:用于根据所述第一池化窗口的池化参数和所述第二池化窗口的池化参数确定所述输出数据中的有效数据;其中,第一池化窗口的尺寸大于第二池化窗口的尺寸。

可选的,所述确定模块1700具体用于:

根据池化窗口的池化参数、池化窗口的尺寸与有效池化操作的序号的对应关系,确定所述第一池化窗口和所述第二池化窗口的池化参数以及所述第一池化窗口和所述第二池化窗口的尺寸,对应的有效池化操作的序号;

将使用第一池化窗口对所述待处理特征图进行池化操作中,与确定的有效池化操作的序号对应的池化操作的输出数据作为有效数据。

可选的,所述确定模块1700具体用于:

根据第一池化窗口的池化参数、第二池化窗口的池化参数和第二池化窗口的尺寸,从第一池化窗口中确定需要进行池化操作的原始特征图中的数据点;

将使用第一池化窗口对所述待处理特征图进行池化操作中,对确定的所述数据点进行的池化操作得到的输出数据作为有效数据。

可选的,所述处理模块1702具体用于:

使用第一池化窗口按照所述第一池化窗口的设置步长对所述待处理特征图进行池化操作,得到输出数据;或

使用第一池化窗口按照所述第二池化窗口的设置步长对所述待处理特征图进行池化操作,得到输出数据。

可选的,所述处理模块1702具体用于:

在使用第一池化窗按照第一池化窗口的设置步长进行池化操作的同时,按照第一池化窗口的设置步长读取下一步长对应的所述待处理特征图中未参与当前池化操作的数据;或

在使用所述第一池化窗口按照第二池化窗的设置步长进行池化操作的同时,按照所述第二池化窗的设置步长读取下一步长对应的所述待处理特征图中未参与当前池化操作的数据。

以上参照示出根据本申请实施例的方法、装置(系统)和/或计算机程序产品的框图和/或流程图描述本申请。应理解,可以通过计算机程序指令来实现框图和/或流程图示图的一个块以及框图和/或流程图示图的块的组合。可以将这些计算机程序指令提供给通用计算机、专用计算机的处理器和/或其它可编程数据处理装置,以产生机器,使得经由计算机处理器和/或其它可编程数据处理装置执行的指令创建用于实现框图和/或流程图块中所指定的功能/动作的方法。

相应地,还可以用硬件和/或软件(包括固件、驻留软件、微码等)来实施本申请。更进一步地,本申请可以采取计算机可使用或计算机可读存储介质上的计算机程序产品的形式,其具有在介质中实现的计算机可使用或计算机可读程序代码,以由指令执行系统来使用或结合指令执行系统而使用。在本申请上下文中,计算机可使用或计算机可读介质可以是任意介质,其可以包含、存储、通信、传输、或传送程序,以由指令执行系统、装置或设备使用,或结合指令执行系统、装置或设备使用。

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

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