CN117063182A - 一种数据处理方法和装置 - Google Patents

一种数据处理方法和装置 Download PDF

Info

Publication number
CN117063182A
CN117063182A CN202180018380.XA CN202180018380A CN117063182A CN 117063182 A CN117063182 A CN 117063182A CN 202180018380 A CN202180018380 A CN 202180018380A CN 117063182 A CN117063182 A CN 117063182A
Authority
CN
China
Prior art keywords
convolution
input data
convolution kernel
input
size
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202180018380.XA
Other languages
English (en)
Inventor
宋鹏飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN117063182A publication Critical patent/CN117063182A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

本申请提供了一种数据处理方法和装置,能够提高运算效率。该方法包括:获取第一输入数据、第一卷积核和步长;确定多个第二输入数据,在任一个第二输入数据中的至少一个输入元素在第一输入数据中的第一坐标在第一维度的子坐标除以步长得到的第一余数相等,第一维度为任一个;确定多个第二卷积核,在任一个第二卷积核中在第一卷积核中的第二坐标在第一维度的子坐标除以步长得到的第二余数相等,多个第二卷积核与多个第二输入数据一一对应,每个第二卷积核对应的第二余数与该第二卷积核对应的第二输入数据对应的第一余数相等;利用加速算法,对相对应的第二输入数据和第二卷积核进行步长为1的卷积运算,以得到多个第一卷积运算数据的和。

Description

