基于卷积神经网络的数据移位处理方法、装置及设备与流程

专利查询2023-10-6  133



1.本技术涉及数据处理技术领域,尤其涉及一种基于卷积神经网络的数据移位处理方法、装置及设备。


背景技术:

2.在数据处理领域中,通常需要对张量(tensor)数据进行顺序上的重排,其一般利用reshape、transpose等算法实现。其中,张量数据可以是多维数组,而实现数据重排的一种常用方式为:数据的移位操作。
3.随着基于卷积神经网络的深度学习算法的快速发展,卷积神经网络已在不同的技术领域得到了广泛的应用,卷积神经网络可以在适配神经网络结构的运行处理设备上运行,适配神经网络结构的运行处理设备包括神经网络专用芯片(例如卷积神经网络推理芯片、asic(application specific integrated circuit,专用集成电路)芯片等)、通用处理器以及图像处理器,这些能够适配神经网络结构的运行处理设备的性能优越,已在市场上得到广泛的运用。
4.然而,目前的数据移位处理任务一般通过外挂arm(advanced risc machine,进阶精简指令集机器)芯片或者通过使用dma(direct memory access,直接存储器访问)的方式来实现,无法直接在适配神经网络结构的运行处理设备上运行,进而导致了运算效率低、延时高、硬件资源利用率低等问题。


技术实现要素:

