一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

卷积运算方法、可读介质和电子设备与流程

2022-02-22 09:06:15 来源:中国专利 TAG:


1.本技术涉及计算机视觉与人工智能技术领域,特别涉及一种卷积运算方法、可读介质和电子设备。


背景技术:

2.近年来,随着人工智能(artificial intelligence,ai)技术的快速发展,支持ai的无人驾驶汽车、无人机、智能终端等的应用越来越广泛。ai通过神经网络技术,对各种传感器输入的数据进行实时处理,实现对外界环境的感知。通常为了提升ai应用终端的处理性能,采用专用的硬件平台来实现特定的运算,例如将原本移植有卷积神经网络模型的ai应用终端中涉及的卷积运算通过专用的硬件平台来实现。
3.由于二维卷积运算涉及的输入数据和卷积核是二维的,通常数据量较小,采用专用的硬件平台执行二维卷积运算时,效率较高。然而三维卷积运算涉及的输入数据和卷积核是三维的,通常数据量较大。因此,受限于内存资源和计算资源,上述专用的硬件平台在执行三维卷积运算时,运算效率较差,或者压根就无法实现三维卷积运算。
4.通常为了实现三维卷积预算,只能对现有的硬件平台进行硬件上的改进,例如扩大硬件平台的存储空间,增加硬件平台的处理单元(processing element,pe),但是做这些改进,往往会使硬件平台的体积变大,成本增高。因此,如何在现有的一些支持二维卷积运算的硬件平台上实现三维卷积运算,是一个亟需解决的问题。


技术实现要素:

5.有鉴于此,本技术实施例提供了一种卷积运算方法、可读介质和电子设备。本技术的技术方案通过将三维待卷积数据在深度方向进行数据切分,得到多个三维数据块;将各三维数据块在深度方向切分成多个二维输入数据,并且将三维卷积核在深度方向拆分成多个二维卷积核;将二维输入数据和二维卷积核进行二维卷积运算,得到多个第一二维卷积运算结果;基于第一二维卷积运算结果得到各三维数据块的第二二维卷积运算结果;将第二二维卷积运算结果在深度方向上进行拼接,得到三维卷积运算结果。本技术的技术方案降低了对硬件平台的计算能力和存储能力的要求,可以利用能够实现二维卷积运算的硬件平台来执行三维卷积运算,无需对现有的可以执行二维卷积运算的硬件平台做复杂的硬件改进。
6.第一方面,本技术提供了一种卷积运算方法,应用于电子设备,包括:
7.获取h1*w1*d1的三维待卷积数据和h2*w2*d2的三维卷积核,其中,h1、w1、d1分别为三维待卷积数据的高度值、宽度值以及深度值,并且h2、w2、d2分别为三维卷积核的高度值、宽度值以及深度值;
8.基于三维卷积核的深度值d2,将三维待卷积数据在深度方向进行数据切分,得到多个h1*w1*d2的三维数据块;
9.将各三维数据块在深度方向切分成d2个h1*w1的二维输入数据,并且将三维卷积
核在深度方向拆分成d2个h2*w2的二维卷积核;
10.将各三维数据块拆分得到的二维输入数据和二维卷积核进行二维卷积运算,得到各三维数据块的多个第一二维卷积运算结果;
11.分别将各三维数据块的多个第一二维卷积运算结果同一位置的数据相加,得到各三维数据块的第二二维卷积运算结果;
12.将与每个三维数据块对应的第二二维卷积运算结果在深度方向上进行拼接,得到三维卷积运算结果。
13.在上述第一方面的一种可能的实现中,基于三维卷积核的深度值d2,将三维待卷积数据在深度方向进行数据切分,得到多个h1*w1*d2的三维数据块,包括:
14.将三维待卷积数据的d1个数据通道中每连续的d2个通道的数据切分为一个h1*w1*d2的三维数据块,得到多个h1*w1*d2的三维数据块。
15.在上述第一方面的一种可能的实现中,将三维待卷积数据在深度方向进行数据切分,得到的h1*w1*d2的三维数据块的个数为d1-stride_depth*(d2-1),其中,stride_depth为在对三维待卷积数据和三维卷积核进行三维卷积运算时深度方向的滑动窗口的步长。
16.在上述第一方面的一种可能的实现中,第一二维卷积运算结果和第二二维卷积运算结果的高度值均为h1-stride_depth*(h2-1),宽度值均为w1-stride_depth*(w2-1)。
17.在上述第一方面的一种可能的实现中,三维卷积运算的结果高度值为h1-stride_depth*(h2-1),宽度值为w1-stride_depth*(w2-1),深度值为d1-stride_depth*(d2-1)。
18.在上述第一方面的一种可能的实现中,上述方法还包括:
19.在三维待卷积数据中填充多个零,得到h3*w3*d3的填充后的三维待卷积数据,用于使当对h3*w3*d3的填充后的三维待卷积数据和h2*w2*d2的三维卷积核进行三维卷积运算时,得到h1*w1*d1的三维卷积运算结果,
20.其中,h3、w3、d3分别为填充后的三维待卷积数据的高度值、宽度值以及深度值。在上述第一方面的一种可能的实现中,按照以下公式在三维待卷积数据中填充多个零:
21.pad_d=(depth_out-1)*stride_depth depth_kernel

depth_in
22.其中,pad_d为填充后的三维待卷积数据的深度值,和填充前的三维待卷积数据的深度值的差值;
23.depth_out为期望得到的三维卷积运算结果的深度值;
24.stride_depth为在对三维待卷积数据和三维卷积核进行三维卷积运算时深度方向的滑动窗口的步长;
25.depth_kernel为三维卷积核的深度值;
26.depth_in为三维待卷积数据的深度值。
27.第二方面,本技术提供了一种计算机可读存储介质,计算机可读存储介质上存储有指令,该指令在电子设备上执行时使电子设备执行如上述第一方面以及第一方面的各种可能实现中的任意一种方法。
28.第三方面,本技术提供了一种计算机程序产品,计算机程序产品包括指令,指令当被一个或多个处理器执行时用于实现如上述第一方面以及第一方面的各种可能实现中的任意一种方法。
29.第四方面,本技术提供了一种电子设备,电子设备包括:
30.通信接口,用于输入和/或输出信息;
31.处理器,用于执行计算机可执行程序,使得安装有电子设备的设备执行如上述第一方面以及第一方面的各种可能实现中的任意一种方法。
附图说明
32.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
33.图1a根据本技术的一些实施例,示出了一种二维卷积运算的示意图;
34.图1b根据本技术的一些实施例,示出了一种在图1a所示的二维输入数据中采用滑动窗口滑动得到各个二维数据块的过程示意图;
35.图2a根据本技术的一些实施例,示出了一种三维卷积运算的示意图;
36.图2b根据本技术的一些实施例,示出了在图2a所示的三维输入数据中采用滑动窗口滑动得到各个三维数据块的过程示意图;
37.图2c根据本技术的一些实施例,示出了一种在图2a所示的三维输入数据中在d方向滑动的过程示意图;
38.图3根据本技术的一些实施例,示出了一种专门用于实现卷积运算的soc的硬件结构框图;
39.图4根据本技术的一些实施例,示出了一种将三维卷积运算转换为二维卷积运算的卷积运算方法的流程示意图;
40.图5a根据本技术的一些实施例,示出了一种将图2a所示的三维输入数据切分成5*5*3的三维输入数据的过程示意图;
41.图5b根据本技术的一些实施例,示出了一种将图5a所示的拆分得到的三维输入数据拆分成多个二维输入数据的过程示意图;
42.图5c根据本技术的一些实施例,示出了一种将图2a所示的三维卷积核拆分成多个二维卷积核的过程示意图;
43.图5d根据本技术的一些实施例,示出了将上述拆分得到的二维输入数据和二维卷积核进行二维卷积运算的过程示意图;
44.图5e根据本技术的一些实施例,示出了将二维卷积运算结果在d方向进行拼接的过程示意图;
45.图6根据本技术的一些实施例,示出了设置有图3所示的soc的电子设备的硬件结构示意图。
具体实施方式
46.本技术的说明性实施例包括但不限于一种卷积运算方法、可读介质和电子设备。
47.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
48.本技术的技术方案涉及二维卷积运算和三维卷积运算,为了便于理解本技术的技术方案,以下将首先对二维卷积运算和三维卷积运算分别进行简单介绍。
49.(1)二维卷积运算
50.可以理解的是,参与二维卷积运算的输入数据和卷积核均为二维数据,卷积结果也为二维数据。
51.图1a示例性地示出了一种二维卷积运算的示意图,假设卷积神经网络的输入数据为一帧图像中各个像素点的灰度数据,该图像在高度(height,简称为h)方向和宽度(width,简称为w)方向的像素个数分别为5,则输入数据的大小可以用5*5来表示。
52.下面以如图1a所示的采用大小为3*3的二维卷积核k,对大小为5*5的二维输入数据fm进行卷积运算,得到大小为3*3的卷积结果特征图p为例,介绍二维卷积运算的运算过程。
53.具体地,是将5*5的输入数据fm中各个大小为3*3的数据块,分别和大小为3*3的卷积核k进行卷积。例如,如图1b所示,对于大小为5*5的输入数据fm,以其左上方的第一个数据为起点,步长为1,按照3*3的滑动窗口在输入数据fm上滑动。例如,首先从左往右滑动,得到数据块a1至a3;然后从数据块a1再向下滑动一个数据后继续从左往右滑动,得到数据块a4至a6;再从数据块a4向下滑动一个数据后继续从左往右滑动,得到数据块a7至a9。将a1至a9这9个数据块分别和3*3的卷积核k进行卷积,从而得到如图1a所示的卷积结果(也称特征图)p中的各个数据。
54.不难看出,上述二维卷积运算,实际上是分别采用a1至a9这9个大小为3*3的二维数据块和大小为3*3的二维卷积核k进行卷积,最终得到大小为3*3的二维卷积运算结果p。
55.(2)三维卷积运算
56.可以理解的是,参与三维卷积运算的输入数据和卷积核均为三维数据,卷积结果也为三维数据。
57.图2a示例性地示出了一种三维卷积运算的示意图,相比较于图1a所示的二维卷积运算,参与三维卷积运算的输入数据和卷积核增加了深度(depth,简称为d)方向的数据。相应地,三维卷积运算相较于二维卷积运算,增加了输入数据和卷积核在d方向的运算。
58.假设卷积神经网络的输入数据为一段视频中各帧图像的各个像素点的灰度值,各帧图像在h方向、w方向的像素个数分别为5,且有5张图像(即d为5),则输入数据的大小可以用5*5*5来表示。
59.下面以如图2a所示的采用大小为3*3*3的三维卷积核k',对大小为5*5*5的三维输入数据fm'进行卷积运算,得到大小为3*3*3的卷积结果p'为例,介绍三维卷积运算的运算过程。
60.具体地,是将5*5*5的输入数据fm'中各个大小为3*3*3的数据块,分别和大小为3*3*3的卷积核k'进行卷积。如图2b所示,对于大小为5*5*5的输入数据fm',以其左上方的第一个数据为起点,步长为1,按照3*3*3的滑动窗口在输入数据fm'上滑动。例如,首先在w方向从左往右滑动,得到大小为3*3*3的数据块a1'至a3';然后从数据块a1'在h方向向下滑动一个数据后继续从左往右滑动,依次得到数据块a4'至a6';再从数据块a4'向下滑动一个数据后继续从左往右滑动,得到数据块a7'至a9'。再将上述a1'在d方向滑动一个数据后,得到如图2c所示的数据块a10',再以数据块a10'为起点,依次重复类似于上述图1b所示的以数
据块a1'为起点在w方向和h方向的滑动操作,分别得到数据块a11'和数据块a18'。再将数据块a10'在d方向滑动一个数据后,得到如图2c所示的数据块a19',再以数据块a19'为起点,依次重复类似于上述图2b所示的以数据块a1'为起点在w方向和h方向的滑动操作,分别得到数据块a20'和数据块a27'。
61.不难看出,上述三维卷积运算,实际上是采用a1'至a27'这27个大小为3*3*3的三维数据块分别和小为3*3*3的三维卷积核k'进行卷积,从而得到大小为3*3*3三维计算结果p'中的各个数据。
62.此外,可以理解的是,以上关于图1a所示的二维卷积运算以及图2a所示的三维卷积运算过程的介绍,仅是为了说明二维卷积运算以及三维卷积运算过程的一个简单的示例。本技术对二维卷积核三维卷积运算中涉及的输入数据以及卷积核的大小不做限定。在具体实现时,二维卷积核三维卷积运算中涉及的输入数据以及卷积核的大小视实际需要而定。
63.图3所示为一种可以执行二维卷积运算的片上系统(system on chip,soc)300,包括乘法电路340、主控中央处理器(central processing unit,cpu)310、双倍速率(double data rate,ddr)内存320以及先进可扩展接口(advanced extensible interface,axi)总线330。乘法电路340、主控cpu310以及ddr内存320通过axi总线330进行通信。
64.其中,乘法电路340包括直接存储器访问(direct memory access,dma)控制单元341、参数缓存342、输入数据缓存343、输出缓存344以及由多个处理单元(processing element,pe)组成的pe阵列345。其中,dma控制单元341用于将外部存储空间中存储的输入数据读取到输入数据缓存343中。参数缓存342用于存储参与卷积运算的卷积核的数据。输入数据缓存343用于存储dma控制单元341从外部存储空间中读取的输入数据中参与卷积运算的各个数据块。pe阵列345将从输入数据缓存343读取的输入数据中的数据块和从参数缓存342读取的卷积核进行卷积运算。输出缓存344用于存储pe阵列345执行卷积运算输出的结果。
65.ddr内存320可以用于加载以及存储数据和/或指令。例如,在一些实施例中,ddr内存320可以用于加载或者存储乘法电路340执行卷积运算时所涉及的卷积核数据、输入数据以及乘法电路340输出的卷积结果数据等。
66.主控cpu310可以包括一个或多个单核或多核处理器。在一些实施例中,主控cpu310可以包括通用处理器和专用处理器(例如,图形处理器,应用处理器,基带处理器等)的任意组合。
67.此外,可以理解的是,如图3所示soc300的示例性结构并不构成对soc300的具体限定。在本技术另一些实施例中,soc300可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
68.假设采用图3所示的soc300来实现如图1a所示的二维卷积运算,假设将pe阵列345执行一次卷积运算的过程作为一个运算周期,则在一个运算周期内,pe阵列345需要对如图1b所示的数据块a1至a9中的其中一个数据块,和卷积核k执行卷积运算,得到特征图p中的一个数据。
69.而假设采用图3所示的soc300来实现如图2a所示的三维卷积运算,则在一个运算
周期内,pe阵列345需要对如图2b所示的a1'至a27'这27个三维数据块中的其中一个,和三维卷积核k'进行卷积,最终得到计算结果p'中的一个数据。
70.然而当将图3所示的soc300应用到医学(例如ct影像)、视频处理(例如活体识别时)等和图像处理相关的领域时,通常需要对图像数据执行三维卷积运算。并且通常三维卷积运算中涉及的输入数据和卷积核数据量较大。
71.例如,需要使用soc300对一段视频数据进行三维卷积提取特征时,输入数据的大小则为:视频像素宽*视频像素高*视频帧数。假设该视频数据(也即输入数据)大小为1920*1080*60fps(frames per second,每秒帧数),卷积核大小为90*90*10,则在一个运算周期内,上述soc300需要实现对输入数据中大小为90*90*10的数据块,和大小为90*90*10的卷积核进行卷积运算,则输入数据缓存343和参数缓存342中需要各缓存至少81000个数据,以完成对输入数据中一个数据块的计算。而受限于存储资源和计算资源,图3所示的soc300通常无法在一个运算周期内,实现对上述大小为90*90*10的数据块,和大小为90*90*10的卷积核的卷积运算。
72.因为,为了解决上述技术问题,本技术提供了一种将三维卷积运算转换成二维卷积运算,以能够利用例如图3所示的硬件平台,来实现三维卷积运算的方法。
73.如图4所示为根据本技术的一些实施例示出的一种将三维卷积运算转换成二维卷积运算的方法。其中各个步骤的执行主体可以为包括图3所示的soc300的电子设备。
74.为了便于说明本技术的技术方案,下面将以图4所示的各个步骤的执行主体为包括图3所示的soc300的电子设备,将对图2a所示的5*5*5的输入数据和3*3*3的卷积核的三维卷积运算,转换成二维卷积运算为例,介绍图4所示的流程图。
75.具体地,如图4所示,本技术提供的一种将三维卷积运算转换成二维卷积运算的方法包括以下步骤:
76.s401:确定需要参与三维卷积运算的三维输入数据和三维卷积核。其中,三维输入数据和三维卷积核均包括深度(d)、高度(h)和宽度(w)这三个数据维度。
77.例如,三维输入数据为图2a所示的5*5*5的三维输入数据fm',卷积核为3*3*3的k',则输入数据fm'的深度值、高度值、宽度值均为5,卷积核k'的深度值、高度值、宽度值均为3。
78.可以理解的是,由于三维卷积运算通常应用于图像处理,通常三维输入数据的深度、宽度、高度均远大于5。图2a示意的三维卷积运算中输入数据和卷积核仅仅是为了方便理解本技术的技术方案的一种示例。
79.s402:基于三维卷积核的深度信息,将三维输入数据在深度方向进行数据切分,得到多个三维数据块,其中,各三维数据块的深度和三维卷积核的深度相同,各三维数据块的高度和宽度分别与三维输入数据的高度和深度相同。
80.也即每个三维数据块的深度和切分前的三维卷积核的深度相同,每个三维数据块的高度和宽分别与切分前的三维输入数据的高度和深度一致。并且,每相邻的两个三维数据块中在深度方向只有一个通道的数据存在差异。
81.需要说明的是,其中三维输入数据的切分是指对通过融合输入数据的深度d与通道数(channel,简称为c),将深度方向的数据融合至c方向(也即使三维输入数据的d方向和c方向一致),来实现对输入数据的降维。例如,原先输入数据在c维度的数据个数为2,在d维
度的数据个数为3,通过将输入数据d与c维度数据排列方向一致意味着原来d维度数据变换成c维度数据,变换后d维度的数据为0(即去除d维度),变换后c维度的数据个数为2*3=6。此外,需要说明的是,这里将三维输入数据进行数据切分,是为了使切分后的数据块的c与卷积核的c一致,从而可以实现二维卷积运算。
82.此外,需要说明的是,在一些实施例中,在执行三维卷积运算时,可以直接对输入数据进行深度方向的数据切分。例如,要实现如图2a所示的3*3*3的卷积核k',对5*5*5的三维输入数据fm'的三维卷积运算。由于卷积核k'的深度为3,输入数据fm'的深度为5,因此,可以将输入数据fm'在深度方向切分成3个深度为3的三维数据块。具体地,如图5a所示,将输入数据fm'切分成大小为5*5*3(即h=5,w=5,d=3)的三维数据块a1”、a2”、a3”。假设将输入数据fm'在深度方向的每个通道标记为d1至d5,则三维数据块a1”包括通道d1至d3的数据,数据块a2”包括通道d2至d4的数据,数据块a3”包括通道d3至d5的数据。
83.而由于通常在采用高度、宽度、深度均大于1的三维卷积核在对三维输入数据进行三维卷积运算时,三维卷积运算的结果的高度、宽度、深度会比三维输入数据的高度、宽度、深度小,也即三维卷积运算结果的尺寸要比运算前的三维输入数据的尺寸小。因此,在另一些实施例中,为了使卷积神经网络模型更深层的待卷积的输入数据依旧保持足够大的信息量,需要使三维卷积的运算结果和输入数据的大小一致,从而可以先对三维输入数据进行补零操作。然后对补零后的三维输入数据进行深度方向的数据切分。例如,在切分三维输入数据之前,将三维输入数据按照如下公式(1)进行补零:
84.pad_d=(depth_out-1)*stride_depth depth_kernel

