运算装置、芯片、反卷积运算方法、电子设备及存储介质与流程

文档序号:31126405发布日期:2022-08-13 03:36阅读:38来源:国知局
运算装置、芯片、反卷积运算方法、电子设备及存储介质与流程

1.本公开涉人工智能技术领域,尤其涉及一种运算装置、芯片、反卷积运算方法、电子设备及存储介质。


背景技术:

2.近些年来,人工智能技术取得了日新月异的发展,人工智能技术在数据的识别和处理等领域有了越来越广泛的应用。从根本上来讲,人工智能技术要建立在卷积、反卷积、池化、采样等基础运算上,因此这些基础运算的处理能力也决定了人工智能技术的运行能力。
3.以反卷积运算为例,相关技术中只能在gpu(graphics processing unit,图形处理器)、cpu(central processing unit,中央处理器)等支持矩阵运算和随机仿存的通用芯片上来实现反卷积运算,而无法在其他芯片上执行,尤其是不能在人工智能技术专用的加速芯片上执行,这不仅极大的降低了反卷积运算的效率,同时也限制了反卷积运算的硬件选配范围。


技术实现要素:

4.本公开提供一种运算装置、芯片、反卷积运算方法、电子设备及存储介质,以解决相关技术中的缺陷。
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.将所述原始卷积核中每个通道的数据分别进行中心对称旋转,得到所述目标卷积核的每个通道的数据。
48.在一个实施例中,所述根据所述反卷积运算的原始参数,确定所述反卷积运算对应的等效卷积运算的目标参数,包括:
49.将所述等效卷积运算的目标卷积步长确定为预设步长;和/或,
50.将所述等效卷积运算的目标填充值确定为预设填充值。
51.在一个实施例中,所述利用卷积运算单元,根据所述目标参数进行所述等效卷积运算,并将所述等效卷积运算的结果确定为所述反卷积运算的结果,包括:
52.将所述目标输入数据的首地址和每个数据维度的尺寸值、所述目标卷积核的首地址和每个数据维度的尺寸值、所述目标卷积步长、所述目标填充值配置至所述卷积运算单元对应的寄存器中,所述卷积运算单元利用所述寄存器中的配置信息进行等效卷积运算,得到所述等效卷积运算的结果。
53.根据本公开实施例的第四方面,提供一种电子设备,所述设备包括存储器、处理器,所述存储器用于存储可在处理器上运行的计算机指令,所述处理器用于在执行所述计算机指令时实现第三方面所述的方法;或者,
54.所述设备包括第二方面所述的芯片。
55.根据本公开实施例的第五方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现第一方面所述的方法。
56.根据上述实施例可知,通过设置控制单元,可以获取反卷积运算的原始参数,根据所述反卷积运算的原始参数,确定所述反卷积运算对应的等效卷积运算的目标参数,并将所述目标参数发送至卷积运算单元,以及将所述等效卷积运算的结果确定为所述反卷积运算的结果;通过设置卷积运算单元,可以根据所述目标参数进行所述等效卷积运算,并将所述等效卷积运算的结果发送至所述控制单元。本运算装置利用控制单元将反卷积运算转换为了对应的等效卷积运算,然后利用卷积运算单元执行该等效卷积运算,从而可以使不支持反卷积运算的卷积运算单元能够计算得到反卷积运算的运算结果,这样既可以提高反卷积运算的效率,还可以扩大反卷积运算的硬件选配范围,例如可以使用人工智能专用的加速芯片来执行反卷积运算,充分发挥加速芯片的并行计算能力,扩充了加速芯片支持的算子类型,使得不支持随机访存能力的加速芯片上也可以完成反卷积的运算。
57.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
58.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
59.图1是本公开一示例性实施例示出的运算单元的结构示意图;
60.图2是本公开一示例性实施例示出的反卷积核进行中心对称旋转的示意图;
61.图3是本公开一示例性实施例示出的目标输入数据的卷积过程示意图;
62.图4是本公开一示例性实施例示出的反卷积运算方法的流程图;
63.图5是本公开实施例示出的电子设备的结构示意图。
具体实施方式
64.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
65.在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
66.应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
67.相关技术中,用于执行反卷积运算的深度学习框架(例如caffe)进行反卷积运算时,一般都是调用卷积的后向传播来实现的,也就是将反卷积运算拆分为矩阵乘法和col2im函数处理两个步骤,因此需要硬件支持矩阵乘法,且具有随机仿存能力,而ai加速器等人工智能技术专用的加速芯片缺乏矩阵运算单元,且不具有随机仿存能力,这便使得人工智能技术专用的加速芯无法执行反卷积运算。
68.第一方面,本公开至少一个实施例提供了一种运算装置,请参照附图1,包括:控制单元101,用于获取反卷积运算的原始参数,根据所述反卷积运算的原始参数,确定所述反卷积运算对应的等效卷积运算的目标参数,并将所述目标参数发送至卷积运算单元,以及将所述等效卷积运算的结果确定为所述反卷积运算的结果;卷积运算单元(mpu)102,用于根据所述目标参数进行所述等效卷积运算,并将所述等效卷积运算的结果发送至所述控制单元。
69.其中,该运算装置可以为人工智能专用的加速芯片,例如ai加速器等,也可以为上述芯片的部分结构。
70.其中,原始参数可以包括下述至少一项:原始输入数据、原始卷积核、原始卷积步长、原始填充值以及输出数据的尺寸。其中,原始输入数据可以为反卷积运算的输入特征图(input tensor),原始输入数据可以包括原始输入数据的首地址、每个数据维度的尺寸值等,地址可以为原始输入数据在存储单元中的存储地址,数据维度可以包括数量(n)、通道(c)、宽度(w)和高度(h)等,根据原始输入数据的首地址和每个数据维度的尺寸值便可以读取原始输入数据,例如原始输入数据的首地址为a地址,而数量、通道、宽度和高度各个维度
的尺寸分别为2、2、3、3,则a地址起前3个数据为第一个特征图的第一个通道的第一行数据,a地址起第4-6个数据为第一个特征图的第一个通道的第二行数据,a地址起第7-9个数据为第一个特征图的第一个通道的第三行数据,a地址起第10-12个数据为第一个特征图的第二个通道的第一行数据,a地址起第13-15个数据为第一个特征图的第二个通道的第二行数据,a地址起第16-18个数据为第一个特征图的第二个通道的第三行数据,a地址起第19-21个数据为第二个特征图的第一个通道的第一行数据,等等。原始卷积核可以包括原始卷积核的首地址、每个数据维度的尺寸等,地址可以为原始卷积核在存储单元中的存储地址,维度可以包括通道(c)、宽度(w)和高度(h)等;输出数据的尺寸可以包括输出数据在数量(n)、通道(c)、宽度(w)和高度(h)等每个数据维度的尺寸。
71.反卷积运算的原始参数可以由用户输入,或者由上游的计算过程生成。
72.反卷积运算对应的等效卷积运算指的是,与反卷积运算的运算结果相同的卷积运算。等效卷积运算的目标参数可以包括目标输入数据、目标卷积核、目标卷积步长、目标填充值等。
73.目标输入数据会随着原始输入数据和输出数据的尺寸等的变化而变化,因此生成目标输入数据需要在线执行。而反卷积运算的原始卷积核中的权重为神经网络中反卷积层的固定参数,因此可以离线处理,即在芯片的编译器(工具链)中开发原始卷积核转换为目标卷积核的专用函数,然后在编译神经网络时由芯片的编译器(工具链)对原始卷积核(即旧的weight tensor)进行转换,从而生成并保存目标卷积核(即新的weight tensor),使目标卷积核成为神经网络的参数(即硬件进行卷积运算的权重),因此在进行反卷积运算时便不需要对原始卷积核进行在线转换,只需直接对保存的目标卷积核进行取用即可。
74.在一个实施例中,控制单元可以根据原始参数中的原始输入数据、原始卷积步长、原始填充值和输出数据的尺寸,确定目标输入数据。进一步的,运算装置可以包括存储单元,控制单元可以在存储单元中生成目标输入数据,并确定目标输入数据的首地址和每个维度上的尺寸值等。
75.在另一个实施例中,控制单元可以根据原始卷积核生成目标卷积核。示例性的,根据卷积运算和其对应的等效卷积运算之间的关系,控制单元可以将所述原始卷积核中的数据进行中心对称旋转,得到所述等效卷积运算的目标卷积核。可以理解的是,在原始卷积核包括多个通道的情况下,可以将所述原始卷积核中每个通道的数据分别进行中心对称旋转,得到所述目标卷积核的每个通道的数据。请参照附图2,可以通过旋转180
°
的方式实现数据的中心对称旋转。
76.在又一个实施例中,控制单元可以将所述等效卷积运算的目标卷积步长确定为预设步长。示例性的,预设步长可以为1。
77.在又一个实施例中,控制单元可以将所述等效卷积运算的目标填充值确定为预设填充值。示例性的,预设填充值可以为0。
78.卷积运算单元具有对应的寄存器,可以通过对寄存器进行数据和参数配置,从而使卷积运算单元按照寄存器中的配置信息从存储单元中读取数据并进行卷积运算,可以通过对寄存器的接口进行配置来完成对寄存器的配置。基于此,控制器将所述目标参数发送至卷积运算单元时,可以将所述目标输入数据的首地址和每个数据维度的尺寸值、所述目标卷积核的首地址和每个数据维度的尺寸值、所述目标卷积步长、所述目标填充值配置至
所述卷积运算单元对应的寄存器中;且所述卷积运算单元根据所述目标参数进行所述等效卷积运算时,可以利用所述寄存器中的配置信息进行等效卷积运算,得到所述等效卷积运算的结果。
79.卷积运算单元可以按照目标输入数据的首地址和每个数据维度的尺寸值从内存(例如存储单元)中读取所述目标输入数据,可以按照目标卷积核的首地址和每个数据维度的尺寸值从神经网络的参数中读取目标卷积核,同时按照目标卷积步长和目标填充值,使用目标卷积核对目标输入数据进行卷积,从而得到卷积运算的结果。
80.根据上述实施例可知,通过设置控制单元,可以获取反卷积运算的原始参数,根据所述反卷积运算的原始参数,确定所述反卷积运算对应的等效卷积运算的目标参数,并将所述目标参数发送至卷积运算单元,以及将所述等效卷积运算的结果确定为所述反卷积运算的结果;通过设置卷积运算单元,可以根据所述目标参数进行所述等效卷积运算,并将所述等效卷积运算的结果发送至所述控制单元。本运算装置利用控制单元将反卷积运算转换为了对应的等效卷积运算,然后利用卷积运算单元执行该等效卷积运算,从而可以使不支持反卷积运算的卷积运算单元能够计算得到反卷积运算的运算结果,这样既可以提高反卷积运算的效率,还可以扩大反卷积运算的硬件选配范围,例如可以使用人工智能专用的加速芯片来执行反卷积运算,充分发挥加速芯片的并行计算能力,扩充了加速芯片支持的算子类型,使得不支持随机访存能力的加速芯片上也可以完成反卷积的运算。本公开的一些实施例中,所述控制单元用于根据所述反卷积运算的原始参数,确定所述反卷积运算对应的等效卷积运算的目标参数时,具体用于:根据所述原始输入数据的尺寸、所述原始卷积核的尺寸、所述原始卷积步长、所述原始填充值以及所述输出数据的尺寸,确定所述等效卷积运算的目标输入数据的尺寸,以及所述原始输入数据中的每个原始元素在所述目标输入数据中的位置;并根据所述原始输入数据中每个原始元素在所述目标输入数据中的位置,将所述原始输入数据中的每个原始元素添加到所述目标输入数据的对应位置,并在所述目标输入数据中的其他位置添加预设值,得到所述目标输入数据。
81.接下来先简单介绍反卷积运算与其对应的等效卷积运算间的尺寸关系。
82.从卷积运算前向来看,假设输入数据的尺寸是i,卷积核尺寸、卷积步长和填充值(pad值)分别是k,s,p,则卷积运算的输出数据的o的尺寸计算公式如下:
[0083][0084]
假设反卷积运算的输入数据的尺寸是o,卷积核尺寸、卷积步长和填充值(pad值)也分别是k,s,p,则反卷积运算的输出数据o’的尺寸计算公式如下:
[0085]o′
=(o-1)*s+k-2p+adj
[0086]
adj=(i+2p-k)%s
[0087]
基于上述尺寸关系,可以采用下述方式得到目标输入数据:首先在原始输入数据的相邻原始元素间插入s-1个预设值(例如0),然后在各个方向的边缘均填充p’=k-p-1个预设值,最后在右侧和下侧填充adj个预设值,其中,s为原始卷积步长,k为原始卷积核的每个通道的尺寸值,p为原始填充值,adj=(o+2p-k)%s,o为输出数据的每个通道的尺寸值。例如,反卷积运算的原始输入数据的尺寸是3*3,原始卷积核尺寸k、原始卷积步长s和原始填充值p分别是3、2、1,且反卷积运算的输出数据的尺寸是6*6,那么就有adj=(6+2*1-3)%
2=1,附图4给出了上述参数下得到的目标输入数据的卷积过程,其中,下方的数据为目标输入数据(即bottom tensor),上方的数据为反卷积运算的输出数据(即top tensor)。
[0088]
进一步的,可以按照下述公式计算目标输入数据的尺寸:标记反卷积运算的原始输入数据在各个维度上的尺寸为n*c*h*w,则目标输入数据在各个维度上的尺寸为n*c*h_itm*w_itm,插入的0的行数和列数标记为m(m=s-1),上下左右填充预设值的数量分别是pad_u,pad_d,pad_l和pad_r,那么w_itm=w+pad_l+pad_r+(w-1)*m,h_itm=h+pad_u+pad_d+(h-1)*m。
[0089]
进一步的,可以根据上述填充过程确定每个原始元素在目标输入数据中的位置。
[0090]
所述运算装置还包括存储单元和矢量运算单元(vpu),所述存储单元用于存储目标输入数据。所述控制单元根据所述原始输入数据中每个原始元素在所述目标输入数据中的位置,将所述原始输入数据中的每个原始元素添加到所述目标输入数据的对应位置,并在所述目标输入数据中的其他位置添加预设值,得到所述目标输入数据时,可以:
[0091]
首先,根据所述目标输入数据的尺寸,在存储单元上获取对应尺寸的目标数据空间,并将所述目标数据空间中的每个位置上的目标元素初始化为所述预设值;示例性的,可以在ai芯片的shared memory上申请对应尺寸的bottom tensor,并使用ai芯片上开发的fillzero算子将bottom tensor全部使用0进行填充。
[0092]
接下来,根据所述原始输入数据中的每个原始元素在所述目标输入数据中的位置,确定每个原始元素在所述目标数据空间中的位置。示例性的,可以将每个原始元素与目标输入数据的首个数据的相对位置关系,转换为每个原始元素与目标数据空间的首个位置的相对位置关系,从而作为原始元素在所述目标数据空间中的位置。
[0093]
最后,将所述原始输入数据的地址和每个原始元素在所述目标数据空间中的位置发送至所述矢量运算单元。示例性的,可以根据所述原始输入数据的地址、所述目标数据空间的地址、以及所述每个原始元素在所述目标数据空间中的位置,确定所述矢量运算单元的配置信息,并将所述配置信息发送至所述矢量运算单元,其中,所述矢量运算单元的配置信息包括下述至少一项:输入数据的首地址、运算步长和每个数据维度的尺寸值,以及输出数据的首地址、运算步长、每个数据维度的尺寸值和每个数据维度的循环值。
[0094]
基于此,矢量运算单元可以根据所述原始输入数据的地址获取所述原始输入数据中的每个原始元素,并使用每个原始元素对所述目标数据空间中的对应位置上的目标元素进行更新。示例性的,矢量运算单元根据所述配置信息,将每个原始元素在所述目标数据空间中的位置上的目标元素更新为对应的原始元素与所述预设值的和。
[0095]
可以参照附图3所示出的目标输入数据(即处于下方的数据),其对应的原始输入数据为连续摆放的3*3深色框数据,二者的区别只是各维度的地址间隔不同,但是各维度的循环值size(即宽度维度上的循环值size均为3,通道维度上的循环值size均为9)是没有变化的。
[0096]
可以借助ai芯片上的实现的move算子来完成示例中的操作,move算子用来在芯片的sram(static random-access memory,静态随机存取存储器)上进行数据拷贝,将数据从src tentor(源张量)所在的位置拷贝到dst tensor(目标张量)对应的存储空间上,支持数据的非连续访问和存储。矢量运算单元可以根据输入数据的首地址和每个数据维度的尺寸值确定每个原始元素的地址,由于每个原始元素均需要被读取并加入目标数据空间,因此
输入数据的运算步长可以设置为1,然后矢量运算单元可以根据输入数据的首地址和每个数据维度的尺寸值依次读取每个原始元素。输出数据的某个数据维度的循环值指的是该维度输出的数据数量,以图3中的目标输入数据为例,其宽度维度的循环值为3,即在某行连续输出3个数据后可以切换至下一行,并从下一行的首个数据位置开始下一次输出,其通道维度的循环值为9,即在某个通道连续输出9个数据后,可以切换至下一个通道的第一行的首个数据位置开始下一次输出;输出数据的运算步长指的是通道内各维度上的相邻数据间的距离,以图4中的目标输入数据为例,步长为2,则在宽度维度内,某行连续输出的两个数据距离为2,在高度维度上,相邻两个具有输出数据的行的距离为2;输出数据的某个数据维度的尺寸值指的是该维度内的数据位置的数量,可以利用数据维度的尺寸值切换数据维度,以图4中的目标输入数据为例,宽度维度的尺寸值为8,则切换行时可以在某一行的首地址增加8得到其下一行的首地址,切换通道时可以在某一通道的首地址增加64得到其下一个通道的首地址。因此,矢量运算单元可以根据输出数据的首地址、运算步长、每个数据维度的循环值和每个数据维度的尺寸值,依次确定目标输入数据中的每个输出位置。综上所述,矢量运算单元可以依次读取每个原始数据,并在每次读取原始数据后均将该原始数据与预设值(例如0)相加,并将所得到的的和输出到对应的输出位置,以更新输出位置上的预设值,当全部的原始数据均经过读取、运算和输出后,存储单元上的目标数据空间内的数据即为目标输出数据。
[0097]
本实施例中,首先确定目标输出数据的尺寸和每个原始元素在目标输入数据中的位置,然后将每个原始元素加入到目标输入数据的对应位置作为目标元素,并将目标输入数据的其他位置的目标元素设置为预设值(例如0),从而得到目标输入数据,简单准确。尤其是利用矢量运算单元依次读取每个原始元素后进行运算,并将运算结果输出到预先申请并初始化目标元素为预设值的目标数据空间内,简单方便,且利用了矢量运算单元的特点和优势,提高了运算效率和准确率。
[0098]
本公开所提供的反卷积运算方法,用卷积运算的方式在ai芯片等人工智能技术专用的加速芯片上实现了反卷积操作,不依赖于通用矩阵乘法和随机内存读写的功能,而且不受反卷积参数的限制,可以通过工具链的切分支持更大规模的反卷积运算,同时执行过程中的主要计算都发挥了ai芯片的并行计算能力,计算效率很高。基于该方法可以在ai芯片对应的编译器中构建反卷积算子,从而使ai芯片具备反卷积功能。
[0099]
第二方面,本公开至少一个实施例提供了一种芯片,包括第一方面所述的运算装置。
[0100]
第三方面,本公开至少一个实施例提供了一种反卷积运算方法,请参照附图4,其示出了该方法的流程,包括步骤s401至步骤s403。
[0101]
其中,该方法可以应用于第一方面所述的运算装置、第二方面所述的芯片或者其他硬件结构,例如人工智能专用的加速芯片(ai加速器)等。
[0102]
在步骤s401中,获取反卷积运算的原始参数。
[0103]
在步骤s402中,根据所述反卷积运算的原始参数,确定所述反卷积运算对应的等效卷积运算的目标参数。
[0104]
在步骤s403中,利用卷积运算单元,根据所述目标参数进行所述等效卷积运算,并将所述等效卷积运算的结果确定为所述反卷积运算的结果。
[0105]
在本公开的一些实施例中,所述原始参数包括下述至少一项:
[0106]
原始输入数据、原始卷积核、原始卷积步长、原始填充值以及输出数据的尺寸。
[0107]
在本公开的一些实施例中,所述根据所述反卷积运算的原始参数,确定所述反卷积运算对应的等效卷积运算的目标参数,包括:
[0108]
根据所述原始输入数据的尺寸、所述原始卷积核的尺寸、所述原始卷积步长、所述原始填充值以及所述输出数据的尺寸,确定所述等效卷积运算的目标输入数据的尺寸,以及所述原始输入数据中的每个原始元素在所述目标输入数据中的位置;
[0109]
根据所述原始输入数据中每个原始元素在所述目标输入数据中的位置,将所述原始输入数据中的每个原始元素添加到所述目标输入数据的对应位置,并在所述目标输入数据中的其他位置添加预设值,得到所述目标输入数据。
[0110]
在本公开的一些实施例中,所述根据所述原始输入数据中的原始元素在所述目标输入数据中的位置,将所述原始输入数据中的每个原始元素添加到所述目标输入数据的对应位置,并将所述目标输入数据的其他位置添加预设值,得到所述目标输入数据,包括:
[0111]
根据所述目标输入数据的尺寸,在共享内存上获取对应尺寸的目标数据空间,并将所述目标数据空间中的每个位置上的目标元素初始化为所述预设值;
[0112]
根据所述原始输入数据中的每个原始元素在所述目标输入数据中的位置,确定每个原始元素在所述目标数据空间中的位置;
[0113]
利用矢量运算单元,根据所述原始输入数据的地址获取所述原始输入数据中的每个原始元素,并使用每个原始元素对所述目标数据空间中的对应位置上的目标元素进行更新。
[0114]
在本公开的一些实施例中,所述利用矢量运算单元,根据所述原始输入数据的地址获取所述原始输入数据中的每个原始元素,并使用每个原始元素对所述目标数据空间中的对应位置上的目标元素进行更新,包括:
[0115]
根据所述原始输入数据的地址、所述目标数据空间的地址、以及所述每个原始元素在所述目标数据空间中的位置,确定所述矢量运算单元的配置信息,其中,所述矢量运算单元的配置信息包括下述至少一项:输入数据的首地址、运算步长和每个数据维度的尺寸值,以及输出数据的首地址、运算步长、每个数据维度的尺寸值和每个数据维度的循环值;
[0116]
所述矢量运算单元根据所述配置信息,将每个原始元素在所述目标数据空间中的位置上的目标元素更新为对应的原始元素与所述预设值的和。
[0117]
在本公开的一些实施例中,所述根据所述反卷积运算的原始参数,确定所述反卷积运算对应的等效卷积运算的目标参数,包括:
[0118]
将所述原始卷积核中的数据进行中心对称旋转,得到所述等效卷积运算的目标卷积核。
[0119]
在本公开的一些实施例中,所述原始卷积核包括多个通道;
[0120]
所述将所述原始卷积核中的数据进行中心对称旋转,得到所述等效卷积运算的目标卷积核,包括:
[0121]
将所述原始卷积核中每个通道的数据分别进行中心对称旋转,得到所述目标卷积核的每个通道的数据。
[0122]
在本公开的一些实施例中,所述根据所述反卷积运算的原始参数,确定所述反卷
积运算对应的等效卷积运算的目标参数,包括:
[0123]
将所述等效卷积运算的目标卷积步长确定为预设步长;和/或,
[0124]
将所述等效卷积运算的目标填充值确定为预设填充值。
[0125]
在本公开的一些实施例中,所述利用卷积运算单元,根据所述目标参数进行所述等效卷积运算,并将所述等效卷积运算的结果确定为所述反卷积运算的结果,包括:
[0126]
将所述目标输入数据的首地址和每个数据维度的尺寸值、所述目标卷积核的首地址和每个数据维度的尺寸值、所述目标卷积步长、所述目标填充值配置至所述卷积运算单元对应的寄存器中,所述卷积运算单元利用所述寄存器中的配置信息进行等效卷积运算,得到所述等效卷积运算的结果。
[0127]
以上方法中所涉及的步骤细节,已经在第一方面对运算装置的相应部分进行了详细介绍,这里不再重复赘述。
[0128]
根据上述实施例可知,通过获取反卷积运算的原始参数,可以根据所述反卷积运算的原始参数,确定所述反卷积运算对应的等效卷积运算的目标参数,最后可以利用卷积运算单元,根据所述目标参数进行所述等效卷积运算,并将所述等效卷积运算的结果确定为所述反卷积运算的结果。本方法将反卷积运算转换为了对应的等效卷积运算,然后利用卷积运算单元执行该等效卷积运算,从而可以使不支持反卷积运算的卷积运算单元能够计算得到反卷积运算的运算结果,这样既可以提高反卷积运算的效率,还可以扩大反卷积运算的硬件选配范围,例如可以使用人工智能专用的加速芯片来执行反卷积运算,充分发挥加速芯片的并行计算能力,扩充了加速芯片支持的算子类型,使得不支持随机访存能力的加速芯片上也可以完成反卷积的运算。
[0129]
本公开所提供的反卷积运算方法,用卷积运算的方式在ai芯片等人工智能技术专用的加速芯片上实现了反卷积操作,不依赖于通用矩阵乘法和随机内存读写的功能,而且不受反卷积参数的限制,可以通过工具链的切分支持更大规模的反卷积运算,同时执行过程中的主要计算都发挥了ai芯片的并行计算能力,计算效率很高。基于该方法可以在ai芯片对应的编译器中构建反卷积算子,从而使ai芯片具备反卷积功能。
[0130]
第四方面,本公开至少一个实施例提供了一种设备,请参照附图5,其示出了该设备的结构,所述设备包括存储器、处理器,所述存储器用于存储可在处理器上运行的计算机指令,所述处理器用于在执行所述计算机指令时基于第三方面任一项所述的方法进行运算;或者,所述设备包括第二方面所述的芯片。
[0131]
第五方面,本公开至少一个实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现第三方面任一项所述的方法。
[0132]
在本公开中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。术语“多个”指两个或两个以上,除非另有明确的限定。
[0133]
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
[0134]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并
且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1