5.为解决或部分解决相关技术中存在的问题,本技术提供一种基于卷积神经网络的数据移位处理方法、装置及设备,能够实现在适配神经网络结构的运行处理设备上执行数据移位任务,可以提升运算效率,降低时延,提升硬件资源利用率。
6.本技术第一方面提供一种基于卷积神经网络的数据移位处理方法,应用于处理器,所述方法包括:
7.将输入数据通过预处理得到预处理数据;
8.根据不同移位操作需求,在卷积神经网络中将所述预处理数据通过移位单元多个不同的卷积计算层进行处理,得到移位运算数据;
9.将所述移位运算数据经过后处理得到输出数据。
10.在一实施方式中,所述将输入数据通过预处理得到预处理数据,包括:将输入的串行数据流转换通过拼接操作转换为矩阵数据块;
11.所述将所述移位运算数据经过后处理得到输出数据,包括:将矩阵数据块格式的移位运算数据转换为串行数据流。
12.在一实施方式中,所述在卷积神经网络中将所述预处理数据通过移位单元多个不同的卷积计算层进行处理,得到移位运算数据,包括:
13.在逻辑移位单元的第一卷积计算层将预处理数据进行卷积处理输出两通道卷积
数据后,通过三个不同的中间卷积计算层进行卷积处理,再通过第五卷积计算层进行卷积数据通道合并处理,得到逻辑移位的移位运算数据;或,
14.在循环移位单元的第一卷积计算层将预处理数据进行卷积处理输出三通道卷积数据后,通过四个不同的中间卷积计算层进行卷积处理,再通过第六卷积计算层进行卷积数据通道合并处理,得到循环移位的移位运算数据。
15.在一实施方式中,所述在逻辑移位单元的第一卷积计算层将预处理数据进行卷积处理输出两通道卷积数据后,通过三个不同的中间卷积计算层进行卷积处理,再通过第五卷积计算层进行卷积数据通道合并处理,得到逻辑移位的移位运算数据,包括:
16.在逻辑移位单元的第一卷积计算层将预处理数据进行卷积处理输出两通道卷积数据后,通过针对逻辑左移运算规律或逻辑右移运算规律设置的三个不同的中间卷积计算层进行卷积处理,再通过第五卷积计算层进行卷积数据通道合并处理,分别得到逻辑左移或逻辑右移的移位运算数据。
17.在一实施方式中,所述在循环移位单元的第一卷积计算层将预处理数据进行卷积处理输出三通道卷积数据后,通过四个不同的中间卷积计算层进行卷积处理,再通过第六卷积计算层进行卷积数据通道合并处理,得到循环移位的移位运算数据,包括:
18.在循环移位单元的第一卷积计算层将预处理数据进行卷积处理输出三通道卷积数据后,通过针对循环左移运算规律或循环右移运算规律设置的四个不同的中间卷积计算层进行卷积处理,再通过第六卷积计算层进行卷积数据通道合并处理,分别得到循环左移或循环右移的移位运算数据。
19.在一实施方式中,所述三个不同的中间卷积计算层中的每个中间卷积计算层,包括两个互不相同的卷积核,其中每个卷积核包括两个通道参数;或,
20.所述四个不同的中间卷积计算层中的每个中间卷积计算层,包括三个互不相同的卷积核,其中每个卷积核包括三个通道参数。
21.在一实施方式中,所述输入的串行数据流的字节长度位数为任一正整数的平方数或非平方数;
22.其中为非平方数时,将所述串行数据流切分为包含重叠的字节长度位数为任一正整数的平方数的数据段后进行预处理,并且在得到移位运算数据之后,根据移位方向上的后端数据段优先的原则进行拼接合并。
23.本技术第二方面提供一种基于卷积神经网络的数据移位处理装置,应用于处理器,所述装置包括:
24.预处理模块,用于将输入数据通过预处理得到预处理数据;
25.移位运算模块,用于根据不同移位操作需求,在卷积神经网络中将所述预处理模块的预处理数据通过多个不同的卷积计算层进行处理,得到移位运算数据;
26.后处理模块,用于将所述移位运算模块得到的移位运算数据经过后处理得到输出数据。
27.在一实施方式中,所述移位运算模块包括:
28.逻辑移位单元,用于在第一卷积计算层将预处理数据进行卷积处理输出两通道卷积数据后,通过三个不同的中间卷积计算层进行卷积处理,再通过第五卷积计算层进行卷积数据通道合并处理,得到逻辑移位的移位运算数据;或,
29.循环移位单元,用于在第一卷积计算层将预处理数据进行卷积处理输出三通道卷积数据后,通过四个不同的中间卷积计算层进行卷积处理,再通过第六卷积计算层进行卷积数据通道合并处理,得到循环移位的移位运算数据。
30.本技术第三方面提供一种人工智能芯片,包括如上所述的基于卷积神经网络的数据移位处理装置。
31.本技术第四方面提供一种计算设备,所述计算设备包括上述的人工智能芯片。
32.本技术第五方面提供一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及上述人工智能芯片;
33.其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
34.所述存储器件,用于存储数据;
35.所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;
36.所述控制器件,用于对所述人工智能芯片的状态进行监控。
37.本技术第六方面提供一种计算设备,包括:
38.处理器;以及
39.存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如上所述的方法。
40.本技术第七方面提供一种计算机可读存储介质,其上存储有可执行代码,当所述可执行代码被计算设备的处理器执行时,使所述处理器执行如上所述的方法。
41.本技术提供的技术方案可以包括以下有益效果:
42.本技术提供的方法,应用于处理器,由处理器将输入数据通过预处理得到预处理数据后,可以根据不同移位操作需求,在卷积神经网络中将所述预处理数据通过移位单元多个不同的卷积计算层进行处理,得到移位运算数据;再将所述移位运算数据经过后处理得到输出数据。这样,可以利用多个不同的卷积计算层来构建移位操作运算,实现在适配神经网络结构的运行处理设备上执行数据移位任务,从而提升了硬件资源利用率,提升了运算效率,降低了时延。
43.进一步的,本技术提供的方法,处理器可以将串行数据流转换为矩阵数据块,使得输入数据能够被卷积神经网络接收处理,最后再将矩阵数据块格式的移位运算数据转换为串行数据流。
44.进一步的,本技术提供的方法,处理器可以根据不同的移位操作需求,分别构建逻辑左移、逻辑右移、循环左移、循环右移等处理方式,可以满足处理器不同的数据移位处理任务。
45.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
附图说明
46.通过结合附图对本技术示例性实施方式进行更详细地描述,本技术的上述以及其它目的、特征和优势将变得更加明显,其中,在本技术示例性实施方式中,相同的参考标号通常代表相同部件。
47.图1是本技术实施例示出的基于卷积神经网络的数据移位处理方法的流程示意图;
48.图2是本技术实施例示出的基于卷积神经网络的数据移位处理方法的另一流程示意图;
49.图3是本技术实施例示出的基于卷积神经网络的数据移位处理方法的另一流程示意图;
50.图4是本技术实施例示出的串行数据流与矩阵数据块的转换示意图;
51.图5是本技术实施例示出的逻辑左移处理过程示意图;
52.图6是本技术实施例示出的逻辑右移处理过程示意图;
53.图7是本技术实施例示出的循环左移处理过程示意图;
54.图8是本技术实施例示出的循环右移处理过程示意图;
55.图9是本技术实施例示出的基于卷积神经网络的数据移位处理装置的结构示意图;
56.图10是本技术实施例示出的基于卷积神经网络的数据移位处理装置的另一结构示意图;
57.图11是本技术实施例示出的人工智能芯片的结构框图;
58.图12是本技术实施例示出的板卡的结构框图;
59.图13是本技术实施例示出的计算设备的结构示意图。
具体实施方式
60.下面将参照附图更详细地描述本技术的实施方式。虽然附图中显示了本技术的实施方式,然而应该理解,可以以各种形式实现本技术而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本技术更加透彻和完整,并且能够将本技术的范围完整地传达给本领域的技术人员。
61.在本技术使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术。在本技术和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
62.应当理解,尽管在本技术可能采用术语“第一”、“第二”、“第三”等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本技术的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
63.相关技术中,数据移位处理任务一般通过外挂arm(advanced risc machine,进阶精简指令集机器)芯片或者通过使用dma(direct memory access,直接存储器访问)的方式来实现,无法直接在适配神经网络结构的运行处理设备上运行,进而导致了运算效率低、延时高、硬件资源利用率低等问题。
64.针对上述问题,本技术实施例提供一种基于卷积神经网络的数据移位处理方法,
能够实现在适配神经网络结构的运行处理设备上执行数据移位任务,可以提升运算效率,降低时延,提升硬件资源利用率。
65.本技术基于卷积神经网络的数据处理方法可应用于处理器中,该处理器可以是通用处理器,例如cpu(central processing unit,中央处理器),也可以是用于执行人工智能运算的人工智能处理器。人工智能运算可包括机器学习运算、类脑运算等。其中,机器学习运算包括神经网络运算、k-means运算、支持向量机运算等。该人工智能处理器例如包括人工智能芯片处理器、gpu(graphics processing unit,图形处理单元)、npu(neural-network processing unit,神经网络处理单元)、dsp(digital signal process,数字信号处理单元)、现场可编程门阵列(field-programmable gate array,fpga)芯片中的一种或组合。
66.该人工智能处理器可以是应用于人工智能芯片中的处理器。其中人工智能芯片例如可以是神经网络芯片或其他芯片,神经网络芯片例如可以是卷积神经网络推理芯片、asic芯片等。本技术对处理器的具体类型不作限制。
67.在一种可能的实现方式中,本技术中所提及的处理器可包括多个处理单元,每个处理单元可以独立运行所分配到的各种任务,如:卷积运算任务、池化任务或全连接任务等。本技术对处理单元及处理单元所运行的任务不作限制。处理器中的多个处理单元既可共用部分存储空间,例如共用部分ram存储空间和寄存器堆,又可同时拥有各自的存储空间。
68.以下结合附图详细描述本技术实施例的技术方案。
69.图1是本技术实施例示出的基于卷积神经网络的数据移位处理方法的流程示意图。该方法可应用于处理器,该处理器可以包括通用处理器、人工智能处理器等,其中人工智能处理器可以是人工智能芯片处理器或gpu等。
70.参见图1,该方法包括:
71.s101、将输入数据通过预处理得到预处理数据。
72.该步骤中,可以将输入的串行数据流转换通过拼接操作转换为矩阵数据块。也就是说,输入数据可以是输入的串行数据流,预处理数据可以是矩阵数据块。
73.其中,串行数据流(serial),是一种由“0”与“1”组成的数据流,例如110010101、101001110等。
74.其中,串行数据流的字节长度位数可以是任一正整数的平方数。也就是说,串行数据流的字节长度位数可以是4位、9位、16位等字节长度的串行数据流。例如接收9位字节长度的串行数据流,如110010101。
75.在该步骤中,可以对输入的串行数据流进行形式转换,转换为矩阵数据形式的矩阵数据块(matrix)。例如,可以将9位字节长度的串行数据流,转换为3
×
3矩阵形式的矩阵数据块。
76.s102、根据不同移位操作需求,在卷积神经网络中将预处理数据通过移位单元多个不同的卷积计算层进行处理,得到移位运算数据。
77.该步骤中,可以包括:
78.在逻辑移位单元的第一卷积计算层将预处理数据进行卷积处理输出两通道卷积数据后,通过三个不同的中间卷积计算层进行卷积处理,再通过第五卷积计算层进行卷积
数据通道合并处理,得到逻辑移位的移位运算数据;或,
79.在循环移位单元的第一卷积计算层将预处理数据进行卷积处理输出三通道卷积数据后,通过四个不同的中间卷积计算层进行卷积处理,再通过第六卷积计算层进行卷积数据通道合并处理,得到循环移位的移位运算数据。
80.其中,在逻辑移位单元的第一卷积计算层将预处理数据进行卷积处理输出两通道卷积数据后,通过三个不同的中间卷积计算层进行卷积处理,再通过第五卷积计算层进行卷积数据通道合并处理,得到逻辑移位的移位运算数据,包括:在逻辑移位单元的第一卷积计算层将预处理数据进行卷积处理输出两通道卷积数据后,通过针对逻辑左移运算规律或逻辑右移运算规律设置的三个不同的中间卷积计算层进行卷积处理,再通过第五卷积计算层进行卷积数据通道合并处理,分别得到逻辑左移或逻辑右移的移位运算数据。
81.其中,在循环移位单元的第一卷积计算层将预处理数据进行卷积处理输出三通道卷积数据后,通过四个不同的中间卷积计算层进行卷积处理,再通过第六卷积计算层进行卷积数据通道合并处理,得到循环移位的移位运算数据,包括:在循环移位单元的第一卷积计算层将预处理数据进行卷积处理输出三通道卷积数据后,通过针对循环左移运算规律或循环右移运算规律设置的四个不同的中间卷积计算层进行卷积处理,再通过第六卷积计算层进行卷积数据通道合并处理,分别得到循环左移或循环右移的移位运算数据。
82.s103、将移位运算数据经过后处理得到输出数据。
83.该步骤中,可以将矩阵数据块格式的移位运算数据转换为串行数据流。
84.从该示例可以看出,本技术提供的方法,应用于处理器,由处理器将输入数据通过预处理得到预处理数据后,可以根据不同移位操作需求,在卷积神经网络中将预处理数据通过移位单元多个不同的卷积计算层进行处理,得到移位运算数据;再将所述移位运算数据经过后处理得到输出数据。这样,可以利用多个不同的卷积计算层来构建移位操作运算,实现在适配神经网络结构的运行处理设备上执行数据移位任务,从而提升了硬件资源利用率,提升了运算效率,降低了时延。
85.图2是本技术实施例的基于卷积神经网络的数据移位处理方法的另一流程示意图。图2中描述了逻辑移位的处理方式。
86.需要说明的是,逻辑移位包括逻辑左移与逻辑右移。逻辑左移指设定字节长度的串行数据流左移一位,并在数据流的右端补零,例如串行数据流101001110进行逻辑左移后为010011100。逻辑右移指设定字节长度的串行数据流右移一位,并在数据流的左端补零,例如串行数据流101001110进行逻辑左移后为010100111。
87.参见图2,该方法包括:
88.s201、接收输入的串行数据流。
89.其中,串行数据流(serial),是一种由“0”与“1”组成的数据流,例如110010101、101001110等。串行数据流的字节长度位数可以是任一正整数的平方数。也就是说,串行数据流的字节长度位数可以是4位、9位、16位等字节长度的串行数据流,本技术对此不作限定。在该步骤中,处理器可以接收设定字节长度的串行数据流,例如接收9位字节长度的串行数据流,如110010101。
90.s202、进行预处理,将输入的串行数据流转换为矩阵数据块。
91.在该步骤中,处理器可以对输入的串行数据流进行形式转换,转换为矩阵数据形
式的矩阵数据块。例如,可以将9位字节长度的串行数据流,转换为3
×
3矩阵形式的矩阵数据块。
92.如图4所示,9位字节长度的串行数据流中,从右至左排序分别为第一位、第二位直到第九位,首先取前三位的三个字节,并按照从左到右的顺序置入3
×
3矩阵的最上一行;然后取中间三位的三个字节,并按照从左到右的顺序置入3
×
3矩阵的中间一行;最后取后三位的三个字节,并按照从左到右的顺序置入3
×
3矩阵的最下一行。可以理解的是,也可以按照其他顺序进行排序以得到3
×
3矩阵形式的矩阵数据块。
93.又如图5所示,以串行数据流101001110为例,拼接转换的方式可以是将9位字节长度的串行数据流,按照3
×
3形式放入矩阵,得到3
×
3矩阵形式的矩阵数据块,该过程如图5所标识的“s/m”转换过程:
94.将101001110转换为
95.这样,转换得到的矩阵数据块可以适配卷积神经网络中的卷积运算。
96.上述将串行数据流转换为矩阵数据块的操作可以称为数据预处理操作,可以利用“s/m”来表示。
97.s203、将进行预处理得到的矩阵数据块,根据逻辑移位需求,通过卷积神经网络中多个不同的卷积计算层进行处理,得到逻辑左移或逻辑右移的移位运算数据。
98.在该步骤中,在卷积神经网络中,处理器可以在第一卷积计算层将预处理数据进行卷积处理输出两通道卷积数据后,通过三个不同的中间卷积计算层进行卷积处理,再通过第五卷积计算层进行卷积数据通道合并处理,得到逻辑移位的移位运算数据。
99.其中,逻辑移位需求可以包括:“逻辑左移”与“逻辑右移”操作需求。不同逻辑移位单元可以是“逻辑左移单元”、“逻辑右移单元”等,这些逻辑移位单元也可以称为逻辑移位电路。
100.其中,在卷积神经网络中,可以通过构建卷积神经网络中的卷积计算层,对卷积计算层中的卷积核、卷积处理时的填充、步长及偏置等卷积参数进行预先设定,从而适配对应的逻辑移位需求,实现对矩阵数据块的逻辑移位处理。
101.其中,预处理数据可以是单通道矩阵数据块,本实施例以单通道矩阵数据块为例但不局限于此,单通道矩阵数据块可以用a表示。
102.其中,三个不同的中间卷积计算层可以包括第二卷积计算层、第三卷积计算层、第四卷积计算层。
103.其中,第一卷积计算层可以理解为用于实现对数据的“复制”操作,第二卷积计算层、第三卷积计算层以及第四卷积计算层可以理解为用于实现对数据的“搬移”操作,第五卷积计算层可以理解为用于实现对数据的“重排”操作。
104.其中,第一卷积计算层设置有两个卷积核,两个卷积核均为单通道的3
×
3(即kernel=3x3)卷积核,步长设置为1(即stride=1),填充为1(即padding=1),偏置值设置为0(即bias=0)。
105.第二卷积计算层、第三卷积计算层及第四卷积计算层均设置有两个卷积核,且两个卷积核均为两通道的3
×
3(即kernel=3x3)卷积核;第二卷积计算层、第三卷积计算层及
第四卷积计算层的步长均设置为1(即stride=1),填充均为1(即padding=1),偏置值设置均为0(即bias=0)。
106.第五卷积计算层设置有一个卷积核,该卷积核为两通道的3
×
3(即kernel=3x3)卷积核,步长设置为1(即stride=1),填充为1(即padding=1),偏置值设置为0(即bias=0)。
107.以下分别介绍执行“逻辑左移”与“逻辑右移”的处理过程。
108.(1)逻辑左移运算
109.处理器在第一卷积计算层将预处理数据进行卷积处理输出两通道卷积数据后,通过针对逻辑左移运算规律的三个不同的中间卷积计算层进行卷积处理,再通过第五卷积计算层进行卷积数据通道合并处理,得到逻辑左移的移位运算数据。
110.也就是说,为了实现数据的“逻辑左移”操作,数据经预处理操作后,分别经过第一卷积计算层、第二卷积计算层、第三卷积计算层、第四卷积计算层以及第五卷积计算层采用不同卷积核进行处理,再经后处理操作,就可以得到“逻辑左移”操作处理后的输出结果。
111.请一并参见图5,在一实施方式中,第一卷积计算层、第二卷积计算层、第三卷积计算层、第四卷积计算层及第五卷积计算层的处理过程包括:
112.1)、在第一卷积计算层将输入的单通道矩阵数据块根据卷积参数进行卷积处理。
113.该卷积处理中,两个卷积核相同,各卷积核的通道参数均为
114.输入的单通道矩阵数据块,为:矩阵数据块
115.其中,矩阵数据块a由串行输入数据流101001110转换得到。
116.矩阵数据块a在经过padding=1的填充处理后,为
117.在通过第一卷积计算层中两个卷积核按照卷积原理进行卷积处理后,得到输出的两通道矩阵数据与
118.可以发现,在该步骤中实现了对输入的单通道矩阵数据块的“复制”。
119.2)、在第二卷积计算层中将第一卷积计算层输出的数据根据卷积参数进行卷积处理。
120.该卷积处理中,其中一个卷积核的通道参数为与另一个
卷积核的通道参数为与
121.例如,将双通道矩阵数据与在经过padding=1的填充处理后分别通过第二卷积计算层中的两个卷积核进行卷积处理,分别得到:
122.和
123.拟合矩阵数据后,得到输出的两通道矩阵数据:
124.与
125.可以发现,在该步骤中实现了对一通道矩阵数据的向上“搬移”得到对另一通道矩阵数据的向左“搬移”得到
126.3)、在第三卷积计算层中将第二卷积计算层输出的数据根据卷积参数进行卷积处理。
127.该卷积处理中,其中一个卷积核的通道参数为与另一个卷积核的通道参数为与
128.例如,将双通道矩阵数据与在经过padding=1的填充处理后分别通过第三卷积计算层中的两个卷积核进行卷积处理,分别得到:
129.和
130.拟合矩阵数据后,得到输出的两通道矩阵数据:
131.与
132.可以发现,在该步骤中实现了对一通道矩阵数据的向右“搬移”得到对另一通道矩阵数据的“复制”得到
133.4)、在第四卷积计算层中将第三卷积计算层输出的数据根据卷积参数进行卷积处理。
134.该卷积处理中,其中一个卷积核的通道参数为与另一个卷积核的通道参数为与
135.例如,将双通道矩阵数据与在经过padding=1的填充处理后分别通过第四卷积计算层中的两个卷积核进行卷积处理,分别得到:
136.和
137.拟合矩阵数据后,得到输出的两通道矩阵数据:
138.与
139.可以发现,在该步骤中实现了对一通道矩阵数据的向右“搬移”得到对另一通道矩阵数据的“复制”得到
140.5)、在第五卷积计算层中将第四卷积计算层输出的数据根据卷积参数进行卷积处理。
141.该卷积处理中,第五卷积计算层中的卷积核的通道参数为:
142.与
143.例如,将双通道矩阵数据与在经过padding=1的填充处理后通过第五卷积计算层中的卷积核进行卷积处理,
144.得到:
145.可以发现,在该步骤中通过对两通道矩阵数据进行合并,从而实现了数据的“重排”的效果。
146.可以看出,在“逻辑左移”操作过程中,利用了卷积神经网络的卷积运算特性,通过利用第一卷积计算层、第二卷积计算层、第三卷积计算层、第四卷积计算层及第五卷积计算层的不同卷积核对输入数据进行不同的操作,从而实现了对输入数据的逻辑左移操作,得到了逻辑左移运算结果的矩阵数据块。
147.(2)逻辑右移运算
148.在第一卷积计算层将预处理数据进行卷积处理输出两通道卷积数据后,通过针对逻辑右移运算规律的三个不同的中间卷积计算层进行卷积处理,再通过第五卷积计算层进行卷积数据通道合并处理,得到逻辑右移的移位运算数据。
149.也就是说,为了实现数据的“逻辑右移”操作,数据经预处理操作后,分别经过第一卷积计算层、第二卷积计算层、第三卷积计算层、第四卷积计算层以及第五卷积计算层采用不同卷积核进行处理,再经后处理操作,就可以得到“逻辑右移”操作处理后的输出结果。
150.请一并参见图6,在一实施方式中,第一卷积计算层、第二卷积计算层、第三卷积计算层、第四卷积计算层及第五卷积计算层的处理过程包括:
151.1)、在第一卷积计算层将输入的单通道矩阵数据块根据卷积参数进行卷积处理。
152.该卷积处理中,两个卷积核相同,各卷积核的通道参数均为
153.输入的单通道矩阵数据块,为:矩阵数据块
154.其中,矩阵数据块a由串行输入数据流101001110转换得到。
155.矩阵数据块a在经过padding=1的填充处理后,为
156.在通过第一卷积计算层中两个卷积核按照卷积原理进行卷积处理后,得到输出的两通道矩阵数据与
157.可以发现,在该步骤中实现了对输入的单通道矩阵数据块的“复制”。
158.2)、在第二卷积计算层中将第一卷积计算层输出的数据根据卷积参数进行卷积处理。
159.该卷积处理中,其中一个卷积核的通道参数为与另一个卷积核的通道参数为与
160.例如,将双通道矩阵数据与在经过padding=1的填充处理后分别通过第二卷积计算层中的两个卷积核进行卷积处理,分别得到:
161.和
162.拟合矩阵数据后,得到输出的两通道矩阵数据:
163.与
164.可以发现,在该步骤中实现了对一通道矩阵数据的向下“搬移”得到对另一通道矩阵数据的向右“搬移”得到
165.3)、在第三卷积计算层中将第二卷积计算层输出的数据根据卷积参数进行卷积处理。
166.该卷积处理中,其中一个卷积核的通道参数为与另一个卷积核的通道参数为与
167.例如,将双通道矩阵数据与在经过padding=1的填充处理后分别通过第三卷积计算层中的两个卷积核进行卷积处理,分别得到:
168.和
169.拟合矩阵数据后,得到输出的两通道矩阵数据:
170.与
171.可以发现,在该步骤中实现了对一通道矩阵数据的向左“搬移”得到对另一通道矩阵数据的“复制”得到
172.4)、在第四卷积计算层中将第三卷积计算层输出的数据根据卷积参数进行卷积处理。
173.该卷积处理中,其中一个卷积核的通道参数为与另一个卷积核的通道参数为与
174.例如,将双通道矩阵数据与在经过padding=1的填充处理后分别通过第四卷积计算层中的两个卷积核进行卷积处理,分别得到:
175.和
176.拟合矩阵数据后,得到输出的两通道矩阵数据:
177.与
178.可以发现,在该步骤中实现了对一通道矩阵数据的向左“搬移”得到对另一通道矩阵数据的“复制”得到
179.5)、在第五卷积计算层中将第四卷积计算层输出的数据根据卷积参数进行卷积处
理。
180.该卷积处理中,第五卷积计算层中的卷积核的通道参数为:
181.与
182.例如,将双通道矩阵数据与在经过padding=1的填充处理后通过第五卷积计算层中的卷积核进行卷积处理,
183.得到:
184.可以发现,在该步骤中通过对两通道矩阵数据进行合并,从而实现了数据的“重排”的效果。
185.可以看出,在“逻辑右移”操作过程中,利用了卷积神经网络的卷积运算特性,通过利用第一卷积计算层、第二卷积计算层、第三卷积计算层、第四卷积计算层及第五卷积计算层的不同卷积核对输入数据进行不同的操作,从而实现了对输入数据的逻辑右移操作,得到了逻辑右移运算结果的矩阵数据块。
186.综上,可以发现,“逻辑左移”与“逻辑右移”的处理,其不同处在于卷积神经网络中的三个中间卷积层(即第二卷积计算层、第三卷积计算层、第四卷积计算层)的卷积核的参数设置。通过对三个中间卷积层卷积核参数的不同设置,从而实现不同的数据“搬移”操作,以对应实现数据的“逻辑左移”与“逻辑右移”的处理。
187.s204、进行后处理,将矩阵数据块格式的移位运算数据转换为串行数据流并输出。
188.在该步骤中,可以实现对矩阵数据块的形式转换,转换为串行数据流。例如,可以将3
×
3矩阵形式的矩阵数据块,转换为9位字节长度的串行数据流。该操作过程可以称为数据后处理操作,其为数据预处理操作(即将串行数据流转换为矩阵数据块)的逆操作,可以使用“m/s”来表示。例如图5所示:
189.可以转换为010011100;
190.例如图6所示:
191.可以转换为010100111。
192.从该实施例可以看出,本技术实施例提供的方法,对于不同的逻辑移位需求,例如“逻辑左移”与“逻辑右移”的逻辑移位,可以根据不同的逻辑移位规律,结合卷积神经网络的运行原理,以构建不同类型的卷积神经网络来实现对上述“逻辑左移”与“逻辑右移”的处理,从而实现在适配神经网络结构的运行处理设备(例如,神经网络专用芯片、通用处理器以及图像处理器等)上执行数据的逻辑移位任务,可以充分发挥神经网络专用芯片优异的
计算加速功能,使得不再需要外挂arm芯片或者利用dma芯片来实现逻辑移位,从而能够充分利用硬件计算资源,可以同时执行神经网络推理任务和逻辑移位任务,可以提升运算效率,降低时延。
193.图3是本技术实施例的基于卷积神经网络的数据移位处理方法的另一流程示意图。图3中描述了循环移位的处理方式。
194.需要说明的是,循环移位包括循环左移与循环右移。循环左移指设定字节长度的串行数据流左移一位,并将原串行数据流左端的一位字符移动至右端,例如串行数据流101001110进行循环左移后为010011101。循环右移指设定字节长度的串行数据流右移一位,并将原串行数据流右端的一位字符移动至左端,例如串行数据流101001110进行循环右移后为010100111。
195.参见图3,该方法包括:
196.s301、接收输入的串行数据流。
197.该步骤可以参见步骤s201中的描述,此处不再赘述。
198.s302、进行预处理,将输入的串行数据流转换为矩阵数据块。
199.该步骤可以参见步骤s202中的描述,此处不再赘述。
200.s303、将进行预处理得到的矩阵数据块,根据循环移位需求,通过卷积神经网络中多个不同的卷积计算层进行处理,得到循环左移或循环右移的移位运算数据。
201.在该步骤中,在卷积神经网络中,处理器可以在第一卷积计算层将预处理数据进行卷积处理输出三通道卷积数据后,通过四个不同的中间卷积计算层进行卷积处理,再通过第六卷积计算层进行卷积数据通道合并处理,得到循环移位的移位运算数据,得到循环移位的移位运算数据。
202.其中,循环移位需求可以包括:“循环左移”与“循环右移”操作需求。不同逻辑移位单元可以是“循环逻辑左移单元”、“循环逻辑右移单元”等,这些逻辑移位单元也可以称为循环逻辑移位电路。
203.其中,在卷积神经网络中,可以通过构建卷积神经网络中的卷积计算层,对卷积计算层中的卷积核、卷积处理时的填充、步长及偏置等卷积参数进行预先设定,从而适配对应的循环移位需求,实现对矩阵数据块的循环移位处理。
204.其中,预处理数据可以是单通道矩阵数据块,本实施例以单通道矩阵数据块为例但不局限于此,单通道矩阵数据块可以用a表示。
205.其中,四个不同的中间卷积计算层可以包括第二卷积计算层、第三卷积计算层、第四卷积计算层、第五卷积计算层。
206.其中,第一卷积计算层可以理解为用于实现对数据的“复制”操作,第二卷积计算层、第三卷积计算层、第四卷积计算层以及第五卷积计算层可以理解为用于实现对数据的“搬移”操作,第六卷积计算层可以理解为用于实现对数据的“重排”操作。
207.其中,第一卷积计算层设置有三个卷积核,三个卷积核均为单通道的3
×
3(即kernel=3x3)卷积核,步长设置为1(即stride=1),填充为1(即padding=1),偏置值设置为0(即bias=0)。
208.第二卷积计算层、第三卷积计算层、第四卷积计算层及第五卷积计算层均设置有三个卷积核,且三个卷积核均为三通道的3
×
3(即kernel=3x3)卷积核;第二卷积计算层、
第三卷积计算层、第四卷积计算层及第五卷积计算层的步长均设置为1(即stride=1),填充均为1(即padding=1),偏置值设置均为0(即bias=0)。
209.第六卷积计算层设置有一个卷积核,该卷积核为三通道的3
×
3(即kernel=3x3)卷积核,步长设置为1(即stride=1),填充为1(即padding=1),偏置值设置为0(即bias=0)。
210.以下分别介绍执行“循环左移”与“循环右移”的处理过程。
211.(3)循环左移运算
212.处理器在第一卷积计算层将预处理数据进行卷积处理输出三通道卷积数据后,通过针对循环左移运算规律的四个不同的中间卷积计算层进行卷积处理,再通过第六卷积计算层进行卷积数据通道合并处理,得到循环左移的移位运算数据。
213.也就是说,为了实现数据的“循环左移”操作,数据经预处理操作后,分别经过第一卷积计算层、第二卷积计算层、第三卷积计算层、第四卷积计算层、第五卷积计算层以及第六卷积计算层采用不同卷积核进行处理,再经后处理操作,就可以得到“循环左移”操作处理后的输出结果。
214.请一并参见图7,在一实施方式中,第一卷积计算层、第二卷积计算层、第三卷积计算层、第四卷积计算层、第五卷积计算层及第六卷积计算层的处理过程包括:
215.1)、在第一卷积计算层将输入的单通道矩阵数据块根据卷积参数进行卷积处理。
216.该卷积处理中,三个卷积核相同,各卷积核的通道参数均为
217.输入的单通道矩阵数据块,为:矩阵数据块
218.其中,矩阵数据块a由串行输入数据流101001110转换得到。
219.矩阵数据块a在经过padding=1的填充处理后,为
220.在通过第一卷积计算层中三个卷积核按照卷积原理进行卷积处理后,得到输出的三通道矩阵数据及
221.可以发现,在该步骤中实现了对输入的单通道矩阵数据块的“复制”。
222.2)、在第二卷积计算层中将第一卷积计算层输出的数据根据卷积参数进行卷积处理。
223.在该卷积处理中,
224.第一个卷积核的通道参数为及
225.第二个卷积核的通道参数为及
226.第三个卷积核的通道参数为及
227.例如,将三通道矩阵数据及在经过padding=1的填充处理后分别通过第二卷积计算层中的三个卷积核进行卷积处理,得到:
[0228][0229]