一种数据处理方法和装置 技术领域
本申请涉及数据处理领域,具体涉及一种数据处理方法和装置。
背景技术
人工智能(artificial intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,AI基础理论等。
神经网络(neural network,NN)作为人工智能的重要分支,是一种模仿动物神经网络行为特征进行信息处理的网络结构。神经网络的结构由大量的节点(或称神经元)相互联接构成,基于特定运算模型通过对输入信息进行学习和训练达到处理信息的目的。一个神经网络包括输入层、隐藏层及输出层,输入层负责接收输入信号,输出层负责输出神经网络的计算结果,隐藏层负责学习、训练等计算过程,是网络的记忆单元,隐藏层的记忆功能由权重矩阵来表征,通常每个神经元对应一个权重系数。
卷积操作是卷积神经网络中的最常用的计算操作。卷积操作主要应用于卷积层中。在卷积操作中,卷积核中的每一个权值数据与其对应的输入数据相乘,然后将点乘结果相加,得到一次卷积操作的输出结果。之后根据卷积层的步长设定,滑动卷积核,重复上述卷积操作。
卷积神经网络处理的数据通常数量庞大。利用维诺格拉德(Winograd)算法、快速傅立叶变换(fast Fourier transform,FFT)快速卷积算法等加速算法能够对卷积计算进行加速。然而,现有的加速算法的使用范围有限,在步长超过1的卷积运算中不适用。
发明内容
本申请提供一种数据处理方法和装置,能够提高运算效率。
第一方面,提供一种数据处理方法,包括:获取第一输入数据、第一卷积核和步长s,所述第一输入数据和所述第一卷积核均为n个维度,n为1、2、3中的任一个,所述步长s为大于1的正整数;根据所述第一输入数据,确定多个第二输入数据,每个第二输入数据包括所述第一输入数据中的至少一个输入元素,在任一个所述第二输入数据中的所述至少一个输入元素中每个输入元素在所述第一输入数据中的第一坐标在第一维度的子坐标除以所述步长s得到的第一余数相等,所述第一维度为所述n个维度的任一个维度;根据所述第一卷积核,确定多个第二卷积核,每个第二卷积核包括所述第一卷积核中的至少一 个卷积元素,在任一个所述第二卷积核中的每个卷积元素在所述第一卷积核中的第二坐标在所述第一维度的子坐标除以所述步长s得到的第二余数相等,所述多个第二卷积核与所述多个第二输入数据一一对应,所述多个第二卷积核中每个第二卷积核中的所述卷积元素对应的所述第二余数与所述第二卷积核对应的第二输入数据中的所述输入元素对应的所述第一余数相等;利用加速算法,对每个第二输入数据和所述第二输入数据对应的第二卷积核进行步长为1的卷积运算,以得到多个第一卷积运算数据的和,所述多个第一卷积运算数据的和用于表示所述第一输入数据与所述第一卷积核进行所述步长s的卷积运算结果。
根据步长s,将第一卷积核转换为多个第二卷积核,将第一输入数据转换为多个第二输入数据。对每个第二输入数据和所述第二输入数据对应的第二卷积核进行步长为1的卷积运算,以得到多个第一卷积运算数据的和。该多个第一卷积运算数据的和用于表示所述第一输入数据与所述第一卷积核进行所述步长s的卷积运算结果。将步长为s的卷积运算转换为步长为1的卷积运算,从而能够对卷积运算进行加速,提高运算效率。
结合第一方面,在一些可能的实现方式中,所述利用加速算法,对每个第二输入数据和所述第二输入数据对应的第二卷积核进行步长为1的卷积运算,包括:对第三输入数据和第三卷积核进行步长为1的卷积运算,所述第三输入数据包括所述多个第二输入数据,所述第三卷积核包括所述多个第二卷积核。
通过拼接等方式,可以根据多个第二卷积核得到第三卷积核,并根据多个第二输入数据得到第三输入数据。可以利用加速算法对第三输入数据和第三卷积核可以进行步长为1的卷积运算,以得到多个第一卷积运算数据的和。从而使得卷积运算更为简便。
结合第一方面,在一些可能的实现方式中,所述方法还包括:获取预设卷积核尺寸,所述预设卷积核尺寸为n个维度,所述多个第二卷积核的尺寸为所述预设卷积核尺寸;所述根据所述第一输入数据,确定多个第二输入数据,包括:根据所述第一输入数据和每个第二卷积核中的所述卷积元素在所述第一卷积核中的位置,确定每个第二卷积核对应的所述第二输入数据。
通过将超过预设卷积核尺寸的第一卷积核转换为多个尺寸为预设卷积核尺寸的第二卷积核,使得用于进行卷积计算的设备无需存储多种尺寸的卷积核,就能够实现对多种尺寸的卷积核与输入数据的卷积运算,降低存储成本。
结合第一方面,在一些可能的实现方式中,所述方法还包括:获取预设输入数据尺寸;所述对每个第二卷积核与所述第二卷积核对应的第二输入数据进行卷积运算,包括:在所述多个第二卷积核中第四卷积核对应的第二输入数据大于所述预设输入数据尺寸的情况下,根据所述第四卷积核的尺寸和所述第四卷积核对应的第二输入数据,确定多个输入单元,每个输入单元的尺寸为所述预设输入数据尺寸,每个输入单元包括所述第四卷积核对应的第二输入数据中的至少一个输入元素;对所述第四卷积核与所述多个输入单元分别进行卷积运算,以得到每个输入单元对应的第二卷积运算数据;所述多个输入单元对应的第二卷积运算数据的拼接结果用于表示所述第四卷积核对应的所述第一卷积运算数据。
通过将超过预设卷积核尺寸的第二输入数据转换为多个尺寸为预设输入数据尺寸的输入单元,使得用于进行卷积计算的设备无需存储多种输入数据尺寸,就能够实现对多种尺寸的输入数据与卷积核的卷积运算,降低存储成本。
第二方面,提供一种数据处理方法,包括:获取第一输入数据、第一卷积核、预设卷积核尺寸,所述第一输入数据、所述第一卷积核、所述预设卷积核尺寸均为n个维度,n为1、2、3中的任一个,所述第一卷积核的尺寸大于所述预设卷积核尺寸;根据所述第一卷积核,确定多个第二卷积核,所述多个第二卷积核的尺寸为所述预设卷积核尺寸,每个所述第二卷积核包括所示第一卷积核中的至少一个卷积元素;根据每个第二卷积核中的卷积元素在所述第一卷积核中的位置,确定每个第二卷积核对应的第二输入数据,每个第二输入数据包括所述第一输入数据中的至少一个输入元素;对每个第二卷积核与所述第二卷积核对应的第二输入数据进行卷积运算,以得到多个第一卷积运算数据,所述多个第一卷积运算数据的和用于表示所述第一输入数据与所述第一卷积核的卷积运算结果。
通过将超过预设卷积核尺寸的第一卷积核转换为多个尺寸为预设卷积核尺寸的第二卷积核,使得用于进行卷积计算的设备无需存储多种尺寸的卷积核,就能够实现对多种尺寸的卷积核与输入数据的卷积运算,降低存储成本。
结合第二方面,在一些可能的实现方式中,所述方法还包括:获取步长s,所述步长s为大于1的正整数;在任一个所述第二卷积核中的每个卷积元素在所述第一卷积核中的第二坐标在第一维度的子坐标除以所述步长s得到的第二余数相等,所述第一维度为所述n个维度的任一个维度;在任一个所述第二输入数据中的所述至少一个输入元素每个输入元素在所述第一输入数据中的第一坐标在第一维度的子坐标除以所述步长s得到的第二余数相等,所述多个第二卷积核中每个第二卷积核中的所述卷积元素对应的第二余数与所述第二卷积核对应的第二输入数据中的所述输入元素对应的第一余数相等;所述对每个第二卷积核与所述第二卷积核对应的第二输入数据进行卷积运算,包括:利用加速算法,对每个第二输入数据和所述第二输入数据对应的第二卷积核进行步长为1的卷积运算,所述多个第一卷积运算数据的和用于表示所述第一输入数据与所述第一卷积核进行步长s的卷积运算结果。
结合第二方面,在一些可能的实现方式中,所述方法还包括:获取预设输入数据尺寸;所述对每个第二卷积核与所述第二卷积核对应的第二输入数据进行卷积运算,包括:在所述多个第二卷积核中第三卷积核对应的第二输入数据大于所述预设输入数据尺寸的情况下,根据所述第三卷积核的尺寸和所述第三卷积核对应的第二输入数据,确定多个输入单元,每个输入单元的尺寸为所述预设输入数据尺寸,每个输入单元包括所述第三卷积核对应的第二输入数据中的至少一个输入元素;对所述第三卷积核与所述多个输入单元分别进行卷积运算,以得到每个输入单元对应的第二卷积运算数据;所述多个输入单元对应的第二卷积运算数据的拼接结果用于表示所述第三卷积核对应的所述第一卷积运算数据。
第三方面,提供一种数据处理装置,包括存储模块和处理模块,存储模块用于存储程序;当该程序在处理模块中执行时,处理模块用于实现第一方面、第二方面或第一方面、第二方面任一种实现方式中所述的数据处理方法。
第四方面,提供一种数据处理装置,包括:存储器和处理器,存储器用于存储程序指令,处理器用于执行该程序指令,以实现第一方面、第二方面或第一方面、第二方面任一种实现方式中所述的数据处理方法。
第五方面,提供一种计算机程序存储介质,所述计算机程序存储介质具有程序指令,当所述程序指令在计算机设备中执行时,所述计算机设备用于实现第一方面或第一方面任 一种实现方式中的方法。
第六方面,提供一种计算机程序产品,所述计算机程序产品包括程序指令,当所述程序指令在计算机设备中被执行时,使得第一方面或第一方面任一种实现方式中的方法被执行。
第七方面,提供一种芯片,其特征在于,所述芯片包括至少一个处理器,当程序指令在所述至少一个处理器中执行时,使得第一方面或第一方面任一种实现方式中的方法被执行。
上述第二方面至第七方面中任一方面中的任一可能实现方式可以达到的技术效果,可以相应参照上述第一方面中任一方面中的任一可能实现方式可以达到的技术效果描述,重复之处不予论述。
附图说明
图1是本申请实施例提供的一种***架构的结构示意图。
图2是本申请实施例提供的一种卷积神经网络的结构示意图。
图3是本申请实施例提供的另一种卷积神经网络的结构示意图。
图4是本申请实施例提供的一种芯片的硬件结构示意图。
图5是本申请实施例提供的一种***架构的示意图。
图6是本申请实施例提供的一种数据处理算方法的示意性流程图。
图7是本申请实施例提供的一种数据处理算方法的示意图。
图8是本申请实施例提供的另一种数据处理算方法的示意图。
图9是本申请实施例提供的另一种数据处理方法的示意流程图。
图10是本申请实施例提供的一种数据处理方法的示意图。
图11至图14是本申请实施例提供的一种数据处理算方法的示意图。
图15是一种矩阵乘法单元的示意性结构图。
图16是一种乘积累加运算单元的示意性结构图。
图17是本申请一个实施例提供的一种数据处理装置的示意性结构图。
图18是本申请另一个实施例提供的一种数据处理装置的示意性结构图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
下面将结合附图,对本申请中的技术方案进行描述。下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
由于本申请实施例涉及大量神经网络的应用,为了便于理解,下面先对本申请实施例可能涉及的神经网络的相关术语和概念进行介绍。
(1)神经网络
神经网络可以是由神经单元组成的,神经单元可以是指以x s和截距1为输入的运算单元,该运算单元的输出可以为:
其中,s=1、2、……n,n为大于1的自然数,W s为x s的权重,b为神经单元的偏置。f为神经单元的激活函数(activation functions),用于将非线性特性引入神经网络中,来将神经单元中的输入信号转换为输出信号。该激活函数的输出信号可以作为下一层卷积层的输入,激活函数可以是sigmoid函数。神经网络是将多个上述单一的神经单元联结在一起形成的网络,即一个神经单元的输出可以是另一个神经单元的输入。每个神经单元的输入可以与前一层的局部接受域相连,来提取局部接受域的特征,局部接受域可以是由若干个神经单元组成的区域。
(2)深度神经网络
深度神经网络(deep neural network,DNN),也称多层神经网络,可以理解为具有多层隐含层的神经网络。按照不同层的位置对DNN进行划分,DNN内部的神经网络可以分为三类:输入层,隐含层,输出层。一般来说第一层是输入层,最后一层是输出层,中间的层数都是隐含层。层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。
虽然DNN看起来很复杂,但是就每一层的工作来说,其实并不复杂,简单来说就是如下线性关系表达式: 其中, 是输入向量, 是输出向量, 是偏移向量,W是权重矩阵(也称系数),α()是激活函数。每一层仅仅是对输入向量 经过如此简单的操作得到输出向量 由于DNN层数多,系数W和偏移向量 的数量也比较多。这些参数在DNN中的定义如下所述:以系数W为例:假设在一个三层的DNN中,第二层的第4个神经元到第三层的第2个神经元的线性系数定义为 上标3代表系数W所在的层数,而下标对应的是输出的第三层索引2和输入的第二层索引4。
综上,第L-1层的第k个神经元到第L层的第j个神经元的系数定义为
需要注意的是,输入层是没有W参数的。在深度神经网络中,更多的隐含层让网络更能够刻画现实世界中的复杂情形。理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。训练深度神经网络的也就是学习权重矩阵的过程,其最终目的是得到训练好的深度神经网络的所有层的权重矩阵(由很多层的向量W形成的权重矩阵)。
(3)卷积神经网络
卷积神经网络(convolutional neuron network,CNN)是一种带有卷积结构的深度神经网络。卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器,该特征抽取器可以看作是滤波器。卷积层是指卷积神经网络中对输入信号进行卷积处理的神经元层。在卷积神经网络的卷积层中,一个神经元可以只与部分邻层神经元连接。一个卷积层中,通常包含若干个特征平面,每个特征平面可以由一些矩形排列的神经单元组成。同一特征平面的神经单元共享权重,这里共享的权重就是卷积核。共享权重可以理解为提取数据信息的方式与位置无关。卷积核可以以随机大小的矩阵的形式初始化,在卷积神经网络的训练过程中卷积核可以通过学习得到合理的权重。另外,共享权重带来的直接好处是减少卷积神经网络各层之间的连接,同时又降低了过拟合的风险。
(4)损失函数
在训练深度神经网络的过程中,因为希望深度神经网络的输出尽可能的接近真正想要预测的值,所以可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重向量(当然,在第一次更新之前通常会有初始化的过程,即为深度神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断地调整,直到深度神经网络能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(loss function)或目标函数(objective function),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络的训练就变成了尽可能缩小这个loss的过程。
(5)前向传播算法
前向传播算法,也可以称为正向传播算法,是由前向后进行计算的算法。利用前向传播算法,从输入层开始,一层层向后计算,直到运算到输出层,得到输出结果。前向传播算法通过一层层从前向后的运算,得到输出层结果。
(6)反向传播算法
神经网络可以采用误差反向传播(back propagation,BP)算法在训练过程中修正初始的神经网络模型中参数的大小,使得神经网络模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新初始的神经网络模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的神经网络模型的参数,例如权重矩阵。
(7)卷积核
卷积操作也可以称为卷积运算,通常应用于卷积神经网络中。卷积神经网络可用于处理图像或其他类型的数据。待进行卷积计算的数据可以称为输入矩阵或输入数据。该输入数据可以是图像数据。其中,卷积操作可对应一个卷积核。用于对图像等二维数据进行处理的卷积核,可以是一个K*K大小的矩阵,K为大于或等于1的整数。卷积核中的每个元素为一个权值数据。在卷积过程中,卷积核根据步长在输入矩阵上滑动,输入矩阵会被滑动窗口划分为许多与卷积核大小相同的子矩阵,每个子矩阵与卷积核进行点乘,并将点乘结果进行累加,以得到卷积操作的运算结果。需要说明的是,卷积核的宽度和长度可以相等,也可以不相等。本申请实施例中,以卷积核的宽度和长度相等进行说明,即卷积核大小为K*K。本领域技术人员能够理解,本申请实施例中的计算装置和计算方法可应用于卷积核的宽度和长度不相等的情形。
如图1所示,本申请实施例提供了一种***架构100。在图1中,数据采集设备160用于采集训练数据。针对本申请实施例的数据处理方法来说,训练数据可以包括多个训练输入数据和每个训练输入数据对应的训练标识。
在采集到训练数据之后,数据采集设备160将这些训练数据存入数据库130,训练设备120基于数据库130中维护的训练数据训练得到目标模型/规则101。
下面对训练设备120基于训练数据得到目标模型/规则101进行描述,训练设备120对输入的训练输入数据进行处理,将输出的结果与该训练输入数据对应的训练标识进行对 比,直到根据训练设备120输出的结果与该训练标识的差值小于一定的阈值,从而完成目标模型/规则101的训练。
上述目标模型/规则101能够用于实现本申请实施例的数据处理方法。本申请实施例中的目标模型/规则101具体可以为神经网络。需要说明的是,在实际的应用中,所述数据库130中维护的训练数据不一定都来自于数据采集设备160的采集,也有可能是从其他设备接收得到的。另外需要说明的是,训练设备120也不一定完全基于数据库130维护的训练数据进行目标模型/规则101的训练,也有可能从云端或其他地方获取训练数据进行模型训练,上述描述不应该作为对本申请实施例的限定。
根据训练设备120训练得到的目标模型/规则101可以应用于不同的***或设备中,如应用于图1所示的执行设备110,所述执行设备110可以是终端,如手机终端,平板电脑,笔记本电脑,增强现实(augmented reality,AR)AR/虚拟现实(virtual reality,VR),车载终端等,还可以是服务器或者云端等。在图1中,执行设备110配置输入/输出(input/output,I/O)接口112,用于与外部设备进行数据交互,用户可以通过客户设备140向I/O接口112输入数据,所述输入数据在本申请实施例中可以包括:客户设备输入的待处理数据。
预处理模块113和预处理模块114用于根据I/O接口112接收到的输入数据(如待处理数据)进行预处理,在本申请实施例中,也可以没有预处理模块113和预处理模块114(也可以只有其中的一个预处理模块),而直接采用计算模块111对输入数据进行处理。
在执行设备110对输入数据进行预处理,或者在执行设备110的计算模块111执行计算等相关的处理过程中,执行设备110可以调用数据存储***150中的数据、代码等以用于相应的处理,也可以将相应处理得到的数据、指令等存入数据存储***150中。
最后,I/O接口112将处理结果,如上述得到的数据的处理结果返回给客户设备140,从而提供给用户。
值得说明的是,训练设备120可以针对不同的目标或称不同的任务,基于不同的训练数据生成相应的目标模型/规则101,该相应的目标模型/规则101即可以用于实现上述目标或完成上述任务,从而为用户提供所需的结果。
在图1中所示情况下,用户可以手动给定输入数据,该手动给定可以通过I/O接口112提供的界面进行操作。另一种情况下,客户设备140可以自动地向I/O接口112发送输入数据,如果要求客户设备140自动发送输入数据需要获得用户的授权,则用户可以在客户设备140中设置相应权限。用户可以在客户设备140查看执行设备110输出的结果,具体的呈现形式可以是显示、声音、动作等具体方式。客户设备140也可以作为数据采集端,采集如图所示输入I/O接口112的输入数据及输出I/O接口112的输出结果作为新的样本数据,并存入数据库130。当然,也可以不经过客户设备140进行采集,而是由I/O接口112直接将如图所示输入I/O接口112的输入数据及输出I/O接口112的输出结果,作为新的样本数据存入数据库130。
值得注意的是,图1仅是本申请实施例提供的一种***架构的示意图,图中所示设备、器件、模块等之间的位置关系不构成任何限制,例如,在图1中,数据存储***150相对执行设备110是外部存储器,在其它情况下,也可以将数据存储***150置于执行设备110中。
如图1所示,根据训练设备120训练得到目标模型/规则101,该目标模型/规则101在本申请实施例中可以是本申请中的神经网络,具体的,本申请实施例使用神经网络可以为CNN,深度卷积神经网络(deep convolutional neural networks,DCNN),循环神经网络(recurrent neural network,RNN)等等。
由于CNN是一种非常常见的神经网络,下面结合图2重点对CNN的结构进行详细的介绍。如上文的基础概念介绍所述,卷积神经网络是一种带有卷积结构的深度神经网络,是一种深度学习(deep learning)架构,深度学习架构是指通过机器学习的算法,在不同的抽象层级上进行多个层次的学习。作为一种深度学习架构,CNN是一种前馈(feed-forward)人工神经网络,该前馈人工神经网络中的各个神经元可以对输入其中的数据作出响应。
本申请实施例的数据处理方法具体采用的神经网络的结构可以如图2所示。在图2中,卷积神经网络(CNN)200可以包括输入层210,卷积层/池化层220(其中池化层为可选的),以及神经网络层230。其中,输入层210可以获取待处理数据,并将获取到的待处理数据交由卷积层/池化层220以及后面的神经网络层230进行处理,可以得到数据的处理结果。下面对图2中的CNN 200中内部的层结构进行详细的介绍。
如图2所示卷积层/池化层220可以包括如示例221-226层,举例来说:在一种实现中,221层为卷积层,222层为池化层,223层为卷积层,224层为池化层,225为卷积层,226为池化层;在另一种实现方式中,221、222为卷积层,223为池化层,224、225为卷积层,226为池化层。即卷积层的输出可以作为随后的池化层的输入,也可以作为另一个卷积层的输入以继续进行卷积操作。
下面将以卷积层221为例,介绍一层卷积层的内部工作原理。
卷积层221可以包括很多个卷积算子,卷积算子也称为核,其在数据处理中的作用相当于一个从输入数据矩阵中提取特定信息的过滤器,卷积算子本质上可以是一个权重矩阵,这个权重矩阵通常被预先定义。
这些权重矩阵中的权重值在实际应用中需要经过大量的训练得到,通过训练得到的权重值形成的各个权重矩阵可以用来从输入数据中提取信息,从而使得卷积神经网络200进行正确的预测。
当卷积神经网络200有多个卷积层的时候,初始的卷积层(例如221)往往提取较多的一般特征,该一般特征也可以称之为低级别的特征;随着卷积神经网络200深度的加深,越往后的卷积层(例如226)提取到的特征越来越复杂,比如高级别的语义之类的特征,语义越高的特征越适用于待解决的问题。
由于常常需要减少训练参数的数量,因此卷积层之后常常需要周期性的引入池化层,在如图2中220所示例的221-226各层,可以是一层卷积层后面跟一层池化层,也可以是多层卷积层后面接一层或多层池化层。在数据处理过程中,池化层的唯一目的就是减少数据的空间大小。
在经过卷积层/池化层220的处理后,卷积神经网络200还不足以输出所需要的输出信息。因为如前所述,卷积层/池化层220只会提取特征,并减少输入数据带来的参数。然而为了生成最终的输出信息(所需要的类信息或其他相关信息),卷积神经网络200需要利用神经网络层230来生成一个或者一组所需要的类的数量的输出。因此,在神经网络 层230中可以包括多层隐含层(如图2所示的231、232至23n)以及输出层240,该多层隐含层中所包含的参数可以根据具体的任务类型的相关训练数据进行预先训练得到,例如该任务类型可以包括识别、分类等等。
在神经网络层230中的多层隐含层之后,也就是整个卷积神经网络200的最后层为输出层240,该输出层240具有类似分类交叉熵的损失函数,具体用于计算预测误差,一旦整个卷积神经网络200的前向传播(如图2由210至240方向的传播为前向传播)完成,反向传播(如图2由240至210方向的传播为反向传播)就会开始更新前面提到的各层的权重值以及偏差,以减少卷积神经网络200的损失,及卷积神经网络200通过输出层输出的结果和理想结果之间的误差。
本申请实施例的数据处理方法具体采用的神经网络的结构可以如图3所示。在图3中,卷积神经网络(CNN)200可以包括输入层210,卷积层/池化层220(其中池化层为可选的),以及神经网络层230。与图2相比,图3中的卷积层/池化层220中的多个卷积层/池化层并行,将分别提取的特征均输入给神经网络层230进行处理。
需要说明的是,图2和图3所示的卷积神经网络仅作为一种本申请实施例的数据处理方法的两种可能的卷积神经网络的示例,在具体的应用中,本申请实施例的数据处理方法所采用的卷积神经网络还可以以其他网络模型的形式存在。
图4为本申请实施例提供的一种芯片的硬件结构,该芯片包括神经网络处理器50。该芯片可以被设置在如图1所示的执行设备110中,用以完成计算模块111的计算工作。该芯片也可以被设置在如图1所示的训练设备120中,用以完成训练设备120的训练工作并输出目标模型/规则101。如图2和图3所示的卷积神经网络中各层的算法均可在如图4所示的芯片中得以实现。
神经网络处理器NPU 50作为协处理器挂载到主中央处理器(central processing unit,CPU)(host CPU)上,由主CPU分配任务。NPU的核心部分为运算电路503,控制器504控制运算电路503提取存储器(权重存储器或输入存储器)中的数据并进行运算。
在一些实现中,运算电路503内部包括多个处理单元(process engine,PE)。在一些实现中,运算电路503是二维脉动阵列。运算电路503还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路503是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路从权重存储器502中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。运算电路从输入存储器501中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器(accumulator)508中。
向量计算单元507可以对运算电路的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。例如,向量计算单元507可以用于神经网络中非卷积/非FC层的网络计算,如池化(pooling),批归一化(batch normalization),局部响应归一化(local response normalization)等。
在一些实现中,向量计算单元能507将经处理的输出的向量存储到统一缓存器506。例如,向量计算单元507可以将非线性函数应用到运算电路503的输出,例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元507生成归一化的值、合并值,或二 者均有。在一些实现中,处理过的输出的向量能够用作到运算电路503的激活输入,例如用于在神经网络中的后续层中的使用。
统一存储器506用于存放输入数据以及输出数据。
权重数据直接通过存储单元访问控制器505(direct memory access controller,DMAC)将外部存储器中的输入数据搬运到输入存储器501和/或统一存储器506、将外部存储器中的权重数据存入权重存储器502,以及将统一存储器506中的数据存入外部存储器。
总线接口单元(bus interface unit,BIU)510,用于通过总线实现主CPU、DMAC和取指存储器509之间进行交互。
与控制器504连接的取指存储器(instruction fetch buffer)509,用于存储控制器504使用的指令;
控制器504,用于调用指存储器509中缓存的指令,实现控制该运算加速器的工作过程。
一般地,统一存储器506,输入存储器501,权重存储器502以及取指存储器509均为片上(On-Chip)存储器,外部存储器为该NPU外部的存储器,该外部存储器可以为双倍数据率同步动态随机存储器(double data rate synchronous dynamic random access memory,简称DDR SDRAM)、高带宽存储器(high bandwidth memory,HBM)或其他可读可写的存储器。
其中,图2和图3所示的卷积神经网络中各层的运算可以由运算电路503或向量计算单元507执行。
上文中介绍的图1中的执行设备110能够执行本申请实施例的数据处理方法的各个步骤,图2和图3所示的CNN模型和图4所示的芯片也可以用于执行本申请实施例的数据处理方法的各个步骤。下面结合附图对本申请实施例的神经网络训练的方法和本申请实施例的数据处理方法进行详细的介绍。
如图5所示,本申请实施例提供了一种***架构300。该***架构包括本地设备301、本地设备302以及执行设备110和数据存储***150,其中,本地设备301和本地设备302通过通信网络与执行设备110连接。
执行设备110可以由一个或多个服务器实现。可选的,执行设备110可以与其它计算设备配合使用,例如:数据存储器、路由器、负载均衡器等设备。执行设备110可以布置在一个物理站点上,或者分布在多个物理站点上。执行设备110可以使用数据存储***150中的数据,或者调用数据存储***150中的程序代码来实现本申请实施例的数据处理的方法。
用户可以操作各自的用户设备(例如本地设备301和本地设备302)与执行设备110进行交互。每个本地设备可以表示任何计算设备,例如个人计算机、计算机工作站、智能手机、平板电脑、智能摄像头、智能汽车或其他类型蜂窝电话、媒体消费设备、可穿戴设备、机顶盒、游戏机等。
每个用户的本地设备可以通过任何通信机制/通信标准的通信网络与执行设备110进行交互,通信网络可以是广域网、局域网、点对点连接等方式,或它们的任意组合。
在一种实现方式中,本地设备301、本地设备302从执行设备110获取到目标神经网络的相关参数,将目标神经网络部署在本地设备301、本地设备302上,利用该目标神经 网络进行数据分类或者识别等等。
在另一种实现中,执行设备110上可以直接部署目标神经网络,执行设备110通过从本地设备301和本地设备302获取待处理数据,并根据目标神经网络对待处理数据进行分类或者其他类型的数据处理。
上述执行设备110也可以为云端设备,此时,执行设备110可以部署在云端;或者,上述执行设备110也可以为终端设备,此时,执行设备110可以部署在用户终端侧,本申请实施例对此并不限定。
在卷积层进行卷积计算的过程中,计算量较大。可以采用维诺格拉德(Winograd)算法、快速傅立叶变换(fast Fourier transform,FFT)快速卷积算法等对卷积计算进行加速。
在处理器中,乘法计算的时钟周期数要远远大于加法计算的时钟周期数。利用Winograd算法进行卷积运算的过程中,能够降低乘法计算的次数,从而实现对卷积运算的加速。
以1维卷积运算为例进行说明。如果按滑动窗口方式计算卷积,卷积核处理输入数据时,自左侧起,与卷积核相同大小的输入数据中的子矩阵与卷积核中的权重对应位置元素相乘后求和,得到输出数据的第一个元素。卷积核向右移动一个步长单位后,重复上述操作得到输出数据的第二个元素。卷积核向右移动一个步长单位,直到卷积核右端与输入数据右端重合,计算得到输出数据的最后一个元素。输出数据的尺寸为m,卷积核的尺寸为r,输入数据的尺寸为m+r-1。则需要进行m×r次乘法。
如果输入数据为d=[d 0,d 1,d 2,d 3] T,卷积核为g=[g 0,g 1,g 2] T,则卷积运算的结果Y可写成如下矩阵乘法形式:
其中,r 0=(d 0·g 0)+(d 1·g 1)+(d 2·g 2),r 1=(d 1·g 0)+(d 2·g 1)+(d 3·g 2)。需要2×3=6次乘法和4次加法。
卷积运算中输入数据转换成的矩阵不是任意矩阵,其中有规律地分布着大量的重复元素,比如第1行和第2行均有d 1和d 2,这就使得对卷积运算进行优化存在了可能。
利用Winograd算法,卷积运算的结果Y可以表示为:
Y=A T[(Gg)□(B Td)]
其中,T表示矩阵转置,□表示对应位置相乘(element-wise multiplication(Hadamard product)),B T为输入转换(input transform)矩阵,G为卷积核转换(Filter transform)矩阵,A T为输出转换(output transform)矩阵。
对于输入数据为d=[d 0,d 1,d 2,d 3] T,卷积核为g=[g 0,g 1,g 2] T,B T、G、A T可以表示为:
从而,卷积运算的结果Y可以表示为:
其中,
m 1=(d 1-d 2)g 0
m 3=(d 1-d 3)g 2
为了计算r 0=m 1+m 2+m 3,r 1=m 2-m 3-m 4,需要进行4次乘法和8次加法。与直接运算的6次乘法和4次加法相比,乘法次数减少,加法次数增加。在计算机中,乘法一般比加法慢,Winograd算法通过减少减法次数,增加少量加法,可以实现加速。
对于二维卷积计算,利用Winograd算法,卷积运算的结果Y可以表示为:
Y=A T((GgG T)□(B T dB))A
对于三维卷积计算,利用Winograd算法,卷积运算的结果Y可以表示为:
Y=(A T((GgG T) RG T□(B T dB) RB)A) RA
其中,R表示矩阵顺时针旋转90°。
利用Winograd算法,可以提高降低卷积计算过程中进行乘法运算的次数,降低低卷积计算的时间。但是,Winograd算法仅适用于步长为1的卷积计算,对于步长大于1的卷积计算不适用。
为了解决上述问题,本申请实施例提供的了一种计算方法。
图6是本申请实施例提供的一种数据处理方法的示意性流程图。数据处理方法600包括S610至S640。
在S610,获取第一输入数据、第一卷积核和步长s,所述第一输入数据和所述第一卷积核均为n个维度,n为1、2、3中的任一个,所述步长s为大于1的正整数。
第一输入数据和第一卷积核可以均为一维数据、二维数据或三维数据。
步长s表示对第一输入数据和第一卷积核进行卷积运算滑动卷积核时沿任意一个维度每次的步进长度。
在S620,根据所述第一输入数据,确定多个第二输入数据,每个第二输入数据包括 所述第一输入数据中的至少一个输入元素,在任一个所述第二输入数据中的所述至少一个输入元素中每个输入元素在所述第一输入数据中的第一坐标在第一维度的子坐标除以所述步长s得到的余数相等,所述第一维度为所述第一输入数据的n个维度的任一个维度。
第一输入数据包括多个输入元素。每个第二输入数据中包括至少一个输入元素。
每个输入元素在第一输入数据中的坐标为第一坐标。对于n个维度中的任一个维度,在同一个第二输入数据中,各个输入元素的第一坐标在该维度的子坐标除以步长s得到的余数相等。对于第二输入数据中的任一个输入元素,在不同维度下的子坐标除以步长s得到的余数可以相等或不同等。
在S630,根据所述第一卷积核,确定多个第二卷积核,每个第二卷积核包括所述第一卷积核中的至少一个卷积元素,在任一个所述第二卷积核中的每个卷积元素在所述第一卷积核中的第二坐标在所述第一维度的子坐标除以所述步长s得到的余数相等,所述多个第二卷积核中与所述多个第二输入数据一一对应,所述多个第二卷积核中每个第二卷积核中的所述卷积元素对应的所述第二余数与所述第二卷积核对应的第二输入数据中的所述输入元素对应的第一余数相等。
第一卷积核包括多个卷积元素。每个第二卷积核中包括至少一个卷积元素。
每个卷积元素在第一卷积核中的坐标为第二坐标。对于n个维度中的任一个维度,在同一个第二卷积核中,各个卷积元素的第二坐标在该维度的子坐标除以步长s得到的余数相等。对于第二卷积核中的任一个输入元素,在不同维度下的子坐标除以步长s得到的余数可以相等或不同等。
多个第二卷积核中的每个第二卷积核对应于至少一个所述第二输入数据,所述多个第二卷积核中每个第二卷积核中的所述卷积元素与所述第二卷积核对应的第二输入数据中的所述输入元素在所述n个维度中每个维度的坐标与所述步长s的余数分别相等。
以二维数据为例,一个第二输入数据中任一个输入元素ij在第一输入数据中的坐标为(x ij,y ij),与该第二输入数据对应的第二卷积核中任一个卷积元素kj在第一卷积核中的坐标为(x kj,y kj),则有x ij除以步长s的余数等于x kj除以步长s的余数,且y ij除以步长s的余数等于y kj除以步长s的余数。并且,x ij除以步长s的余数与y ij除以步长s的余数可以相等或不相等。
在S640,利用加速算法,对每个第二输入数据和所述第二输入数据对应的第二卷积核进行步长为1的卷积运算,以得到多个第一卷积运算数据的和,所述多个第一卷积运算数据的和用于表示所述第一输入数据与所述第一卷积核进行步长s的卷积运算结果。
加速算法例如可以是Winograd算法、稀疏FFT算法等。
通过S610至S640,对第一卷积核和第一输入数据进行转换,从而转换后的第二卷积核与第二输入数据进行步长为1的卷积运算的运算结果与第一卷积核和第一输入数据进行步长大于1的卷积运算的运算结果相同。步长为1的卷积运算在运算过程中可以利用加速算法加速,从而提高了运算效率。
该多个第二卷积核包括第一卷积核中所有的卷积元素,且多个第二卷积核可以不包括第一卷积核中相同的卷积元素。在该多个第二卷积核中,至少一个第二卷积核中的卷积元素为两个或两个以上。
在S620可以将第一输入数据划分为多个尺寸为s n的矩阵。尺寸为s n的矩阵在n个维 度的元素数量均为s。在划分后各个尺寸为s n的矩阵中位置相同的输入元素可以组成一个重排输入数据。在S630可以将第一卷积核也划分为多个尺寸为s n的矩阵。在划分后各个尺寸为s n的矩阵中位置相同的卷积元素可以组成一个重排卷积核。
示例性地,可以将每个重排输入数据作为一个第二输入数据,将每个重排卷积核作为一个第二卷结合,进行S640。
也就是说,该多个第二输入数据包括第一输入数据中所有的输入元素,且多个第二输入数据可以不包括相同的输入元素。
示例性地,在对卷积核大小存在限制的情况下,在S620之前,可以获取预设卷积核尺寸。预设卷积核尺寸为n个维度。在S630确定的多个第二卷积核的尺寸均为预设卷积核尺寸。
在S620,可以根据所述第一输入数据和每个第二卷积核中的所述卷积元素在所述第一卷积核中的位置,确定每个第二卷积核对应的所述第二输入数据。
在重排卷积核的尺寸大于预设卷积核尺寸的情况下,可以对重排卷积核进行划分,以得到多个第二卷积核。在重排卷积核中任一个维度的卷积元素的数量不是该维度下预设卷积核尺寸的整数倍的情况下,可以在重排卷积核沿该维度补充“0”,从而使得第二卷积核的尺寸为预设卷积核尺寸。
之后,可以根据各个第二卷积核中卷积元素在重排卷积核中的位置,确定该第二卷积核对应的第二输入数据。
对于n个维度中的第一维度,第一卷积核包括v个卷积元素,第一输入数据包括u个输入元素。如果第二卷积核中包括第一卷积核中第a个至第c个卷积元素范围内使得第一维度的子坐标除以s的余数为某一固定值的卷积元素,则该第二卷积核对应的第二输入数据包括该第二卷积核对应的第二输入数据中第a个至第u-(v-c)个输入元素范围内使得第一维度的子坐标除以s的余数为该固定值的的输入元素。
在对输入数据大小存在限制的情况下,可以获取预设输入数据尺寸。
在S640,在某个第二输入数据的大小超过预设输入数据尺寸的情况下,可以根据该第二输入数据对应的第二卷积核的尺寸和该第二输入数据,确定多个输入单元,每个输入单元的尺寸为预设输入数据尺寸,每个输入单元包括该第二输入数据中的至少一个输入元素。
示例性地,沿第一维度的第e个输入单元,包括第二卷积核对应的第二输入数据中第1+(e-1)×(m-s)个至1+(e-1)×(m-s)+m个输入元素,其中,m为第一维度的预设输入数据尺寸,e为正整数。使得1+(e-1)×(m-s)≤u<1+(e-1)×(m-s)+m成立的第e个输入单元为沿第一维度的最后一个输入单元。
图7是本申请实施例提供的一种数据处理算方法的示意图。图7和图8以第一输入数据和第一卷积核具有2个维度为例进行说明。
第一输入数据为u×u的二维数据,第一积核为v×v的二维数据。如图8所示,u=11,v=5,步长s为3。
可以按照3×3的形式即9宫格的形式,根据输入数据中各个元素在9宫格中的位置,对各个位置进行标记。
9宫格的第一行第一列与位于第一输入数据的第一行第一列的元素重合。之后,9宫 格可以每次在横向或纵向平移3的整数倍。第一输入数据中与9宫格第1行重合3个元素从左至右分别标记为i1至i3,与9宫格第2行重合3个元素从左至右分别标记为i4至i6,与9宫格第3行重合3个元素从左至右分别标记为i6至i9。
标记后的第一输入数据,如图7所示。从而,在标记后的第一输入数据中,标记相同的各个元素的横向坐标除以步长3得到的余数均相等,标记相同的各个元素的纵向坐标与除以步长3的余数均相等。
第一输入数据中标记相同的元素形成一个重排输入数据。在每个重排输入数据中横向相邻的两个元素在第一输入数据中的横向距离为s,在重排输入数据中纵向相邻的两个元素在第一输入数据中的纵向距离为s。
与对第一输入数据进行划分的方式类似,可以按照9宫格的形式,对第一卷积核中的各个元素进行标记。9宫格的第一行第一列与位于第一卷积核的第一行第一列的元素重合。9宫格可以每次在横向或纵向平移3的整数倍。第一卷积核中与9宫格第1行重合3个元素从左至右分别标记为k1至k3,与9宫格第2行重合3个元素从左至右分别标记为k4至k6,与9宫格第3行重合3个元素从左至右分别标记为k6至k9。标记后的第一卷积核如图7所示。在标记后的第一卷积核中,标记相同的各个元素的横向坐标除以步长3得到的余数均相等,标记相同的各个元素的纵向坐标与除以步长3的余数均相等。
第一卷积核中标记相同的元素形成一个重排卷积核。在重排卷积核中横向相邻的两个元素在第一卷积核中的横向距离为s,在重排卷积核中纵向相邻的两个元素在第一卷积核中的纵向距离为s。
对各个重排输入数据与该重排输入数据对应的重排卷积核进行步长为1的卷积运算,卷积运算结果的和,即为第一输入数据与第一卷积核进行步长为3的卷积运算结果。标记为ij的输入元素形成的重排输入数据对应的重排卷积核为标记为kj的卷积元素形成的重排卷积核,1≤j≤9且j为正整数。
在对各个重排输入数据与该重排输入数据对应的重排卷积核进行步长为1的卷积运算时,可以利用Winograd算法或其他算法进行加速。
在S640,可以对第三输入数据和第三卷积核进行步长为1的卷积运算。第三输入数据包括所述多个第二输入数据,第三卷积核包括所述多个第二卷积核。
具体地,在S640,可以将多个第二卷积核进行拼接,以得到第三卷积核。还可以并将多个第二输入数据进行拼接,以得到第三输入数据。之后,可以将拼接后得到的输入数据与拼接后得到的卷积核进行步长为1的卷积运算。
如图8所示,在对如图7所示的u×u的第一输入数据、v×v的第一卷积核进行标记之后,可以根据各个重排输入数据确定拼接后的输入数据。并且,可以根据各个重排卷积核确定拼接后的卷积核。
拼接后的输入数据包括各个重排输入数据,拼接后的输入数据的尺寸与第一输入数据的尺寸相同,均为u×u。可以按照各个重排输入数据中的输入元素的标记在9宫格中的位置,对各个重排输入数据进行排列,形成拼接后的输入数据。例如,在9宫格中,标记i1在标记i2的左侧,在拼接后的输入数据中,元素标记为i1的重排输入数据位于元素标记为i2的重排输入数据的左侧。或者,也可以按照其他顺序对重排输入数据进行排序,经过排序得到的拼接后的输入数据的尺寸为u×u即可。
对于u×u的第一输入数据、v×v的第一卷积核,进行步长为s的卷积后,得到的卷积结果的尺寸为((u-v)/s+1)×((u-v)/s+1)。拼接后的卷积核与拼接后的卷积核进行步长为1的卷积的运算结果相同,则拼接后的卷积核的尺寸为:(u-(u-v)/s)×(u-(u-v)/s)。
因此,对于11×11的第一输入数据、5×5的第一卷积核,进行步长为s的卷积,拼接后的卷积核的尺寸为9×9。在拼接后的卷积核中,每个重排卷积核与该重排卷积核对应的重排输入数据的位置相对应。
在拼接后的输入数据中,将每个重排输入数据对应的重排卷积核设置在该重排输入数据中的左上方,其他位置补“0”。之后,按照拼接后的卷积核的尺寸,保留左上方与拼接后的卷积核的尺寸相同的部分,即为拼接后的卷积核。因此,图8所示的拼接后的卷积核包括各个重排卷积核,拼接后的卷积核中空白处的元素的值为0。
对拼接后的输入数据与拼接后的卷积核进行补偿为1的卷积运算的卷积结果,与对第一输入数据与第一卷积核进行补偿为s的卷积运算的卷积结果相同。
之后,可以对拼接后的输入数据与拼接后的卷积核进行步长为1的卷积运算。
在拼接后的卷积核中,具有较多的“0”,与拼接后的输入数据进行卷积运算,可以理解为空洞卷积。可以利用FFT算法或其他加速算法进行加速,从而降低卷积运算的计算量,提高运算效率。
图9是本申请实施例提供的一种数据处理方法的示意流程图。数据处理方法900包括S910至S950。
在S910,获取第一输入数据、第一卷积核、预设卷积核尺寸,所述第一输入数据、所述第一卷积核、所述预设卷积核尺寸均为n个维度,n为1、2、3中的任一个,所述第一卷积核的尺寸大于所述预设卷积核尺寸。
第一输入数据和第一卷积核可以均为一维数据、二维数据或三维数据。
在S920,根据所述第一卷积核,确定多个第二卷积核,所述多个第二卷积核的尺寸为所述预设卷积核尺寸,每个所述第二卷积核包括所示第一卷积核中的至少一个卷积元素。
第一卷积核包括多个卷积元素。每个第二卷积核中包括至少一个卷积元素。
在S930,根据每个第二卷积核中的卷积元素在所述第一卷积核中的位置,确定每个第二卷积核对应的第二输入数据,每个第二输入数据包括所述第一输入数据中的至少一个元素。
在S940,对每个第二卷积核与所述第二卷积核对应的第二输入数据进行卷积运算,以得到多个第一卷积运算数据。
在S950,计算所述多个第一卷积运算数据的和,所述多个第一卷积运算数据的和用于表示所述第一输入数据与所述第一卷积核的卷积运算结果。
通过S910至S950,通过一种预设卷积核尺寸能够对多种尺寸的卷积核进行卷积运算,从而,计算卷积运算设备无需存储多种卷积核尺寸以及每个卷积核尺寸对应的运算算法,降低成本。
每个第二卷积核的尺寸为预设尺寸。
在一些实施例中,在S920可以根据预设尺寸对第一卷积核进行划分,每个划分后的区域对应一个第二卷积核。每个第二卷积核中的至少一个卷积元素的相对位置关系可以与 该至少一个卷积元素在第一卷积核中的相对位置关系相同。在某个划分后的区域中某个维度的卷积元素少于预设卷积核尺寸该维度的元素数量的情况下,可以在该划分后的区域中的该维度补“0”,从而得到对应于该划分后的区域的第二卷积核。具体地,可以参见图10的说明。
当然,在S920也可以在第一卷积核中选取在预设卷积核尺寸内的一个或多个卷积单元,形成一个第二就卷积核。形成的多个第二卷积核包括第一卷积核中的各个卷积元素,且第一卷积核中的各个卷积元素在第二卷积核中不重合。
第一卷积核在某个维度具有v个元素,第一输入数据在该维度具有u个数据。第二卷积核包括第一卷积核中某个维度中的第a个卷积元素,则在S930确定的第二卷积核对应的第二输入数据中,可以包括第一输入数据中第a个至第u-(v-a)个的输入元素。
之后,在S940,可以按照第一卷积核与第二卷积核进行卷积运算的步长,对每个第二卷积核与所述第二卷积核对应的第二输入数据进行卷积运算,以得到多个第一卷积运算数据。
在另一些实施例中,还可以获取步长s。
在S920确定的任一个第二卷积核中的每个卷积元素在所述第一卷积核中的第二坐标在第一维度的子坐标除以所述步长s得到的余数相等。第一维度为第一输入数据的n个维度的任一维度。
在S930确定的任一个第二输入数据的至少一个输入元素中每个输入元素在第一输入数据中的第一坐标在第一维度的子坐标除以步长s得到的余数相等。多个第二卷积核中每个第二卷积核中的卷积元素的第二坐标在第一维度的子坐标与步长s的余数与该第二卷积核对应的第二输入数据中的输入元素的第一坐标在第一维度的子坐标与步长s的余数相等。
也就是说,可以根据第一卷积核和步长s,确定第二卷积核。每个第二卷积核中的卷积元素的第二坐标与所述第二卷积核对应的第二输入数据中的输入元素的第一坐标在n个维度中每个维度的子坐标与所述步长s的余数分别相等。
之后,在S940,可以利用加速算法,对每个第二输入数据和所述第二输入数据对应的第二卷积核进行步长为1的卷积运算,得到多个第一卷积运算数据,该多个第一卷积运算数据的和用于表示所述第一输入数据与所述第一卷积核进行步长s的卷积运算结果。
通过将步长为s的卷积运算转换为步长为1的卷积运算,使得卷积运算可以利用加速算法进行加速,提高卷积运算的运算效率。
在输入数据尺寸受限的情况下,还可以获取预设输入数据尺寸。
在S940,可以在所述多个第二卷积核中第三卷积核对应的第二输入数据大于所述预设输入数据尺寸的情况下,根据所述第三卷积核的尺寸和所述第三卷积核对应的第二输入数据,确定多个输入单元,每个输入单元的尺寸为所述预设输入数据尺寸,每个输入单元包括所述第三卷积核对应的第二输入数据中的至少一个输入元素。
例如,预设输入数据尺寸在某个维度为m,第三卷积核对应的第e个输入单元中可以包括第三卷积核对应的第二输入数据中第1+(e-1)×(m-n+1)个至第(e-1)×(m-n+1)+m个输入元素。
示例性地,可以参见图11至图14的说明。
应当理解,在第一卷积核的尺寸小于预设卷积核尺寸的情况下,可以对第一卷积核进行填充(padding),即在第一卷积核的周围补充0,填充后的第一卷积核的尺寸为预设卷积核尺寸。
在第一输入数据的尺寸小于预设输入数据尺寸的情况下,可以对第一输入数据进行填充(padding),即在第一输入数据的周围补充0,填充后的第一输入数据的尺寸为预设输入数据尺寸。
可以利用填充后的第一卷积核、填充后的第一输入数据进行卷积运算。
图10是本申请实施例提供的一种数据处理算方法的示意图。
第一输入数据为u×u的二维数据,第一卷积核为v×v的二维数据,预设卷积核尺寸为n×n。第一输入数据与第一卷积核进行步长s=1的卷积,u=6,v=4,n=3第一卷积核的尺寸超过预设卷积核尺寸。
可以对所述第一卷积核进行划分,以得到多个第二卷积核。每个第二卷积核的尺寸为预设卷积核尺寸,即3×3。可以对第一输入数据和第一卷积核中的元素分别进行标记。第一输入数据中的元素可以标记为0-35,第一卷积核中的元素可以标记为0-15。
每个第二卷积核包括第一卷积核中的至少一个元素。在第二卷积包括多个元素的情况下,该多个元素在所述第二卷积核中的相对位置与该多个元素在第一卷积核中的相对位置相同。
例如,第一卷积核中前三行、前三列中的元素可以形成第一个第二卷积核。第一卷积核中前三行第四列的元素可以形成一个第二个第二卷积核。第一卷积核中前三列第四行的元素可以形成一个第三个第二卷积核。第一卷积核中第四列第四行的元素可以形成一个第四个第二卷积核。
在第二卷积核包括第一卷积核中的多个元素的情况下,该多个元素在第二卷积核中的相对位置与在第一卷积核中该多个元素的相对位置相同。在各个第二卷积核中,除第一卷积核的元素之外,其他的元素可以填充“0”。
在各个第二卷积核中除补充的0之外的元素不重复的情况下,每个第二卷积核可以包括尽可能多的元素,从而减少第二卷积核的数量。例如,可以从上至下(或从下至上)将4×4的第一卷积核按照预设卷积核尺寸行数进行划分,并可以从左至右(或从右至左)将4×4的第一卷积核按照预设卷积核尺寸列数进行划分。
可以将划分后的第一卷积核中每个部分的元素按照划分的方向设置在预设卷积核尺寸的矩阵中,以形成第二卷积核。
例如,按照预设卷积核尺寸行数从上至下对第一卷积核进行划分,则划分后的第一卷积核各个部分的元素设置在预设卷积核尺寸的矩阵中最上方的位置;反之,按照预设卷积核尺寸行数从下至上对第一卷积核进行划分,则划分后的第二卷积核各个部分的元素设置在预设卷积核尺寸的矩阵中最下方的位置。
按照预设卷积核尺寸列数从左至右对第一卷积核进行划分,则划分后的第一卷积核各个部分的元素设置在预设卷积核尺寸的矩阵中最左侧的位置,以得到多个第二卷积核;反之,按照预设卷积核尺寸列数从右至左对第一卷积核进行划分,则划分后的第一卷积核各个部分的元素设置在预设卷积核尺寸的矩阵中最右侧的位置。
可以根据每个第二卷积核中的元素在第一卷积核中的位置,确定每个第二卷积核对应 的第二输入数据,每个第二输入数据包括第一输入数据中的至少一个元素。
在第一输入数据与第一卷积核中进行卷积运算时,与第一卷积核中某个元素进行乘法运算的第一输入数据中的元素可以该某个元素在第一卷积核中的位置确定。例如,在第一输入数据与第一卷积核中按照滑窗的方式进行卷积运算时,第一卷积核中第a行第b列的元素分别与第一输入数据中以第a行第b列和第u-(v-a)行第u-(v-b)列为顶点的矩形区域中的元素进行乘法运算。
因此,可以根据每个第二卷积核中的元素在第一卷积核中的位置,确定每个第二卷积核对应的第二输入数据。
如果第二卷积核中包括第一卷积核中以第a行第b列和第c行第d列为顶点的矩形区域中的元素,c-a小于或等于n,d-b小于或等于n,a、b、c、d均为正整数且均小于或等于v,则该第二卷积核对应的第二输入数据包括第一输入数据中以第a行第b列和第u-(v-c)行第u-(v-d)列为顶点的矩形区域中的元素。
之后,可以对每个第二卷积核与所述第二卷积核对应的第二输入数据进行卷积运算,以得到多个第一卷积运算数据。
第一输入数据与第一卷积核的卷积运算结果是根据该多个第一卷积运算数据之和确定的。对于第一输入数据与第一卷积核进行步长为1的卷积运算,卷积运算结果为该多个第一卷积运算数据之和。
在仅能够对预设输入数据尺寸的输入数据、预设卷积核尺寸的卷积核进行卷积运算的情况下,如果第二输入数据的尺寸小于预设输入数据尺寸,可以将第二输入数据的除与第一输入数据相同的元素之外的元素设置“0”,从而使得第二输入数据满足预设输入数据尺寸。
如图10所示,在第二输入数据中,除与第一输入数据中相同的元素之外,其他元素的值均为“0”。
在第二输入数据中,与第一输入数据中相同的元素在第二输入数据中的位置可以根据第二卷积核中与第一卷积核相同的元素的位置确定。
例如,在第二卷积核中与第一卷积核相同的元素位于第二卷积核中最上方的位置时,与第一输入数据中相同的元素在第二输入数据中位于最上方的位置;反之,在第二卷积核中与第一卷积核相同的元素位于第二卷积核中最下方的位置时,与第一输入数据中相同的元素在第二输入数据中位于最下方的位置。
类似地,在第二卷积核中与第一卷积核相同的元素位于第二卷积核中最左侧的位置时,与第一输入数据中相同的元素在第二输入数据中位于最左侧的位置;反之,在第二卷积核中与第一卷积核相同的元素位于第二卷积核中最右侧的位置时,与第一输入数据中相同的元素在第二输入数据中位于最右侧的位置。
应当理解,在输入数据的尺寸不变的情况下,如果卷积核的尺寸减小之后,则输出数据的尺寸增加。
可以并按照第一输入数据与第一卷积核的卷积运算结果的尺寸,根据第二卷积核中与第一卷积核相同的元素在第二卷积核中的位置,以及第一卷积运算数据之和,确定第一输入数据与第一卷积核的卷积运算结果。
例如,第二卷积核中与第一卷积核相同的元素在第二卷积核中最左侧的位置,则第一 输入数据与第一卷积核的卷积运算结果位于第一卷积运算数据之和中最左侧;反之,第二卷积核中与第一卷积核相同的元素在第二卷积核中最右侧的位置,则第一输入数据与第一卷积核的卷积运算结果位于第一卷积运算数据之和中最右侧。
类似地,第二卷积核中与第一卷积核相同的元素在第二卷积核中最上方的位置,则第一输入数据与第一卷积核的卷积运算结果位于第一卷积运算数据之和中最上方;反之,第二卷积核中与第一卷积核相同的元素在第二卷积核中最下方的位置,则第一输入数据与第一卷积核的卷积运算结果位于第一卷积运算数据之和中最下方。
在仅能够对预设输入数据尺寸的输入数据、预设卷积核尺寸的卷积核进行卷积运算的情况下,如果第二输入数据的尺寸大于预设输入数据尺寸,可以对第二输入数据进行拆分,以使得拆分后的第二输入数据满足预设输入数据尺寸的要求。具体地,可以参见图11的说明。
图11至图14是本申请实施例提供的一种卷积运算的示意图。
第一输入数据为u×u的二维数据,第一卷积核为v×v的二维数据,u=17,v=7,步长s=2。
预设输入数据尺寸为m×m,预设卷积核尺寸为n×n,m=6,n=3。
可以对第一输入数据、第一卷积核进行调整。
在对第一输入数据与第一卷积核进行步长s的卷积运算过程中,采用滑窗的方式,第一卷积核中第一维度的第x个元素分别与第一输入数据中第一维度的第x+qs个元素相乘,其中q为整数,且 其中, 为上取整函数。 的值为大于或等于 的最小整数。
的情况下,可以按照图6至图8中任一个所示的方式对第一输入数据、第一卷积核进行调整,以确定第一输入数据与第一卷积核进行步长s的卷积运算的运算结果。
的情况下,可以按照图11至图14所示的方式对第一输入数据、第一卷积核进行调整,以确定第一输入数据与第一卷积核进行步长s的卷积运算的运算结果。
的情况下,对于二维数据,可以根据第一卷积核,确定多个第二卷积核,第二卷积核的尺寸均为预设卷积核尺寸为n×n。
例如,可以先按照s×s的尺寸,对第一卷积核中的卷积元素进行标记。也就是说,可以从上至下按照行数s,从左至右按照列数s对第一卷积核进行划分。在划分后的第一卷积核中,每个区域中不同的卷积元素可以具有不同的卷积标记;在不同的区域中,横向坐标除以s的余数相等,且纵向坐标除以s的余数相等的卷积元素具有相同的标记。
在第一卷积核中,如果具有某个相同标记的卷积元素的形成的矩阵的尺寸超过n×n,则可以对具有该相同标记的卷积元素形成的矩阵进行划分,以确定多个第二卷积核。第二卷积核的尺寸为n×n。
如图11所示,第一卷积核中,奇数行奇数列的卷积元素具有相同标记i1(即图11的第一卷积核中不同阴影表示的卷积元素的标记均为i1),且具有该标记i1的卷积元素的 数量大于预设卷积核尺寸3×3,可以按照预设卷积核尺寸3×3将奇数行奇数列的卷积元素划分为4个卷积核。在第一卷积核中位于第1、3、5行中的任一行、第1、3、5列中的任一列的卷积元素形成第一个第二卷积核,在第一卷积核中位于第1、3、5行中的任一行、第7列的卷积元素形成第二个第二卷积核,在第一卷积核中位于第7行、第1、3、5列中的任一列的卷积元素形成第三个第二卷积核,在第一卷积核中位于第7行、第7列的卷积元素形成第四个第二卷积核。
之后,可以确定各个第二卷积核对应第二输入数据。各个第二卷积核与第二输入数据进行步长为1的卷积得到的第一卷积运算数据之和,可以用于表示第一输入数据与第一卷积核进行步长为s的卷积运算的结果。
第二卷积核包括第一卷积核中以第a行第b列的卷积元素,则第二卷积核对应的第二输入数据中包括第一输入数据中以第a行第b列和第u-(v-a)行第u-(v-b)列为顶点的矩形区域中的输入元素。
第二卷积核中包括第一卷积核中以第a行第b列和第c行第d列为顶点的矩形区域中的元素,c-a小于或等于n,d-b小于或等于n,a、b、c、d均为正整数且均小于或等于v,则该第二卷积核对应的第二输入数据包括第一输入数据中以第a行第b列和第u-(v-c)行第u-(v-d)列为顶点的矩形区域中的元素。
第一个第二卷积核对应的第二输入数据可以根据第一个第二卷积核中各个卷积元素在第一卷积核中的位置确定。第一个第二卷积核中的卷积元素为第一卷积核中以第1行第1列和第n行第n列为顶点的矩形中位于奇数行奇数列的卷积元素。第一个第二卷积核对应的第二输入单元包括第一输入单元中以第1行第1列和第u-(v-5)行第u-(v-5)列为顶点的矩形区域中奇数行奇数列的输入元素,即第一个第二卷积核对应的第二输入数据包括图11中第一输入数据中阴影表示的输入元素。
第一个第二卷积核对应的第二输入数据的尺寸大于预设输入数据尺寸为m×m,m=6,可以将第一个第二卷积核对应的第二输入数据划分为多个输入单元,每个输入单元的尺寸为预设输入数据尺寸。
可以根据第一个第二卷积核的尺寸,确定第一个第二卷积核对应的多个输入单元。第(e,f)个输入单元包括第一个第二卷积核对应的第二输入数据中位于第1+(e-1)×(m-n+1)行至第(e-1)×(m-n+1)+m行且位于第1+(f-1)×(m-n+1)列至第(f-1)×(m-n+1)+m列的输入元素,e、f均为正整数,且1+(e-1)×(m-n+1)≤u、1+(f-1)×(m-n+1)≤u。
在1+(e-1)×(m-n+1)≤u<1+(e-1)×(m-n+1)+m和/或1+(f-1)×(m-n+1)≤u<1+(f-1)×(m-n+1)+m的情况下,输入单元中除输入元素之外的元素为0。
如图12所示,第一个第二卷积核对应的多个输入单元中,第一个输入单元包括第一个第二卷积核对应的第二输入数据中第1至6行、第1至6列(即第一输入数据中第1-11行、第1-11列中奇数行奇数列)的输入元素,第二个输入单元包括第一个第二卷积核对应的第二输入数据中第1至6行、第5至8列(即第一输入数据中第1-11行、第12-17列中奇数行奇数列)的输入元素,第三个输入单元包括第一个第二卷积核对应的第二输入数据中第5至8行、第1至6列(即第一输入数据中第12-17行、第1-11列中奇数行奇数列)的输入元素,第四个输入单元包括第一个第二卷积核对应的第二输入数据中第5至8行、第5至8列(即第一输入数据中第12-17行、第12-17列中奇数行奇数列)的输入元 素。
之后,对第一个第二卷积核与第一个第二卷积核对应的多个输入单元分别进行步长为1的卷积运算,并对卷积运算结果按照多个输入单元中输入元素在第一个第二卷积核对应的第二输入数据数据中的位置关系进行拼接。
也可以理解为,按照多个输入单元中输入元素在第一输入数据的位置关系对卷积运算结果进行拼接。
如图13所示,在第一输入数据中,第1、3、5、7列数据位于第13、15列数据的左侧,则第一输入单元对应的卷积运算结果位于第二输入单元对应的卷积运算结果的左侧。在第一输入数据中,第1、3、5、7行数据位于第13、15行数据的上方,则第一输入单元对应的卷积运算结果位于第三输入单元对应的卷积运算结果的上方。
图11中所示的标记为i1的输入数据形成的其他第二卷积核,对应的第二输入数据均大于预设输入数据尺寸。如图13所示,第二个第二卷积核对应的第二输入数据包括第一输入数据中第1至第17行、第7至第17列中奇数行奇数列的输入元素。如图14所示,第四个第二卷积核对应的第二输入数据包括第一输入数据中第7至第17行、第7至第17列中奇数行奇数列的输入元素。
对于每个第二卷积核,可以对该第二卷积核对应的第二输入数据进行划分,得到对应于该第二卷积核的多个输入单元,每个输入单元的尺寸为预设输入数据尺寸。
在第二卷积核对应的第二输入数据的尺寸大于预设输入数据尺寸,可以将该第二卷积核对应的第二输入数据划分为多个输入单元,每个输入单元的尺寸为预设输入数据尺寸。
在图13、示出了第二个第二卷积核对应的各个输入单元中的输入元素在第一输入数据中的位置,图4示出了第四个第二卷积核对应的各个输入单元中的输入元素在第一输入数据中的位置。
之后,对每个第二卷积核与该第二卷积核对应的多个输入单元分别进行卷积运算,并对卷积运算结果按照多个输入单元中输入元素在该第二卷积核对应的第二输入数据中的位置关系进行拼接。
在图11所示的第一卷积核中,奇数行偶数列的卷积元素具有相同标记i2,偶数行奇数列的卷积元素具有相同标记i3,偶数行偶数列的卷积元素具有相同标记i4。
具有标记i2的卷积元素的卷积元素的形成的矩阵的尺寸不超过n×n,具有标记i2的卷积元素的卷积元素的形成的矩阵可以作为一个第二卷积核。类似的,具有标记i4的卷积元素的卷积元素的形成的矩阵的尺寸也不超过n×n,具有标记i4的卷积元素的卷积元素的形成的矩阵可以作为另一个第二卷积核。
具有标记i3的卷积元素的卷积元素的形成的矩阵的尺寸超过n×n,可以按照预设卷积核尺寸n×n将具有标记i3的卷积元素的卷积元素的形成的矩阵划分为多个第二卷积核。
根据标记i2至标记i4的卷积元素得到的多个第二卷积核对应的第二输入数据均大于预设输入数据尺寸m×m。可以将每个第二卷积核对应的第二输入数据划分为多个输入单元,每个输入单元的尺寸为预设输入数据尺寸。
之后,对第二卷积核与该第二卷积核对应的多个输入单元分别进行步长为1的卷积运算,并对卷积运算结果按照多个输入单元中输入元素在第一个第二卷积核对应的第二输入 数据数据中的位置关系进行拼接。
对于各个第二卷积核对应的拼接后的卷积运算结果,可以进行累加运算。各个第二卷积核对应的拼接后的卷积运算结果之和,可以用于表示第一输入数据与第一卷积核进行步长为s的卷积运算的结果。
利用图11至图14所示的数据处理方法对第一卷积核(u×u)与第一输入数据(v×v)进行卷积运算,所需的运算复杂度C(D u×u,K v×v,s)可以表示为:
(s-r) 2×C(D u×u,K q×q,1)+r 2×C×(D u×u,K (q+1)×(q+1),1)
+(s-r)×r×(C(D u×u,K q×(q+1),1)+C(D u×u,K (q+1)×q,1))
其中,D u×u表示输入数据的尺寸为u×u,K v×v表示卷积核的尺寸为v×v,v=q×s+r,q=[v/s],即q为对v除以s的计算结果取整得到的,r=v%s,即r为v除以s得到的余数。
利用最小滤波算法(minimal filtering algorithm)进行卷积运算,一维的卷积运算所需的乘法数量可以表示为:
μ{C(D m,K n,s)}=s×(m-1)+n
二维的卷积运算所需的乘法数量可以表示为:
μ{C(D m×m,K n×n,s)}=(s×(m-1)+n) 2
三维的卷积运算所需的乘法数量可以表示为:
μ{C(D m×m×m,K n×n×n,s)}=(s×(m-1)+n) 3
其中,μ{}表示最小的乘法计算的次数。
现有的硅芯片的计算机大部分是基于冯诺依曼架构进行计算的。在该架构下,运算中乘法计算的次数能很大程度反应该运算的复杂度。
从而,利用图11至图14所示的数据处理方法进行卷积运算,一维卷积运算的运算复杂度可以表示为:
二维的卷积运算的运算复杂度可以表示为:
三维的卷积运算的运算复杂度可以表示为:
通过图11至图14所示的数据处理方法,能够在提高运算效率,降低运算时间的同时,降低进行卷积运算的设备中存储的预设卷积核尺寸、预设输入数据尺寸的数量,降低对存储空间的占用。
在CNN的训练和推理、利用有限长单位冲激响应滤波器(finite impulse response,FIR)等滤波器的信号处理、利用椭圆曲线如Curve25519等算法的数据加密或解密(素数域)、利用正交频分复用(orthogonal frequency division multiplexing,OFDM)技术的通信等过程中,需要进行卷积运算。可以利用本申请实施例提供的数据处理方法进行卷积运算。
在进行卷积运算的过程中,可以基于多端口随机存取存储器(multi-ported RAM)并行化对相对应的第二卷积核和第二输入单元的卷积运算进行处理,提高计算效率。
在利用Winograd算法进行加速的情况下,可以利用具有稀疏化脉动阵列(systolic tensor array)矩阵乘法单元(multiplicator block)实现矩阵乘法,如图15所示。
矩阵乘法单元可以具有稀疏化处理机制。如图16所示的乘积累加运算(multiple multiply accumulate,MAC)单元可以用于进行卷积运算。在MAC单元中,并行的乘法运算结果进行汇聚(accumulate,ACC),数据选择器(multiplexer,MUX)用于进行数据选择,在汇聚后的数值中选择出不为0的数值。之后,可以对MUX输出的不为0的数值进行累加运算。在一些实施例中,在某个乘数为0的情况下,也可以不进行乘法运算,将0输出至ACC。
图17是本申请实施例提供的一种数据处理装置的示意性结构图。
数据处理装置2000包括获取模块2010和处理模块2020。
在一些实施例中,获取模块2010用于,获取第一输入数据、第一卷积核和步长s,所述第一输入数据和所述第一卷积核均为n个维度,n为1、2、3中的任一个,所述步长s为大于1的正整数。
处理模块2020用于,根据所述第一输入数据,确定多个第二输入数据,每个第二输入数据包括所述第一输入数据中的至少一个输入元素,在任一个所述第二输入数据中的所述至少一个输入元素中每个输入元素在所述第一输入数据中的第一坐标在第一维度的子坐标除以所述步长s得到的第一余数相等,所述第一维度为所述n个维度的任一个维度。
处理模块2020还用于,根据所述第一卷积核,确定多个第二卷积核,每个第二卷积核包括所述第一卷积核中的至少一个卷积元素,在任一个所述第二卷积核中的每个卷积元素在所述第一卷积核中的第二坐标在所述第一维度的子坐标除以所述步长s得到的第二余数相等,所述多个第二卷积核与所述多个第二输入数据一一对应,所述多个第二卷积核中每个第二卷积核中的所述卷积元素对应的所述第二余数与所述第二卷积核对应的第二输入数据中的所述输入元素对应的所述第一余数相等。
处理模块2020还用于,利用加速算法,对每个第二输入数据和所述第二输入数据对应的第二卷积核进行步长为1的卷积运算,以得到多个第一卷积运算数据的和,所述多个 第一卷积运算数据的和用于表示所述第一输入数据与所述第一卷积核进行所述步长s的卷积运算结果。
可选地,处理模块2020还用于,对第三输入数据和第三卷积核进行步长为1的卷积运算,所述第三输入数据包括所述多个第二输入数据,所述第三卷积核包括所述多个第二卷积核。
可选地,获取模块2010还用于,获取预设卷积核尺寸,所述预设卷积核尺寸为n个维度,所述多个第二卷积核的尺寸为所述预设卷积核尺寸。
处理模块2020还用于,所述根据所述第一输入数据,确定多个第二输入数据,包括:根据所述第一输入数据和每个第二卷积核中的所述卷积元素在所述第一卷积核中的位置,确定每个第二卷积核对应的所述第二输入数据。
可选地,获取模块2010还用于,获取预设输入数据尺寸。
处理模块2020还用于,在所述多个第二卷积核中第四卷积核对应的第二输入数据大于所述预设输入数据尺寸的情况下,根据所述第四卷积核的尺寸和所述第四卷积核对应的第二输入数据,确定多个输入单元,每个输入单元的尺寸为所述预设输入数据尺寸,每个输入单元包括所述第四卷积核对应的第二输入数据中的至少一个输入元素。
处理模块2020还用于,对所述第四卷积核与所述多个输入单元分别进行卷积运算,以得到每个输入单元对应的第二卷积运算数据。
所述多个输入单元对应的第二卷积运算数据的拼接结果用于表示所述第四卷积核对应的所述第一卷积运算数据。
在另一些实施例中,获取模块2010用于,获取第一输入数据、第一卷积核、预设卷积核尺寸,所述第一输入数据、所述第一卷积核、所述预设卷积核尺寸均为n个维度,n为1、2、3中的任一个,所述第一卷积核的尺寸大于所述预设卷积核尺寸。
处理模块2020用于,根据所述第一卷积核,确定多个第二卷积核,所述多个第二卷积核的尺寸为所述预设卷积核尺寸,每个所述第二卷积核包括所示第一卷积核中的至少一个卷积元素。
处理模块2020还用于,根据每个第二卷积核中的卷积元素在所述第一卷积核中的位置,确定每个第二卷积核对应的第二输入数据,每个第二输入数据包括所述第一输入数据中的至少一个输入元素。
处理模块2020还用于,对每个第二卷积核与所述第二卷积核对应的第二输入数据进行卷积运算,以得到多个第一卷积运算数据,所述多个第一卷积运算数据的和用于表示所述第一输入数据与所述第一卷积核的卷积运算结果。
可选地,获取模块2010还用于,获取步长s,所述步长s为大于1的正整数,
在任一个所述第二卷积核中的每个卷积元素在所述第一卷积核中的第二坐标在第一维度的子坐标除以所述步长s得到的第二余数相等,所述第一维度为所述n个维度的任一个维度。
在任一个所述第二输入数据中的所述至少一个输入元素每个输入元素在所述第一输入数据中的第一坐标在第一维度的子坐标除以所述步长s得到的第二余数相等,所述多个第二卷积核中每个第二卷积核中的所述卷积元素对应的第二余数与所述第二卷积核对应的第二输入数据中的所述输入元素对应的第一余数相等。
处理模块2020还用于,利用加速算法,对每个第二输入数据和所述第二输入数据对应的第二卷积核进行步长为1的卷积运算,所述多个第一卷积运算数据的和用于表示所述第一输入数据与所述第一卷积核进行步长s的卷积运算结果。
可选地,获取模块2010还用于,获取预设输入数据尺寸。
处理模块2020还用于,在所述多个第二卷积核中第三卷积核对应的第二输入数据大于所述预设输入数据尺寸的情况下,根据所述第三卷积核的尺寸和所述第三卷积核对应的第二输入数据,确定多个输入单元,每个输入单元的尺寸为所述预设输入数据尺寸,每个输入单元包括所述第三卷积核对应的第二输入数据中的至少一个输入元素。
处理模块2020还用于,对所述第三卷积核与所述多个输入单元分别进行卷积运算,以得到每个输入单元对应的第二卷积运算数据。
所述多个输入单元对应的第二卷积运算数据的拼接结果用于表示所述第三卷积核对应的所述第一卷积运算数据。
图18是本申请一个实施例提供的数据处理装置3000的示意性结构图。数据处理装置3000可包括:存储器3010和至少一个处理器3020。存储器3010用于存储程序指令。处理器3020用于执行该程序指令,以实现前文中的数据处理装置执行的各个步骤或方法或操作或功能。
在一些实施例中,处理器3020用于,获取第一输入数据、第一卷积核和步长s,所述第一输入数据和所述第一卷积核均为n个维度,n为1、2、3中的任一个,所述步长s为大于1的正整数。
处理器3020还用于,根据所述第一输入数据,确定多个第二输入数据,每个第二输入数据包括所述第一输入数据中的至少一个输入元素,在任一个所述第二输入数据中的所述至少一个输入元素中每个输入元素在所述第一输入数据中的第一坐标在第一维度的子坐标除以所述步长s得到的第一余数相等,所述第一维度为所述n个维度的任一个维度。
处理器3020还用于,根据所述第一卷积核,确定多个第二卷积核,每个第二卷积核包括所述第一卷积核中的至少一个卷积元素,在任一个所述第二卷积核中的每个卷积元素在所述第一卷积核中的第二坐标在所述第一维度的子坐标除以所述步长s得到的第二余数相等,所述多个第二卷积核与所述多个第二输入数据一一对应,所述多个第二卷积核中每个第二卷积核中的所述卷积元素对应的所述第二余数与所述第二卷积核对应的第二输入数据中的所述输入元素对应的所述第一余数相等。
处理器3020还用于,利用加速算法,对每个第二输入数据和所述第二输入数据对应的第二卷积核进行步长为1的卷积运算,以得到多个第一卷积运算数据的和,所述多个第一卷积运算数据的和用于表示所述第一输入数据与所述第一卷积核进行所述步长s的卷积运算结果。
可选地,处理器3020还用于,对第三输入数据和第三卷积核进行步长为1的卷积运算,所述第三输入数据包括所述多个第二输入数据,所述第三卷积核包括所述多个第二卷积核。
可选地,处理器3020还用于,获取预设卷积核尺寸,所述预设卷积核尺寸为n个维度,所述多个第二卷积核的尺寸为所述预设卷积核尺寸。
处理器3020还用于,所述根据所述第一输入数据,确定多个第二输入数据,包括: 根据所述第一输入数据和每个第二卷积核中的所述卷积元素在所述第一卷积核中的位置,确定每个第二卷积核对应的所述第二输入数据。
可选地,处理器3020还用于,获取预设输入数据尺寸。
处理器3020还用于,在所述多个第二卷积核中第四卷积核对应的第二输入数据大于所述预设输入数据尺寸的情况下,根据所述第四卷积核的尺寸和所述第四卷积核对应的第二输入数据,确定多个输入单元,每个输入单元的尺寸为所述预设输入数据尺寸,每个输入单元包括所述第四卷积核对应的第二输入数据中的至少一个输入元素。
处理器3020还用于,对所述第四卷积核与所述多个输入单元分别进行卷积运算,以得到每个输入单元对应的第二卷积运算数据。
所述多个输入单元对应的第二卷积运算数据的拼接结果用于表示所述第四卷积核对应的所述第一卷积运算数据。
在另一些实施例中,处理器3020用于,获取第一输入数据、第一卷积核、预设卷积核尺寸,所述第一输入数据、所述第一卷积核、所述预设卷积核尺寸均为n个维度,n为1、2、3中的任一个,所述第一卷积核的尺寸大于所述预设卷积核尺寸。
处理器3020还用于,根据所述第一卷积核,确定多个第二卷积核,所述多个第二卷积核的尺寸为所述预设卷积核尺寸,每个所述第二卷积核包括所示第一卷积核中的至少一个卷积元素。
处理器3020还用于,根据每个第二卷积核中的卷积元素在所述第一卷积核中的位置,确定每个第二卷积核对应的第二输入数据,每个第二输入数据包括所述第一输入数据中的至少一个输入元素。
处理器3020还用于,对每个第二卷积核与所述第二卷积核对应的第二输入数据进行卷积运算,以得到多个第一卷积运算数据,所述多个第一卷积运算数据的和用于表示所述第一输入数据与所述第一卷积核的卷积运算结果。
可选地,处理器3020还用于,获取步长s,所述步长s为大于1的正整数,
在任一个所述第二卷积核中的每个卷积元素在所述第一卷积核中的第二坐标在第一维度的子坐标除以所述步长s得到的第二余数相等,所述第一维度为所述n个维度的任一个维度。
在任一个所述第二输入数据中的所述至少一个输入元素每个输入元素在所述第一输入数据中的第一坐标在第一维度的子坐标除以所述步长s得到的第二余数相等,所述多个第二卷积核中每个第二卷积核中的所述卷积元素对应的第二余数与所述第二卷积核对应的第二输入数据中的所述输入元素对应的第一余数相等。
处理器3020还用于,利用加速算法,对每个第二输入数据和所述第二输入数据对应的第二卷积核进行步长为1的卷积运算,所述多个第一卷积运算数据的和用于表示所述第一输入数据与所述第一卷积核进行步长s的卷积运算结果。
可选地,处理器3020还用于,获取预设输入数据尺寸。
处理器3020还用于,在所述多个第二卷积核中第三卷积核对应的第二输入数据大于所述预设输入数据尺寸的情况下,根据所述第三卷积核的尺寸和所述第三卷积核对应的第二输入数据,确定多个输入单元,每个输入单元的尺寸为所述预设输入数据尺寸,每个输入单元包括所述第三卷积核对应的第二输入数据中的至少一个输入元素。
处理器3020还用于,对所述第三卷积核与所述多个输入单元分别进行卷积运算,以得到每个输入单元对应的第二卷积运算数据。
所述多个输入单元对应的第二卷积运算数据的拼接结果用于表示所述第三卷积核对应的所述第一卷积运算数据。
在本申请实施例中,处理器是一种具有信号的处理能力的电路,在一种实现中,处理器可以是具有指令读取与运行能力的电路,例如中央处理单元(Central Processing Unit,CPU)、微处理器、图形处理器(graphics processing unit,GPU)(可以理解为一种微处理器)、或数字信号处理器(digital singnal processor,DSP)等;在另一种实现中,处理器可以通过硬件电路的逻辑关系实现一定功能,该硬件电路的逻辑关系是固定的或可以重构的,例如处理器为专用集成电路(application-specific integrated circuit,ASIC)或可编程逻辑器件(programmable logic device,PLD)实现的硬件电路,例如FPGA。在可重构的硬件电路中,处理器加载配置文档,实现硬件电路配置的过程,可以理解为处理器加载指令,以实现以上部分或全部单元的功能的过程。此外,还可以是针对人工智能设计的硬件电路,其可以理解为一种ASIC,例如神经网络处理单元(Neural Network Processing Unit,NPU)张量处理单元(Tensor Processing Unit,TPU)、深度学习处理单元(Deep learning Processing Unit,DPU)等。
可见,以上装置中的各单元可以是被配置成实施以上方法的一个或多个处理器(或处理电路),例如:CPU、GPU、NPU、TPU、DPU、微处理器、DSP、ASIC、FPGA,或这些处理器形式中至少两种的组合。
此外,以上装置中的各单元可以全部或部分可以集成在一起,或者可以独立实现。在一种实现中,这些单元集成在一起,以片上***(system-on-a-chip,SOC)的形式实现。该SOC中可以包括至少一个处理器,用于实现以上任一种方法或实现该装置各单元的功能,该至少一个处理器的种类可以不同,例如包括CPU和FPGA,CPU和人工智能处理器,CPU和GPU等。
本申请实施例还提供一种终端设备,其包括前述的数据处理装置。
本申请实施例还提供一种计算机程序存储介质,其特征在于,所述计算机程序存储介质具有程序指令,当所述程序指令被执行时,使得前文中的方法被执行。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括程序指令,当所述程序指令在计算机设备中被执行时,使得前文的数据处理方法被执行。
本申请实施例还提供一种芯片***,其特征在于,所述芯片***包括至少一个处理器,当程序指令在所述至少一个处理器中执行时,使得前文中的方法被执行。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示单独存在A、同时存在A和B、单独存在B的情况。其中A,B可以是单数或者复数。 字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项”及其类似表达,是指的这些项中的任意组合,包括单项或复数项的任意组合。例如,a,b和c中的至少一项可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例中采用诸如“第一”、“第二”的前缀词,仅仅为了区分不同的描述对象,对被描述对象的位置、顺序、优先级、数量或内容等没有限定作用。例如,被描述对象为“输入数据”,则“第一输入数据”和“第二输入数据”中“输入数据”之前的序数词并不限制“输入数据”之间的位置或顺序或优先级;再如,被描述对象为“卷积核”,则“第一卷积核”和“第二卷积核”中“卷积核”之前的序数词并不限制“卷积核”之间的位置或顺序或优先级。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (18)

  1. 一种数据处理方法,其特征在于,包括:
    获取第一输入数据、第一卷积核和步长s,所述第一输入数据和所述第一卷积核均为n个维度,n为1、2、3中的任一个,所述步长s为大于1的正整数;
    根据所述第一输入数据,确定多个第二输入数据,每个第二输入数据包括所述第一输入数据中的至少一个输入元素,在任一个所述第二输入数据中的所述至少一个输入元素中每个输入元素在所述第一输入数据中的第一坐标在第一维度的子坐标除以所述步长s得到的第一余数相等,所述第一维度为所述n个维度的任一个维度;
    根据所述第一卷积核,确定多个第二卷积核,每个第二卷积核包括所述第一卷积核中的至少一个卷积元素,在任一个所述第二卷积核中的每个卷积元素在所述第一卷积核中的第二坐标在所述第一维度的子坐标除以所述步长s得到的第二余数相等,所述多个第二卷积核与所述多个第二输入数据一一对应,所述多个第二卷积核中每个第二卷积核中的所述卷积元素对应的所述第二余数与所述第二卷积核对应的第二输入数据中的所述输入元素对应的所述第一余数相等;
    利用加速算法,对每个第二输入数据和所述第二输入数据对应的第二卷积核进行步长为1的卷积运算,以得到多个第一卷积运算数据的和,所述多个第一卷积运算数据的和用于表示所述第一输入数据与所述第一卷积核进行所述步长s的卷积运算结果。
  2. 根据权利要求1所述的方法,其特征在于,所述利用加速算法,对每个第二输入数据和所述第二输入数据对应的第二卷积核进行步长为1的卷积运算,包括:
    对第三输入数据和第三卷积核进行步长为1的卷积运算,所述第三输入数据包括所述多个第二输入数据,所述第三卷积核包括所述多个第二卷积核。
  3. 根据权利要求1所述的方法,其特征在于,所述方法还包括:
    获取预设卷积核尺寸,所述预设卷积核尺寸为n个维度,所述多个第二卷积核的尺寸为所述预设卷积核尺寸;
    所述根据所述第一输入数据,确定多个第二输入数据,包括:根据所述第一输入数据和每个第二卷积核中的所述卷积元素在所述第一卷积核中的位置,确定每个第二卷积核对应的所述第二输入数据。
  4. 根据权利要求1或3所述的方法,其特征在于,
    所述方法还包括:获取预设输入数据尺寸;
    所述对每个第二卷积核与所述第二卷积核对应的第二输入数据进行卷积运算,包括:
    在所述多个第二卷积核中第四卷积核对应的第二输入数据大于所述预设输入数据尺寸的情况下,根据所述第四卷积核的尺寸和所述第四卷积核对应的第二输入数据,确定多个输入单元,每个输入单元的尺寸为所述预设输入数据尺寸,每个输入单元包括所述第四卷积核对应的第二输入数据中的至少一个输入元素;
    对所述第四卷积核与所述多个输入单元分别进行卷积运算,以得到每个输入单元对应的第二卷积运算数据;
    所述多个输入单元对应的第二卷积运算数据的拼接结果用于表示所述第四卷积核对 应的所述第一卷积运算数据。
  5. 一种数据处理方法,其特征在于,包括:
    获取第一输入数据、第一卷积核、预设卷积核尺寸,所述第一输入数据、所述第一卷积核、所述预设卷积核尺寸均为n个维度,n为1、2、3中的任一个,所述第一卷积核的尺寸大于所述预设卷积核尺寸;
    根据所述第一卷积核,确定多个第二卷积核,所述多个第二卷积核的尺寸为所述预设卷积核尺寸,每个所述第二卷积核包括所示第一卷积核中的至少一个卷积元素;
    根据每个第二卷积核中的卷积元素在所述第一卷积核中的位置,确定每个第二卷积核对应的第二输入数据,每个第二输入数据包括所述第一输入数据中的至少一个输入元素;
    对每个第二卷积核与所述第二卷积核对应的第二输入数据进行卷积运算,以得到多个第一卷积运算数据;
    计算所述多个第一卷积运算数据的和,所述多个第一卷积运算数据的和用于表示所述第一输入数据与所述第一卷积核的卷积运算结果。
  6. 根据权利要求5所述的方法,其特征在于,所述方法还包括:
    获取步长s,所述步长s为大于1的正整数;
    在任一个所述第二卷积核中的每个卷积元素在所述第一卷积核中的第二坐标在第一维度的子坐标除以所述步长s得到的第二余数相等,所述第一维度为所述n个维度的任一个维度;
    在任一个所述第二输入数据中的所述至少一个输入元素每个输入元素在所述第一输入数据中的第一坐标在第一维度的子坐标除以所述步长s得到的第二余数相等,所述多个第二卷积核中每个第二卷积核中的所述卷积元素对应的第二余数与所述第二卷积核对应的第二输入数据中的所述输入元素对应的第一余数相等;
    所述对每个第二卷积核与所述第二卷积核对应的第二输入数据进行卷积运算,包括:
    利用加速算法,对每个第二输入数据和所述第二输入数据对应的第二卷积核进行步长为1的卷积运算,所述多个第一卷积运算数据的和用于表示所述第一输入数据与所述第一卷积核进行步长s的卷积运算结果。
  7. 根据权利要求5或6所述的方法,其特征在于,
    所述方法还包括:获取预设输入数据尺寸;
    所述对每个第二卷积核与所述第二卷积核对应的第二输入数据进行卷积运算,包括:
    在所述多个第二卷积核中第三卷积核对应的第二输入数据大于所述预设输入数据尺寸的情况下,根据所述第三卷积核的尺寸和所述第三卷积核对应的第二输入数据,确定多个输入单元,每个输入单元的尺寸为所述预设输入数据尺寸,每个输入单元包括所述第三卷积核对应的第二输入数据中的至少一个输入元素;
    对所述第三卷积核与所述多个输入单元分别进行卷积运算,以得到每个输入单元对应的第二卷积运算数据;
    所述多个输入单元对应的第二卷积运算数据的拼接结果用于表示所述第三卷积核对应的所述第一卷积运算数据。
  8. 一种数据处理算装置,其特征在于,包括:获取模块和处理模块,
    所述获取模块用于,获取第一输入数据、第一卷积核和步长s,所述第一输入数据和 所述第一卷积核均为n个维度,n为1、2、3中的任一个,所述步长s为大于1的正整数;
    所述处理模块用于,根据所述第一输入数据,确定多个第二输入数据,每个第二输入数据包括所述第一输入数据中的至少一个输入元素,在任一个所述第二输入数据中的所述至少一个输入元素中每个输入元素在所述第一输入数据中的第一坐标在第一维度的子坐标除以所述步长s得到的第一余数相等,所述第一维度为所述n个维度的任一个维度;
    所述处理模块还用于,根据所述第一卷积核,确定多个第二卷积核,每个第二卷积核包括所述第一卷积核中的至少一个卷积元素,在任一个所述第二卷积核中的每个卷积元素在所述第一卷积核中的第二坐标在所述第一维度的子坐标除以所述步长s得到的第二余数相等,所述多个第二卷积核与所述多个第二输入数据一一对应,所述多个第二卷积核中每个第二卷积核中的所述卷积元素对应的所述第二余数与所述第二卷积核对应的第二输入数据中的所述输入元素对应的所述第一余数相等;
    所述处理模块还用于,利用加速算法,对每个第二输入数据和所述第二输入数据对应的第二卷积核进行步长为1的卷积运算,以得到多个第一卷积运算数据的和,所述多个第一卷积运算数据的和用于表示所述第一输入数据与所述第一卷积核进行所述步长s的卷积运算结果。
  9. 根据权利要求8所述的方法,其特征在于,所述处理模块具体用于:
    对第三输入数据和第三卷积核进行步长为1的卷积运算,所述第三输入数据包括所述多个第二输入数据,所述第三卷积核包括所述多个第二卷积核。
  10. 根据权利要求9所述的方法,其特征在于,
    所述获取模块还用于,获取预设卷积核尺寸,所述预设卷积核尺寸为n个维度,所述多个第二卷积核的尺寸为所述预设卷积核尺寸;
    所述处理模块还用于,根据所述第一输入数据和每个第二卷积核中的所述卷积元素在所述第一卷积核中的位置,确定每个第二卷积核对应的所述第二输入数据。
  11. 根据权利要求8或10所述的方法,其特征在于,
    所述获取模块还用于,获取预设输入数据尺寸;
    所述处理模块还用于,在所述多个第二卷积核中第四卷积核对应的第二输入数据大于所述预设输入数据尺寸的情况下,根据所述第四卷积核的尺寸和所述第四卷积核对应的第二输入数据,确定多个输入单元,每个输入单元的尺寸为所述预设输入数据尺寸,每个输入单元包括所述第四卷积核对应的第二输入数据中的至少一个输入元素;
    所述处理模块还用于,对所述第四卷积核与所述多个输入单元分别进行卷积运算,以得到每个输入单元对应的第二卷积运算数据;
    所述处理模块还用于,所述多个输入单元对应的第二卷积运算数据的拼接结果用于表示所述第四卷积核对应的所述第一卷积运算数据。
  12. 一种数据处理装置,其特征在于,包括:获取模块和处理模块,
    所述获取模块用于,获取第一输入数据、第一卷积核、预设卷积核尺寸,所述第一输入数据、所述第一卷积核、所述预设卷积核尺寸均为n个维度,n为1、2、3中的任一个,所述第一卷积核的尺寸大于所述预设卷积核尺寸;
    所述处理模块用于,根据所述第一卷积核,确定多个第二卷积核,所述多个第二卷积核的尺寸为所述预设卷积核尺寸,每个所述第二卷积核包括所示第一卷积核中的至少一个 卷积元素;
    所述处理模块还用于,根据每个第二卷积核中的卷积元素在所述第一卷积核中的位置,确定每个第二卷积核对应的第二输入数据,每个第二输入数据包括所述第一输入数据中的至少一个输入元素;
    所述处理模块还用于,对每个第二卷积核与所述第二卷积核对应的第二输入数据进行卷积运算,以得到多个第一卷积运算数据;
    所述处理模块还用于,计算所述多个第一卷积运算数据的和,所述多个第一卷积运算数据的和用于表示所述第一输入数据与所述第一卷积核的卷积运算结果。
  13. 根据权利要求12所述的方法,其特征在于,
    所述获取模块还用于,获取步长s,所述步长s为大于1的正整数;
    所述处理模块还用于,在任一个所述第二卷积核中的每个卷积元素在所述第一卷积核中的第二坐标在第一维度的子坐标除以所述步长s得到的第二余数相等,所述第一维度为所述n个维度的任一个维度;
    所述处理模块还用于,在任一个所述第二输入数据中的所述至少一个输入元素每个输入元素在所述第一输入数据中的第一坐标在第一维度的子坐标除以所述步长s得到的第二余数相等,所述多个第二卷积核中每个第二卷积核中的所述卷积元素对应的第二余数与所述第二卷积核对应的第二输入数据中的所述输入元素对应的第一余数相等;
    所述处理模块还用于,利用加速算法,对每个第二输入数据和所述第二输入数据对应的第二卷积核进行步长为1的卷积运算,所述多个第一卷积运算数据的和用于表示所述第一输入数据与所述第一卷积核进行步长s的卷积运算结果。
  14. 根据权利要求5或6所述的方法,其特征在于,
    所述获取模块还用于,获取预设输入数据尺寸;
    所述处理模块还用于,在所述多个第二卷积核中第三卷积核对应的第二输入数据大于所述预设输入数据尺寸的情况下,根据所述第三卷积核的尺寸和所述第三卷积核对应的第二输入数据,确定多个输入单元,每个输入单元的尺寸为所述预设输入数据尺寸,每个输入单元包括所述第三卷积核对应的第二输入数据中的至少一个输入元素;
    所述处理模块还用于,对所述第三卷积核与所述多个输入单元分别进行卷积运算,以得到每个输入单元对应的第二卷积运算数据;
    所述处理模块还用于,所述多个输入单元对应的第二卷积运算数据的拼接结果用于表示所述第三卷积核对应的所述第一卷积运算数据。
  15. 一种数据处理装置,其特征在于,包括:存储器和处理器,所述存储器用于存储程序,当所述程序在所述处理器中执行时,所述处理器用于执行权利要求1至7中任一项所述的方法。
  16. 一种计算机程序存储介质,其特征在于,所述计算机程序存储介质具有程序指令,当所述程序指令被执行时,使得如权利要求1至7中任一项所述的方法被执行。
  17. 一种计算机程序产品,其特征在于,包括程序指令,当所述程序指令被执行时,使得如权利要求1至7中任一项所述的方法被执行。
  18. 一种芯片,其特征在于,所述芯片包括至少一个处理器,当程序指令被所述至少一个处理器中执行时,使得如权利要求1至7中任一项所述的方法被执行。
CN202180018380.XA 2021-12-27 2021-12-27 一种数据处理方法和装置 Pending CN117063182A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2021/141730 WO2023122896A1 (zh) 2021-12-27 2021-12-27 一种数据处理方法和装置

Publications (1)

Publication Number Publication Date
CN117063182A true CN117063182A (zh) 2023-11-14

Family

ID=86996789

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180018380.XA Pending CN117063182A (zh) 2021-12-27 2021-12-27 一种数据处理方法和装置

Country Status (2)

Country Link
CN (1) CN117063182A (zh)
WO (1) WO2023122896A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116861149B (zh) * 2023-09-05 2024-01-09 之江实验室 卷积运算的优化方法、装置及处理器

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102415508B1 (ko) * 2017-03-28 2022-07-01 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치
CN111260020B (zh) * 2018-11-30 2024-04-16 深圳市海思半导体有限公司 卷积神经网络计算的方法和装置
CN110334798B (zh) * 2019-03-13 2021-06-08 北京地平线机器人技术研发有限公司 特征数据提取方法及装置、指令生成方法及装置
CN112215329B (zh) * 2019-07-09 2023-09-29 杭州海康威视数字技术股份有限公司 基于神经网络的卷积计算方法及装置
CN111260037B (zh) * 2020-02-11 2023-10-13 深圳云天励飞技术股份有限公司 图像数据的卷积运算方法、装置、电子设备及存储介质
CN113469350B (zh) * 2021-07-07 2023-03-24 武汉魅瞳科技有限公司 一种适于npu的深度卷积神经网络加速方法和***

Also Published As

Publication number Publication date
WO2023122896A1 (zh) 2023-07-06

Similar Documents

Publication Publication Date Title
CN110050267B (zh) 用于数据管理的***和方法
US11704547B2 (en) Transposing neural network matrices in hardware
EP3746945B1 (en) Improving performance of neural network arrays
CN113449857B (zh) 一种数据处理方法和数据处理设备
US10445638B1 (en) Restructuring a multi-dimensional array
CN112840356B (zh) 运算加速器、处理方法及相关设备
CN112183718B (zh) 一种用于计算设备的深度学习训练方法和装置
CN110033003A (zh) 图像分割方法和图像处理装置
JP2021522565A (ja) 並列分散テンソル計算用のニューラル・ハードウェア・アクセラレータ
CN112418392A (zh) 一种神经网络构建方法以及装置
CN112215332B (zh) 神经网络结构的搜索方法、图像处理方法和装置
CN112789627B (zh) 一种神经网络处理器、数据处理方法及相关设备
JP2022538750A (ja) ニューラルネットワークのためのカウンタベースの乗算累算回路
CN116113941A (zh) 一种神经网络加速器、加速方法以及装置
EP4379607A1 (en) Neural network accelerator, and data processing method for neural network accelerator
CN114078195A (zh) 分类模型的训练方法、超参数的搜索方法以及装置
WO2022156475A1 (zh) 神经网络模型的训练方法、数据处理方法及装置
CN114626503A (zh) 模型的训练方法、目标检测方法、装置、电子设备及介质
CN111709415B (zh) 目标检测方法、装置、计算机设备和存储介质
CN117501245A (zh) 神经网络模型训练方法和装置、数据处理方法和装置
CN114764615A (zh) 卷积运算的实现方法、数据处理方法及装置
CN113065997A (zh) 一种图像处理方法、神经网络的训练方法以及相关设备
WO2022227024A1 (zh) 神经网络模型的运算方法、训练方法及装置
CN117063182A (zh) 一种数据处理方法和装置
CN115146757A (zh) 一种神经网络模型的训练方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination