兼容多维度卷积神经网络的Winograd处理方法、系统及介质
技术领域
本发明涉及卷积神经网络算法领域,尤其涉及一种兼容多维度卷积神经网络的Winograd处理方法、系统及介质。
背景技术
随着深度学习技术和卷积神经网络研究的发展,不同维度的网络都取得了卓越的性能和多样化的应用场景。因为不同网络维度的差异,卷积神经网络在硬件平台的实现和部署差异化日益增大,硬件设计缺乏支持多种网络维度的灵活性。同时,出于神经网络参数量庞大的考虑,Winograd算法被提出用于降低计算复杂度和乘法次数。但是不同维度卷积神经网络的Winograd公式存在差异,不能同时满足多维度卷积神经网络需求。
发明内容
为至少一定程度上解决现有技术中存在的技术问题之一,本发明的目的在于提供一种兼容多维度卷积神经网络的Winograd处理方法、系统及介质。
本发明所采用的技术方案是:
一种兼容多维度卷积神经网络的Winograd处理方法,包括以下步骤:
根据网络维度进行判断,确定Winograd维度计算模式,进入Winograd转换步骤;
在Winograd转换步骤中,将神经网络的激活输入Winograd激活转换模块进行转换计算;
将神经网络的权重输入权重转换模块进行Winograd转换计算;
将Winograd计算转换完成的激活和权重进行矩阵相乘,获得Winograd转化前的部分和;
根据不同的Winograd卷积尺寸,判断部分和转换对应的计算模式,将部分和进行Winograd转换计算;
根据不同Winograd维度模式,确定最终有效输出链路。
进一步,所述根据网络维度进行判断,确定Winograd维度计算模式,包括:
3D卷积神经网络的尺寸分为行列帧三个维度方向,2D神经网络方向分为行列两个维度方向,1D神经网络只有一个维度方向;
对于不同维度的网络数据,采用不同Winograd公式对激活、权重以及部分和进行转换处理及计算。
进一步,1D神经网络对应的Winograd计算公式为:
y=G[(Bx)⊙(Aw)]
2D神经网络对应的Winograd计算公式为:
y=G[(BxBT)⊙(AwAT)]GT
3D神经网络对应的Winograd计算公式为:
y=(G[((BxBT)RBT)⊙((AwAT)RAT)]GT)RGT
其中,G表示Winograd算法部分和转换矩阵,B表示Winograd算法激活转换矩阵,A表示Winograd算法权重转换矩阵,x表示激活,w表示权重,T表示转置,R表示旋转。
进一步,所述权重转换模块由加法器、取反器、移位器和选择器组成。
进一步,所述部分和转换模块由加法器、取反器和选择器组成。
进一步,所述根据不同Winograd维度模式,确定最终有效输出链路,包括:
根据不同网络维度,选择对应的有效输出链路作为最终结果;
对于3D卷积神经网络的情况,选择对于3D输出的链路;
对于2D卷积神经网络的情况,选择对于2D输出的链路;
对于1D卷积神经网络的情况,选择对于1D输出的链路。
本发明所采用的另一技术方案是:
一种兼容多维度卷积神经网络的Winograd处理系统,包括:
维度判断模块,用于根据网络维度进行判断,确定Winograd维度计算模式,进入Winograd转换步骤;
激活计算模块,用于在Winograd转换步骤中,将神经网络的激活输入Winograd激活转换模块进行转换计算;
权重计算模块,用于将神经网络的权重输入权重转换模块进行Winograd转换计算;
部分和计算模块,用于将Winograd计算转换完成的激活和权重进行矩阵相乘,获得Winograd转化的部分和;
部分和转换模块,用于根据不同的Winograd卷积尺寸,判断部分和转换对应的计算模式,将部分和进行Winograd转换计算;
输出模块,用于根据不同Winograd维度模式,确定最终有效输出链路。
本发明所采用的另一技术方案是:
一种兼容多维度卷积神经网络的Winograd处理系统,包括:
至少一个处理器;
至少一个存储器,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现上所述方法。
本发明所采用的另一技术方案是:
一种存储介质,其中存储有处理器可执行的程序,所述处理器可执行的程序在由处理器执行时用于执行如上所述方法。
本发明的有益效果是:本发明通过结合不同尺寸的Winograd公式,实现了在同一层神经网络计算过程中可灵活切换Winograd计算尺寸的功能,降低了单层网络补零操作的次数,提高计算效率,同时减少了硬件实现的面积开销。
附图说明
为了更清楚地说明本发明实施例或者现有技术中的技术方案,下面对本发明实施例或者现有技术中的相关技术方案附图作以下介绍,应当理解的是,下面介绍中的附图仅仅为了方便清晰表述本发明的技术方案中的部分实施例,对于本领域的技术人员而言,在无需付出创造性劳动的前提下,还可以根据这些附图获取到其他附图。
图1是本发明实施例中一种兼容多维度卷积神经网络的Winograd处理方法的步骤流程图;
图2是本发明实施例中面向不同维度的Winograd计算流程图;
图3是本发明实施例中包含了激活、权重和部分和转换模块的整体架构图;
图4是本发明实施例中权重和部分的整体架构图;
图5是本发明实施例中部分和转换模块的整体架构图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。对于以下实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。
在本发明的描述中,需要理解的是,涉及到方位描述,例如上、下、前、后、左、右等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。
本发明的描述中,除非另有明确的限定,设置、安装、连接等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本发明中的具体含义。
如图1-图3所示,本实施例提供一种兼容多维度卷积神经网络的Winograd处理方法,包括以下步骤:
S1、根据网络维度进行判断,确定Winograd维度计算模式,进入Winograd转换步骤。
3D卷积神经网络尺寸分为行列帧三个维度方向(W,H,F),2D神经网络方向分为行列两个维度方向(W,H),1D神经网络只有一个维度方向(W)。根据网络维度进行第一步判断,确定Winograd维度计算模式后,进入Winograd转换步骤。
Winograd转换公式包括对激活,权重和部分和三个部分的转换,对于不同维度的网络数据需使用不同Winograd公式对激活,权重和部分和进行转换处理及计算。根据数据维度确定维度计算模式后,对于1D数据,后续步骤采用1D Winograd转换公式及计算,对于2D数据,后续步骤采用2D Winograd转换公式及计算,对于3D数据,后续步骤采用3DWinograd转换公式及计算。
其中,1D神经网络对应的Winograd计算公式为:
y=G[(Bx)⊙(Aw)]
2D神经网络对应的Winograd计算公式为:
y=G[(BxBT)⊙(AwAT)]GT
3D神经网络对应的Winograd计算公式为:
y=(G[((BxBT)RBT)⊙((AwAT)RAT)]GT)RGT
S2、在Winograd转换步骤中,将神经网络的激活输入Winograd激活转换模块进行转换计算。
S3、将神经网络的权重输入权重转换模块进行Winograd转换计算。
Winograd权重转换需要先确定Winograd计算尺寸,对于不同权重尺寸需要使用不同Winograd计算公式。本实施例同时支持Winograd权重尺寸为2和权重尺寸为3的格式,可以在具体某一层卷积神经网络的计算中自由切换,实现在更少补零操作下,完成卷积神经网络的计算。其中,权重尺寸为2和权重尺寸为3的Winograd转换参数如下。
激活尺寸为4,权重尺寸为3的Winograd参数:
激活尺寸为4,权重尺寸为2的Winograd参数:
参见图4,同时权重转换模块电路由加法器、取反器、移位器和选择器组成,相比于Winograd公式中直接做乘法操作,减少硬件上乘法器资源,电路硬件实现面积更小。
S4、将Winograd计算转换完成的激活和权重进行矩阵相乘,获得Winograd转化前的部分和。
Winograd部分和转换需要先确定Winograd计算尺寸,对于不同部分和尺寸需要使用不同Winograd计算公式。本实施例同时支持Winograd部分和尺寸为2和部分和尺寸为3的格式,可以在具体某一层卷积神经网络的计算中自由切换,实现在更少补零操作下,完成卷积神经网络的计算。
参见图5,同时部分和转换模块电路由加法器,取反器和选择器组成,相比于Winograd公式中直接做乘法操作,减少硬件上乘法器资源,电路硬件实现面积更小。
S5、根据不同的Winograd卷积尺寸,判断部分和转换对应的计算模式,将部分和进行Winograd转换计算。
S6、根据不同Winograd维度模式,确定最终有效输出链路。
根据不同网络维度,选择对应的有效输出链路得到最终结果。对于3D卷积神经网络的情况,选择对于3D输出的链路。对于2D卷积神经网络的情况,选择对于2D输出的链路。对于1D卷积神经网络的情况,选择对于1D输出的链路。
参见图2,由上总结可知,本实施例方法根据网络维度进行判断,确定Winograd维度计算模式,进入Winograd转换步骤;将神经网络的激活输入Winograd激活转换模块进行转换计算,如果是1D激活则进行激活1D转换,2D激活则进行激活2D转换,3D激活则旋转后再进行激活3D转换,转换完成后获得转换后激活;同时将神经网络的权重输入权重转换模块进行Winograd转换计算获得转换后权重;将Winograd计算转换完成的转换后激活和转换后权重进行矩阵相乘,获得Winograd转化前的部分和;根据不同的Winograd卷积尺寸,判断部分和转换对应的计算模式,将部分和进行Winograd转换计算;根据不同Winograd维度模式,确定最终有效输出链路,1D结果选择1D链路输出,2D结果选择2D链路输出,3D结果选择3D链路输出。
综上所述,本实施例的方法相对于现有技术,具有如下有益效果:
(1)现有技术大多数神经网络加速器设计只针对某种特定维度网络,缺乏对多维度卷积神经网络的兼容性和灵活性。本实施例通过结合不同维度Winograd计算公式,实现了对不同维度卷积神经网络的支持,得益于新颖的不同维度计算流程图。
(2)现有技术对于Winograd计算模块的设计比较单一,只能支持某种特定Winograd尺寸或者不能灵活的在某一层神经网络计算中切换,导致计算资源的浪费。相比之下,本实施例通过结合不同尺寸的Winograd公式,实现了在同一层神经网络计算过程中可灵活切换Winograd计算尺寸的功能。降低了单层网络补零操作的次数,提高计算效率。
(3)转换模块电路由移位,加法器,取反器组成,不使用乘法器,减少了硬件实现的面积开销。
本实施例还提供一种兼容多维度卷积神经网络的Winograd处理系统,包括:
维度判断模块,用于根据网络维度进行判断,确定Winograd维度计算模式,进入Winograd转换步骤;
激活计算模块,用于在Winograd转换步骤中,将神经网络的激活输入Winograd激活转换模块进行转换计算;
权重计算模块,用于将神经网络的权重输入权重转换模块进行Winograd转换计算;
部分和计算模块,用于将Winograd计算转换完成的激活和权重进行矩阵相乘,获得Winograd转化的部分和;
部分和转换模块,用于根据不同的Winograd卷积尺寸,判断部分和转换对应的计算模式,将部分和进行Winograd转换计算;
输出模块,用于根据不同Winograd维度模式,确定最终有效输出链路。
本实施例的一种兼容多维度卷积神经网络的Winograd处理系统,可执行本发明方法实施例所提供的一种兼容多维度卷积神经网络的Winograd处理方法,可执行方法实施例的任意组合实施步骤,具备该方法相应的功能和有益效果。
本实施例还提供一种兼容多维度卷积神经网络的Winograd处理系统,包括:
至少一个处理器;
至少一个存储器,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现图1所示方法。
本实施例的一种兼容多维度卷积神经网络的Winograd处理系统,可执行本发明方法实施例所提供的一种兼容多维度卷积神经网络的Winograd处理方法,可执行方法实施例的任意组合实施步骤,具备该方法相应的功能和有益效果。
本申请实施例还公开了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存介质中。计算机设备的处理器可以从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行图1所示的方法。
本实施例还提供了一种存储介质,存储有可执行本发明方法实施例所提供的一种一种兼容多维度卷积神经网络的Winograd处理方法的指令或程序,当运行该指令或程序时,可执行方法实施例的任意组合实施步骤,具备该方法相应的功能和有益效果。
在一些可选择的实施例中,在方框图中提到的功能/操作可以不按照操作示图提到的顺序发生。例如,取决于所涉及的功能/操作,连续示出的两个方框实际上可以被大体上同时地执行或所述方框有时能以相反顺序被执行。此外,在本发明的流程图中所呈现和描述的实施例以示例的方式被提供,目的在于提供对技术更全面的理解。所公开的方法不限于本文所呈现的操作和逻辑流程。可选择的实施例是可预期的,其中各种操作的顺序被改变以及其中被描述为较大操作的一部分的子操作被独立地执行。
此外,虽然在功能性模块的背景下描述了本发明,但应当理解的是,除非另有相反说明,所述的功能和/或特征中的一个或多个可以被集成在单个物理装置和/或软件模块中,或者一个或多个功能和/或特征可以在单独的物理装置或软件模块中被实现。还可以理解的是,有关每个模块的实际实现的详细讨论对于理解本发明是不必要的。更确切地说,考虑到在本文中公开的装置中各种功能模块的属性、功能和内部关系的情况下,在工程师的常规技术内将会了解该模块的实际实现。因此,本领域技术人员运用普通技术就能够在无需过度试验的情况下实现在权利要求书中所阐明的本发明。还可以理解的是,所公开的特定概念仅仅是说明性的,并不意在限制本发明的范围,本发明的范围由所附权利要求书及其等同方案的全部范围来决定。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。
计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的上述描述中,参考术语“一个实施方式/实施例”、“另一实施方式/实施例”或“某些实施方式/实施例”等的描述意指结合实施方式或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施方式,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施方式进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
以上是对本发明的较佳实施进行了具体说明,但本发明并不限于上述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:一种实体行为基线分析方法、系统及终端设备