[0230]
拟合矩阵数据后,得到输出的三通道矩阵数据:
[0231]

[0232]
可以发现,在该步骤中实现了对第一通道矩阵数据的向右“搬移”得到对第二通道矩阵数据的向右“搬移”得到对第三通道矩阵数据的向左“搬移”得到
[0233]
3)、在第三卷积计算层中将第二卷积计算层输出的数据根据卷积参数进行卷积处理。
[0234]
在该卷积处理中,
[0235]
第一个卷积核的通道参数为及
[0236]
第二个卷积核的通道参数为及
[0237]
第三个卷积核的通道参数为及
[0238]
例如,将三通道矩阵数据及
[0239]
在经过padding=1的填充处理后分别通过第三卷积计算层中的三个卷积核进行卷积处理,得到:
[0240][0241]

[0242]
拟合矩阵数据后,得到输出的三通道矩阵数据:
[0243]

[0244]
可以发现,在该步骤中实现了对第一通道矩阵数据的向右“搬移”得到对第二通道矩阵数据的向右“搬移”得到对第三通道矩阵数据的“复制”得到
[0245]
4)、在第四卷积计算层中将第三卷积计算层输出的数据根据卷积参数进行卷积处理。
[0246]
在该卷积处理中,
[0247]
第一个卷积核的通道参数为及
[0248]
第二个卷积核的通道参数为及
[0249]
第三个卷积核的通道参数为及
[0250]
例如,将三通道矩阵数据及在经过padding=1的填充处理后分别通过第四卷积计算层中的三个卷积核进行卷积处理,得到:
[0251][0252]

[0253]
拟合矩阵数据后,得到输出的三通道矩阵数据:
[0254]

[0255]
可以发现,在该步骤中实现了对第一通道矩阵数据的向下“搬移”得到对第二通道矩阵数据的向上“搬移”得到对第三通道矩阵数据的“复制”得到
[0256]
5)、在第五卷积计算层中将第四卷积计算层输出的数据根据卷积参数进行卷积处理。
[0257]
在该卷积处理中,
[0258]
第一个卷积核的通道参数为及
[0259]
第二个卷积核的通道参数为及
[0260]
第三个卷积核的通道参数为及
[0261]
例如,将三通道矩阵数据及在经过padding=1的填充处理后分别通过第五卷积计算层中的三个卷积核进行卷积处理,得到:
[0262][0263]

[0264]
拟合矩阵数据后,得到输出的三通道矩阵数据:
[0265]

[0266]
可以发现,在该步骤中实现了对第一通道矩阵数据的向下“搬移”得到对第二通道矩阵数据的“复制”得到对第三通道矩阵数据的“复制”得到
[0267]
6)、在第六卷积计算层中将第五卷积计算层输出的数据根据卷积参数进行卷积处理。
[0268]
该卷积处理中,第六卷积计算层中的卷积核的通道参数为:
[0269]

[0270]
例如,将三通道矩阵数据及在经过padding=1的填充处理后通过第六卷积计算层中的卷积核进行卷积处理,
[0271]
得到:
[0272]
可以发现,在该步骤中通过对三通道矩阵数据进行合并,从而实现了数据的“重排”的效果。
[0273]
可以看出,在“循环左移”操作过程中,利用了卷积神经网络的卷积运算特性,通过
利用第一卷积计算层、第二卷积计算层、第三卷积计算层、第四卷积计算层、第五卷积计算层及第六卷积计算层的不同卷积核对输入数据进行不同的操作,从而实现了对输入数据的循环左移操作,得到了循环左移运算结果的矩阵数据块。
[0274]
(4)循环右移运算
[0275]
处理器在第一卷积计算层将预处理数据进行卷积处理输出三通道卷积数据后,通过针对循环右移运算规律的四个不同的中间卷积计算层进行卷积处理,再通过第六卷积计算层进行卷积数据通道合并处理,得到循环右移的移位运算数据。
[0276]
也就是说,为了实现数据的“循环右移”操作,数据经预处理操作后,分别经过第一卷积计算层、第二卷积计算层、第三卷积计算层、第四卷积计算层、第五卷积计算层以及第六卷积计算层采用不同卷积核进行处理,再经后处理操作,就可以得到“循环右移”操作处理后的输出结果。
[0277]
请一并参见图8,在一实施方式中,第一卷积计算层、第二卷积计算层、第三卷积计算层、第四卷积计算层、第五卷积计算层及第六卷积计算层的处理过程包括:
[0278]
1)、在第一卷积计算层将输入的单通道矩阵数据块根据卷积参数进行卷积处理。
[0279]
该卷积处理中,三个卷积核相同,各卷积核的通道参数均为
[0280]
输入的单通道矩阵数据块,为:矩阵数据块其中,矩阵数据块a由串行输入数据流101001110转换得到。
[0281]
矩阵数据块a在经过padding=1的填充处理后,为
[0282]
在通过第一卷积计算层中三个卷积核按照卷积原理进行卷积处理后,得到输出的三通道矩阵数据及
[0283]
可以发现,在该步骤中实现了对输入的单通道矩阵数据块的“复制”。
[0284]
2)、在第二卷积计算层中将第一卷积计算层输出的数据根据卷积参数进行卷积处理。
[0285]
在该卷积处理中,
[0286]
第一个卷积核的通道参数为及
[0287]
第二个卷积核的通道参数为及
[0288]
第三个卷积核的通道参数为及
[0289]
例如,将三通道矩阵数据及在经过padding=1的填充处理后分别通过第二卷积计算层中的三个卷积核进行卷积处理,得到:
[0290][0291]