depth_in公式(1)
85.其中,pad_d是指三维输入数据的每个维度(h、w、d)补零后增加的尺寸。
86.depth_out是指期望得到的三维输出结果的深度值。
87.stride_depth是指三维卷积运算时深度方向滑动窗口的步长,例如为1。
88.depth_kernel是指三维卷积核的深度值。
89.depth_in是指三维输入数据的深度值。
90.例如,针对上述大小为5*5*5的输入数据fm',为了在采用3*3*3的卷积核k'对fm'进行三维卷积运算之后,得到的卷积结果大小依然为5*5*5,则depth_out=5,stride_depth=1,depth_kernel=3,depth_in=5,将这些值代入上述公式(1),则pad_d=(5-1)*1 3-5=2。也即,需要对大小为5*5*5的输入数据fm'的h、w、d各个维度进行补零,使得补零后得到的新的输入三维输入数据fm”,相较于补零前的三维输入数据fm',各个维度增加的尺寸为2,也即新的输入三维输入数据fm”的尺寸为7*7*7。例如,可以将5*5*5的输入数据fm'看作一个立方体,该立方体包括六个面,在每个面上增加多个零,使得补零后得到的三维输入数据fm”的尺寸为7*7*7。
91.s403:将各三维数据块在深度方向切分成多个二维输入数据,并且将三维卷积核在深度方向拆分成多个二维卷积核。
92.例如分别将如图2a所示的5*5*3的三维数据块a1”、a2”、a3”在d方向上进行数据拆分。具体地,以图5b所示的三维数据块a1”的数据拆分为例,将a1”在d方向上三个通道的数据,分别拆分成二维输入数据a11”、a12”、a13”。并且将如图5c所示的3*3*3的卷积核k'在d方向上三个通道的数据,分别拆分成二维卷积核k1'、k2'、k3'。
93.此外,三维数据块a2”、a3”在d方向上进行数据拆分的方式,以及拆分后得到的各
个二维输入数据和上述拆分得到的二维卷积核k1'、k2'、k3'的二维卷积运算过程,可以参照对三维数据块a1”的处理方式,在此不再展示描述。
94.需要说明的是,其中待切分的卷积核是指对通过融合卷积核的深度d与通道数(channel,简称为c),将深度方向的数据融合至c方向(也即使卷积核的d方向和c方向一致),而实现降维之后的卷积核。并且,此处的切分,是指在实现最终的二维卷积运算时,将降维后的卷积核在d方向(融合后可以认为d方向即为c方向)的一个通道的数据作为一个切分后的二维卷积核。
95.s404:将三维数据块拆分得到的各二维输入数据和与各二维输入数据对应的二维卷积核进行二维卷积运算,得到与各三维数据块对应的多个第一二维卷积运算结果。
96.其中,第一二维卷积运算结果的大小和由三维卷积核拆分得到的二维卷积核的大小一致。
97.具体地,例如如图5d所示,将上述二维输入数据a11”和二维卷积核k1'进行二维卷积运算,得到二维的特征图p11';将上述二维输入数据a12”和二维卷积核k2'进行二维卷积运算,得到二维的特征图p12';将上述二维输入数据a13”和二维卷积核k3'进行二维卷积运算,得到二维的特征图p13'。
98.其中,二维卷积核k1'相当于在对上述三维卷积核k1'进行d方向至c方向的融合处理之前的一个d方向的数据块(例如d0),相应地,三维卷积核k2'对应于融合处理前的一个d方向的数据块(例如d1)、三维卷积核k3'对应于融合处理前的一个d方向的数据块(例如d2),其中,d0、d1和d2为依次排列的具有h、w、d、c四个维度的数据块。需要说明的是,本技术的技术方案对需要执行三维卷积运算的三维输入数据和三维卷积核的c(例如c代表某颜色空间的通道数)的数值不做限定。例如,在一些实施例中,c可以为1。而在另一些实施例中,c可以为3。
99.需要说明的是,图5d所示的计算过程只是为了方便理解本技术的技术方案的一种简单示例,其中涉及的输入数据和卷积核的c均为1。
100.s405:分别将各三维数据块的多个第一二维卷积运算结果同一位置的数据相加,得到分别与各三维数据块对应的第二二维卷积运算结果。
101.不难理解的是,第二二维卷积运算结果的尺寸也和由三维卷积核拆分得到的二维卷积核的尺寸相同。
102.例如,将上述得到的二维特征图p11'、p12'、p13'对应位置的数据相加,得到数据块a1”和卷积核k'的二维卷积运算结果p1'。
103.s406:将与每个三维数据块对应的第二二维卷积运算结果在深度方向上进行拼接,得到三维卷积运算结果。
104.例如,假设数据块a2”和卷积核k'的二维卷积运算结果为p2',数据块a3”和卷积核k'的二维卷积运算结果为p3',将上述数据块a1”和卷积核k'的二维卷积运算结果p1'和p2'、p3'在d方向上进行拼接,即可得到三维输入数据fm'和三维卷积核k'的三维卷积运算结果。具体地,例如,如图5e所示,将p1'、p2'、p3'分别作为深度方向上的第一通道、第二通道、第三通道的数据,即可得到三维的卷积运算结果p'。
105.如此,可以看出,在采用包含有图3所示的soc300的电子设备来执行三维输入数据fm'和三维卷积核k'的三维卷积运算时,电子设备通过将三维输入数据fm'和三维卷积核k'
volatile memory),例如只读存储器(read-only memory,rom),快闪存储器(flash memory),硬盘(hard disk drive,hdd)或固态硬盘(solid-state drive,ssd);或者上述种类的存储器的组合,或者也可以是可移动存储介质,例如安全数字(secure digital,sd)存储卡。例如,存储器110用于存储soc300的运算程序、需要进行三维卷积运算的三维输入数据和三维卷积核以及soc300得到的卷积运算结果等。
114.输入输出设备120,可以包括显示屏、触摸屏和喇叭等。
115.通信模块130,例如wifi模块、通用串行总线(universal serial bus,usb)、4g和5g模块等。用于供电子设备100通过通信模块130和其他电子设备通信。
116.此外,可以理解的是,如图6所示的本技术提供的电子设备100的示例性结构并不构成对电子设备100的具体限定。在本技术另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
117.本技术公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本技术的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
118.可将程序代码应用于输入指令,以执行本技术描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本技术的目的,处理系统包括具有诸如例如数字信号处理器(digital signal processor,dsp)、微控制器、专用集成电路(application specific integrated circuit,asic)或微处理器之类的处理器的任何系统。
119.程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本技术中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
120.在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读介质分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、只读存储器(cd-roms)、磁光盘、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、可擦除可编程只读存储器(erasable programmable read only memory,eprom)、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息(例如,载波、红外信号数字信号等)的有形的机器可读存储器。因此,机器可读介质包括适合于以机器(例如计算机)可读的形式存储或传输电子指令或信息的任何类型的机器可读介质。
121.在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味
着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
122.需要说明的是,本技术各设备实施例中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模块的一部分,还可以以多个物理单元/模块的组合实现,这些逻辑单元/模块本身的物理实现方式并不是最重要的,这些逻辑单元/模块所实现的功能的组合才是解决本技术所提出的技术问题的关键。此外,为了突出本技术的创新部分,本技术上述各设备实施例并没有将与解决本技术所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施例并不存在其它的单元/模块。
123.需要说明的是,在本专利的示例和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
124.虽然通过参照本技术的某些优选实施例,已经对本技术进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本技术的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献