[0292]
拟合矩阵数据后,得到输出的三通道矩阵数据:
[0293]

[0294]
可以发现,在该步骤中实现了对第一通道矩阵数据的向左“搬移”得到对第二通道矩阵数据的向左“搬移”得到对第三通道矩阵数据的向右“搬移”得到
[0295]
3)、在第三卷积计算层中将第二卷积计算层输出的数据根据卷积参数进行卷积处理。
[0296]
在该卷积处理中,
[0297]
第一个卷积核的通道参数为及
[0298]
第二个卷积核的通道参数为及
[0299]
第三个卷积核的通道参数为及
[0300]
例如,将三通道矩阵数据及在经过padding=1的填充处理后分别通过第三卷积计算层中的三个卷积核进行卷积处理,得到:
[0301][0302]

[0303]
拟合矩阵数据后,得到输出的三通道矩阵数据:
[0304]

[0305]
可以发现,在该步骤中实现了对第一通道矩阵数据的向左“搬移”的对第二通道矩阵数据的向右“搬移”得到对第三通道矩阵数据的“复制”得到
[0306]
4)、在第四卷积计算层中将第三卷积计算层输出的数据根据卷积参数进行卷积处理。
[0307]
在该卷积处理中,
[0308]
第一个卷积核的通道参数为及
[0309]
第二个卷积核的通道参数为及
[0310]
第三个卷积核的通道参数为及
[0311]
例如,将三通道矩阵数据及在经过padding=1的填充处理后分别通过第四卷积计算层中的三个卷积核进行卷积处理,得到:
[0312][0313]

[0314]
拟合矩阵数据后,得到输出的三通道矩阵数据:
[0315]

[0316]
可以发现,在该步骤中实现了对第一通道矩阵数据的向上“搬移”得到对第二通道矩阵数据的向下“搬移”得到对第三通道矩阵数据的“复制”得到
[0317]
5)、在第五卷积计算层中将第四卷积计算层输出的数据根据卷积参数进行卷积处理。
[0318]
在该卷积处理中,
[0319]
第一个卷积核的通道参数为及
[0320]
第二个卷积核的通道参数为及
[0321]
第三个卷积核的通道参数为及
[0322]
例如,将三通道矩阵数据及在经过padding=1的填充处理后分别通过第五卷积计算层中的三个卷积核进行卷积处理,得到:
[0323]
[0324]

[0325]
拟合矩阵数据后,得到输出的三通道矩阵数据:
[0326]

[0327]
可以发现,在该步骤中实现了对第一通道矩阵数据的向上“搬移”得到对第二通道矩阵数据的“复制”得到对第三通道矩阵数据的“复制”得到
[0328]
6)、在第六卷积计算层中将第五卷积计算层输出的数据根据卷积参数进行卷积处理。
[0329]
该卷积处理中,第六卷积计算层中的卷积核的通道参数为:
[0330]

[0331]
例如,将三通道矩阵数据及在经过padding=1的填充处理后通过第六卷积计算层中的卷积核进行卷积处理,
[0332]
得到:
[0333]
可以发现,在该步骤中通过对三通道矩阵数据进行合并,从而实现了数据的“重排”的效果。
[0334]
可以看出,在“循环右移”操作过程中,利用了卷积神经网络的卷积运算特性,通过利用第一卷积计算层、第二卷积计算层、第三卷积计算层、第四卷积计算层、第五卷积计算层及第六卷积计算层的不同卷积核对输入数据进行不同的操作,从而实现了对输入数据的循环右移操作,得到了循环右移运算结果的矩阵数据块。
[0335]
综上,可以发现,“循环左移”与“循环右移”的处理,其不同处在于卷积神经网络中的四个中间卷积层(即第二卷积计算层、第三卷积计算层、第四卷积计算层、第五卷积计算层)的卷积核的参数设置。通过对四个中间卷积层卷积核参数的不同设置,从而实现不同的数据“搬移”操作,以对应实现数据的“循环左移”与“循环右移”的处理。
[0336]
s304、进行后处理,将矩阵数据块格式的移位运算数据转换为串行数据流并输出。
[0337]
在该步骤中,可以实现对矩阵数据块的形式转换,转换为串行数据流。例如,可以将3
×
3矩阵形式的矩阵数据块,转换为9位字节长度的串行数据流。该操作过程可以称为数据后处理操作,其为数据预处理操作(即将串行数据流转换为矩阵数据块)的逆操作,可以使用“m/s”来表示。例如图7所示:
[0338]
可以转换为010011101,也即串行输入数据流101001110经过循环右移后得到010011101;
[0339]
例如图8所示:可以转换为010100111,也即串行输入数据流101001110经过循环右移后得到010100111。
[0340]
从该实施例可以看出,本技术实施例提供的方法,对于不同的循环移位需求,例如“循环左移”与“循环右移”的循环移位,可以根据不同的循环移位规律,结合卷积神经网络的运行原理,以构建不同类型的卷积神经网络来实现对上述“循环左移”与“循环右移”的处理,从而实现在适配神经网络结构的运行处理设备(例如,神经网络专用芯片、通用处理器以及图像处理器等)上执行数据的循环移位任务,可以充分发挥神经网络专用芯片优异的计算加速功能,使得不再需要外挂arm芯片或者利用dma芯片来实现循环移位,从而能够充分利用硬件计算资源,可以同时执行神经网络推理任务和循环移位任务,可以提升运算效率,降低时延。
[0341]
其中,不同类型的卷积神经网络可以通过构建不同类型的卷积计算层来实现,不同类型的卷积计算层可以通过构建不同类型的卷积核来实现。相关技术中,可以利用caffe、tensorflow、pytorch等训练平台上实现对卷积核的参数定制,从而构建不同类型的卷积计算层,进而实现对不同类型的卷积神经网络的构建,以适配不同数据移位操作的处理需求。
[0342]
需要说明的是,相关技术中,数据的移位通过外挂arm(advanced risc machine,进阶精简指令集机器)芯片或者通过使用dma(direct memory access,直接存储器访问)的方式实现。然而,外挂arm和使用dma的方式会由于内存(memory)的数据i/o(输入/输出)的传输导致运算效率低下,产生一定的延时。本技术实施例提供的方法,利用多个不同的卷积计算层来构建移位操作运算,实现在适配神经网络结构的运行处理设备上执行数据移位任务。因此,数据的移位处理可以在如神经网络专用芯片、通用处理器以及图像处理器上执行,无需外挂arm和使用dma的方式来进行数据移位处理,从而提升了硬件资源利用率,提升了运算效率,降低了时延。
[0343]
可以理解,本技术上述内容都是对9位字节长度的串行数据流的输入数据进行“逻辑左移”、“逻辑右移”、“循环左移”及“循环右移”运算举例说明但不局限于此,在此基础上可以修改各卷积计算层中的卷积核的尺寸(长宽)及其参数,以适配接收处理不同字节长度的串行数据流的移位操作。
[0344]
进一步的,在此基础上还可以通过增加各卷积计算层中的卷积核的通道
(channle)深度,以扩大各卷积计算层的维度,从而可以同时接收处理多个输入数据,实现了对可处理数据的容量扩大(即扩大了batch size),提升对输入数据的移位处理效率。
[0345]
进一步的,对于输入数据为设定字节长度的串行数据流,且其设定字节长度位数不是任一正整数的平方数时(即长度不是平方数),可以将该串行数据流进行切分,再分别进行移位处理;在移位处理完成后,再依据“移位方向上的后端数据段优先”的原则选择性保留重叠部分来进行拼接合并,即可完成其移位操作处理。例如,可以依据“移位方向上的后端数据段全保留、前端数据段舍去最末一位字节”的原则进行拼接合并,即可完成其移位操作处理。例如,对7位字节长度的串行数据流进行逻辑左移处理,可以将7位字节长度的串行数据流进行拆分,形成a与b两份由4位字节长度构成的串行数据流,a串行数据流取前四位字节数据,b串行数据流取后四位字节数据,在分别对a与b进行图5实施例的逻辑左移处理后,对应得到a1与b1,根据“移位方向上的后端数据段全保留、前端数据段舍去最末一位字节”的原则,所以保留b1数据,对于“移位方向上的前端数据段”a1保留前3位字节,拼接合并后即得到7位字节长度的串行数据流,实现了对原始输入的7位字节长度的串行数据流的逻辑左移处理。
[0346]
还需说明的是,对于更加泛化的情况,例如非定长的数据段,可以参考本技术方案中对数据进行左(右)、上(下)一次移位的卷积操作,通过增加左(右)、上(下)操作的层数来调整对非定常数据的逻辑(循环)左(右)移位操作。这样的泛化操作还可以用于移位多次等操作。
[0347]
与前述应用功能实现方法实施例相对应,本技术还提供了一种基于卷积神经网络的数据移位处理装置、计算设备、芯片、板卡及相应的实施例。
[0348]
图9是本技术实施例示出的基于卷积神经网络的数据移位处理装置的结构示意图。
[0349]
参见图9,一种基于卷积神经网络的数据移位处理装置90,应用于处理器。基于卷积神经网络的数据移位处理装置90包括:预处理模块91、移位运算模块92、后处理模块93。
[0350]
预处理模块91,用于将输入数据通过预处理得到预处理数据。预处理模块91可以将输入的串行数据流转换通过拼接操作转换为矩阵数据块。也就是说,输入数据可以是输入的串行数据流,预处理数据可以是矩阵数据块。其中,串行数据流(serial),是一种由“0”与“1”组成的数据流,例如110010101、101001110等。
[0351]
移位运算模块92,用于根据不同移位操作需求,在卷积神经网络中将预处理模块91的预处理数据通过多个不同的卷积计算层进行处理,得到移位运算数据。移位运算模块92在第一卷积计算层将预处理数据进行卷积处理输出两通道卷积数据后,通过三个不同的中间卷积计算层进行卷积处理,再通过第五卷积计算层进行卷积数据通道合并处理,得到逻辑移位的移位运算数据;或,在第一卷积计算层将预处理数据进行卷积处理输出三通道卷积数据后,通过四个不同的中间卷积计算层进行卷积处理,再通过第六卷积计算层进行卷积数据通道合并处理,得到循环移位的移位运算数据。
[0352]
后处理模块93,用于将移位运算模块92得到的移位运算数据经过后处理得到输出数据。后处理模块93可以将矩阵数据块格式的移位运算数据转换为串行数据流。
[0353]
本技术提供的装置,应用于处理器,由处理器将输入数据通过预处理得到预处理数据后,可以根据不同移位操作需求,在卷积神经网络中将预处理数据通过多个不同的卷
积计算层进行处理,得到移位运算数据;再将移位运算数据经过后处理得到输出数据。这样,可以利用多个不同的卷积计算层来构建移位操作运算,实现在适配神经网络结构的运行处理设备上执行数据移位任务,从而提升了硬件资源利用率,提升了运算效率,降低了时延。
[0354]
图10是本技术实施例示出的基于卷积神经网络的数据移位处理装置的另一结构示意图。
[0355]
参见图10,一种基于卷积神经网络的数据移位处理装置90,应用于处理器。基于卷积神经网络的数据移位处理装置90包括:预处理模块91、移位运算模块92、后处理模块93。其中,移位运算模块92包括:逻辑移位单元921、循环移位单元922。
[0356]
逻辑移位单元921,用于在第一卷积计算层将预处理数据进行卷积处理输出两通道卷积数据后,通过三个不同的中间卷积计算层进行卷积处理,再通过第五卷积计算层进行卷积数据通道合并处理,得到逻辑移位的移位运算数据。
[0357]
逻辑移位单元921可以在第一卷积计算层将预处理数据进行卷积处理输出两通道卷积数据后,通过针对逻辑左移运算规律或逻辑右移运算规律设置的三个不同的中间卷积计算层进行卷积处理,再通过第五卷积计算层进行卷积数据通道合并处理,分别得到逻辑左移或逻辑右移的移位运算数据。其中,三个不同的中间卷积计算层中的每个中间卷积计算层,包括两个互不相同的卷积核,其中每个卷积核包括两个通道参数。
[0358]
循环移位单元922,用于在第一卷积计算层将预处理数据进行卷积处理输出三通道卷积数据后,通过四个不同的中间卷积计算层进行卷积处理,再通过第六卷积计算层进行卷积数据通道合并处理,得到循环移位的移位运算数据。循环移位单元922可以在第一卷积计算层将预处理数据进行卷积处理输出三通道卷积数据后,通过针对循环左移运算规律或循环右移运算规律设置的四个不同的中间卷积计算层进行卷积处理,再通过第六卷积计算层进行卷积数据通道合并处理,分别得到循环左移或循环右移的移位运算数据。其中,四个不同的中间卷积计算层中的每个中间卷积计算层,包括三个互不相同的卷积核,其中每个卷积核包括三个通道参数。
[0359]
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不再做详细阐述说明。
[0360]
应该理解,上述的装置实施例仅是示意性的,本技术的装置还可通过其它的方式实现。例如,上述实施例中单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
[0361]
另外,若无特别说明,在本技术各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
[0362]
集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,处理器可以是任何适当的硬件处理器,比如cpu(central processing unit,中央处理单元)、gpu(graphics processing unit,图形处理器)、fpga(field-programmable gate array,现场
可编程门阵列)、dsp(digital signal processor,数字信号处理器)和asic(application specific integrated circuit,专用集成电路)等等。若无特别说明,存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器rram(resistive random access memory)、动态随机存取存储器dram(dynamic random access memory)、静态随机存取存储器sram(static random-access memory)、增强动态随机存取存储器edram(enhanced dynamic random access memory)、高带宽内存hbm(high-bandwidth memory)、混合存储立方hmc(hybrid memory cube)等等。
[0363]
集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本技术的技术方案本质上或者说对相关技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0364]
图11是本技术实施例示出的人工智能芯片的结构框图。
[0365]
参见图11,本技术还提供了一种人工智能芯片120,其包括了上述基于卷积神经网络的数据处理装置90。基于卷积神经网络的数据处理装置90的结构可以参见图9和图10中的描述。人工智能芯片120例如可以是神经网络芯片或其他芯片,神经网络芯片例如可以是卷积神经网络推理芯片、asic芯片等。
[0366]
本技术还提供了一种板卡,其包括存储器件、接口装置和控制器件以及上述人工智能芯片;其中,人工智能芯片与存储器件、控制器件以及接口装置分别连接;存储器件,用于存储数据;接口装置,用于实现人工智能芯片与外部设备之间的数据传输;控制器件,用于对人工智能芯片的状态进行监控。
[0367]
图12是本技术实施例示出的板卡的结构框图,参阅图12,上述板卡除了包括上述人工智能芯片1289以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件1290、接口装置1291和控制器件1292;
[0368]
存储器件1290与人工智能芯片1289通过总线连接,用于存储数据。存储器件1290可以包括多组存储单元1293。每一组存储单元1293与人工智能芯片1289通过总线连接。可以理解,每一组存储单元1293可以是ddr sdram(double data rate sdram,双倍速率同步动态随机存储器)。
[0369]
ddr不需要提高时钟频率就能加倍提高sdram的速度。ddr允许在时钟脉冲的上升沿和下降沿读出数据。ddr的速度是标准sdram的两倍。在一个实施例中,存储装置可以包括4组存储单元1293。每一组存储单元1293可以包括多个ddr4颗粒(芯片)。在一个实施例中,人工智能芯片1289内部可以包括4个72位ddr4控制器,上述72位ddr4控制器中64bit用于传输数据,8bit用于ecc校验。可以理解,当每一组存储单元1293中采用ddr4-3200颗粒时,数据传输的理论带宽可达到25600mb/s。
[0370]
在一个实施例中,每一组存储单元1293包括多个并联设置的双倍速率同步动态随机存储器。ddr在一个时钟周期内可以传输两次数据。在芯片中设置控制ddr的控制器,用于对每个存储单元1293的数据传输与数据存储的控制。
[0371]
接口装置1291与人工智能芯片1289电连接。接口装置1291用于实现人工智能芯片1289与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,接口装置1291可以为标准pcie接口。比如,待处理的数据由服务器通过标准pcie接口传递至芯片,实现数据转移。优选的,当采用pcie 3.0x 16接口传输时,理论带宽可达到16000mb/s。在另一个实施例中,接口装置1291还可以是其他的接口,本技术并不限制上述其他的接口的具体表现形式,接口单元能够实现转接功能即可。另外,人工智能芯片1289的计算结果仍由接口装置传送回外部设备(例如服务器)。
[0372]
控制器件1292与人工智能芯片1289电连接。控制器件1292用于对人工智能芯片1289的状态进行监控。具体的,人工智能芯片1289与控制器件1292可以通过spi接口电连接。控制器件1292可以包括单片机(micro controller unit,mcu)。人工智能芯片1289可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,人工智能芯片1289可以处于多负载和轻负载等不同的工作状态。通过控制器件1292可以实现对人工智能芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
[0373]
在一种可能的实现方式中,本技术还提供一种计算设备,其包括了上述人工智能芯片。该计算设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。交通工具包括飞机、轮船和/或车辆;家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;医疗设备包括核磁共振仪、b超仪和/或心电图仪。
[0374]
图13是本技术实施例示出的计算设备的结构示意图。
[0375]
参见图13,计算设备1000包括存储器1010和处理器1020。
[0376]
处理器1020可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0377]
存储器1010可以包括各种类型的存储单元,例如系统内存、只读存储器(rom)和永久存储装置。其中,rom可以存储处理器1020或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器1010可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(例如dram,sram,sdram,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器1010可以包括可读和/或写的可移除的存储设备,例如激光唱片(cd)、只读数字多功能光盘(例如dvd-rom,双层dvd-rom)、只读蓝光光盘、超密度光盘、闪存卡(例如sd卡、min sd卡、micro-sd卡等)、磁性软盘等。计算机可
读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。
[0378]
存储器1010上存储有可执行代码,当可执行代码被处理器1020处理时,可以使处理器1020执行上文述及的方法中的部分或全部。
[0379]
此外,根据本技术的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本技术的上述方法中部分或全部步骤的计算机程序代码指令。
[0380]
或者,本技术还可以实施为一种计算机可读存储介质(或非暂时性机器可读存储介质或机器可读存储介质),其上存储有可执行代码(或计算机程序或计算机指令代码),当可执行代码(或计算机程序或计算机指令代码)被电子设备(或服务器等)的处理器执行时,使处理器执行根据本技术的上述方法的各个步骤的部分或全部。
[0381]
以上已经描述了本技术的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文披露的各实施例。

技术特征:
1.一种基于卷积神经网络的数据移位处理方法,其特征在于,应用于处理器,所述方法包括:将输入数据通过预处理得到预处理数据;根据不同移位操作需求,在卷积神经网络中将所述预处理数据通过移位单元多个不同的卷积计算层进行处理,得到移位运算数据;将所述移位运算数据经过后处理得到输出数据。2.根据权利要求1所述的方法,其特征在于:所述将输入数据通过预处理得到预处理数据,包括:将输入的串行数据流转换通过拼接操作转换为矩阵数据块;所述将所述移位运算数据经过后处理得到输出数据,包括:将矩阵数据块格式的移位运算数据转换为串行数据流。3.根据权利要求1所述的方法,其特征在于,所述在卷积神经网络中将所述预处理数据通过移位单元多个不同的卷积计算层进行处理,得到移位运算数据,包括:在逻辑移位单元的第一卷积计算层将预处理数据进行卷积处理输出两通道卷积数据后,通过三个不同的中间卷积计算层进行卷积处理,再通过第五卷积计算层进行卷积数据通道合并处理,得到逻辑移位的移位运算数据;或,在循环移位单元的第一卷积计算层将预处理数据进行卷积处理输出三通道卷积数据后,通过四个不同的中间卷积计算层进行卷积处理,再通过第六卷积计算层进行卷积数据通道合并处理,得到循环移位的移位运算数据。4.根据权利要求3所述的方法,其特征在于,所述在逻辑移位单元的第一卷积计算层将预处理数据进行卷积处理输出两通道卷积数据后,通过三个不同的中间卷积计算层进行卷积处理,再通过第五卷积计算层进行卷积数据通道合并处理,得到逻辑移位的移位运算数据,包括:在逻辑移位单元的第一卷积计算层将预处理数据进行卷积处理输出两通道卷积数据后,通过针对逻辑左移运算规律或逻辑右移运算规律设置的三个不同的中间卷积计算层进行卷积处理,再通过第五卷积计算层进行卷积数据通道合并处理,分别得到逻辑左移或逻辑右移的移位运算数据。5.根据权利要求3所述的方法,其特征在于,所述在循环移位单元的第一卷积计算层将预处理数据进行卷积处理输出三通道卷积数据后,通过四个不同的中间卷积计算层进行卷积处理,再通过第六卷积计算层进行卷积数据通道合并处理,得到循环移位的移位运算数据,包括:在循环移位单元的第一卷积计算层将预处理数据进行卷积处理输出三通道卷积数据后,通过针对循环左移运算规律或循环右移运算规律设置的四个不同的中间卷积计算层进行卷积处理,再通过第六卷积计算层进行卷积数据通道合并处理,分别得到循环左移或循环右移的移位运算数据。6.根据权利要求3所述的方法,其特征在于:所述三个不同的中间卷积计算层中的每个中间卷积计算层,包括两个互不相同的卷积核,其中每个卷积核包括两个通道参数;或,所述四个不同的中间卷积计算层中的每个中间卷积计算层,包括三个互不相同的卷积
核,其中每个卷积核包括三个通道参数。7.根据权利要求2至6任一项所述的方法,其特征在于:所述输入的串行数据流的字节长度位数为任一正整数的平方数或非平方数;其中为非平方数时,将所述串行数据流切分为包含重叠的字节长度位数为任一正整数的平方数的数据段后进行预处理,并且在得到移位运算数据之后,根据移位方向上的后端数据段优先的原则进行拼接合并。8.一种基于卷积神经网络的数据移位处理装置,其特征在于,应用于处理器,所述装置包括:预处理模块,用于将输入数据通过预处理得到预处理数据;移位运算模块,用于根据不同移位操作需求,在卷积神经网络中将所述预处理模块的预处理数据通过多个不同的卷积计算层进行处理,得到移位运算数据;后处理模块,用于将所述移位运算模块得到的移位运算数据经过后处理得到输出数据。9.根据权利要求8所述的装置,其特征在于,所述移位运算模块包括:逻辑移位单元,用于在第一卷积计算层将预处理数据进行卷积处理输出两通道卷积数据后,通过三个不同的中间卷积计算层进行卷积处理,再通过第五卷积计算层进行卷积数据通道合并处理,得到逻辑移位的移位运算数据;或,循环移位单元,用于在第一卷积计算层将预处理数据进行卷积处理输出三通道卷积数据后,通过四个不同的中间卷积计算层进行卷积处理,再通过第六卷积计算层进行卷积数据通道合并处理,得到循环移位的移位运算数据。10.一种人工智能芯片,其特征在于,包括权利要求8至9任一项所述的基于卷积神经网络的数据移位处理装置。11.一种计算设备,其特征在于,包括:处理器;以及存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求1-7中任一项所述的方法。12.一种计算机可读存储介质,其上存储有可执行代码,当所述可执行代码被计算设备的处理器执行时,使所述处理器执行如权利要求1-7中任一项所述的方法。

技术总结
本申请涉及一种基于卷积神经网络的数据移位处理方法、装置及设备。该基于卷积神经网络的数据移位处理方法,应用于处理器,该方法包括:将输入数据通过预处理得到预处理数据;根据不同移位操作需求,在卷积神经网络中将所述预处理数据通过移位单元多个不同的卷积计算层进行处理,得到移位运算数据;将所述移位运算数据经过后处理得到输出数据。本申请提供的方案,能够实现在适配神经网络结构的运行处理设备上执行数据移位任务,可以提升运算效率,降低时延,提升硬件资源利用率。提升硬件资源利用率。提升硬件资源利用率。


技术研发人员:胡宇 李天元 刘嘉超 刘兰个川
受保护的技术使用者:广州小鹏自动驾驶科技有限公司
技术研发日:2021.12.07
技术公布日:2022/3/8

最新回复(0)