CN112784951A - Winograd卷积运算方法及相关产品 - Google Patents

Winograd卷积运算方法及相关产品 Download PDF

Info

Publication number
CN112784951A
CN112784951A CN201911061089.1A CN201911061089A CN112784951A CN 112784951 A CN112784951 A CN 112784951A CN 201911061089 A CN201911061089 A CN 201911061089A CN 112784951 A CN112784951 A CN 112784951A
Authority
CN
China
Prior art keywords
result
transformation
sub
data
layer
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.)
Granted
Application number
CN201911061089.1A
Other languages
English (en)
Other versions
CN112784951B (zh
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.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp 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 Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN201911061089.1A priority Critical patent/CN112784951B/zh
Priority to PCT/CN2020/113168 priority patent/WO2021082725A1/zh
Publication of CN112784951A publication Critical patent/CN112784951A/zh
Application granted granted Critical
Publication of CN112784951B publication Critical patent/CN112784951B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)

Abstract

本申请提供的Winograd卷积运算方法及相关产品,包括:处理器和存储器;其中,所述存储器,用于存储程序代码;所述处理器,用于调用所述存储器中所存储的程度代码,执行Winograd卷积运算方法。本申请提供的运算方法及相关产品能够提高神经网络训练的运算效率,降低训练过程所占用的运算资源。

Description

Winograd卷积运算方法及相关产品
技术领域
本申请涉及深度学习技术领域,尤其涉及一种Winograd卷积运算方法及相关产品。
背景技术
近年来,深度学习技术得到了飞速发展,特别是在图像识别、语音识别、自然语 言分析、智能机器人、大数据分析等领域得到了广泛引用,成为了研究重点。
神经网络模型是深度学习技术中的运算模型,通过利用多层架构以对输入的数据进行处理,并输出相应的运算结果。在现有技术中,对于神经网络模型进行训练是使 用神经网络模型进行运算的必要步骤,在训练过程中,待训练的神经网络将利用卷积 算法对海量训练数据重复进行迭代运算以得到训练完毕的神经网络模型。
但是,卷积运算中涉及到大量的对于矩阵的乘法,这将占用大量的运算资源,运算效率不高,同时,较低的运算效率将使得对神经网络模型进行训练所需的时间较长, 训练效率不高。
发明内容
基于此,有必要针对上述技术问题,提供一种能够用于提高神经网络模型训练效率,降低训练运算损耗资源的Winograd卷积运算方法及相关产品。
第一方面,本申请提供了一种Winograd卷积运算方法,包括:
在基于预配置的Winograd卷积算法对神经网络进行训练的过程中,分别将所述神经网络中第j层的反向输入梯度以及第j层的正向输入特征数据的正变换运算拆解 为求和运算,以基于求和运算获取所述第j层的反向输入梯度正变换运算的变换结果, 以及第j层的正向输入特征数据正变换运算的变换结果;
对第j层的反向输入梯度正变换运算的变换结果和第j层的正向输入特征数据正变换运算的变换结果执行对位乘法运算,获得第一乘法运算结果;
将第一乘法运算结果的逆变换运算拆解为求和运算,并将求和运算所得结果作为第j层的权值差;
根据所述第j层的权值差完成所述神经网络的训练。
第二方面,本申请提供了一种Winograd卷积运算装置,包括:
数据接收模块,用于获取对神经网络进行训练的正向输入特征数据;
变换模块,用于在训练模块基于预配置的Winograd卷积算法对神经网络进行训练的过程中,分别将所述神经网络中第j层的反向输入梯度以及第j层的正向输入特 征数据的正变换运算拆解为求和运算,以基于求和运算获取所述第j层的反向输入梯 度正变换运算的变换结果,以及第j层的正向输入特征数据正变换运算的变换结果;
对位乘模块,用于对第j层的反向输入梯度正变换运算的变换结果和第j层的正向输入特征数据正变换运算的变换结果执行对位乘法运算,获得第一乘法运算结果;
变换模块,还用于将第一乘法运算结果的逆变换运算拆解为求和运算,并将求和运算所得结果作为第j层的权值差;
权值更新模块,用于根据所述第j层的权值差完成所述神经网络的训练。
第三方面,本申请提供了一种人工智能芯片,所述芯片包括如前任一项所述的Winograd卷积运算装置。
第四方面,本申请提供了一种电子设备,所述电子设备包括如前所述的人工智能芯片。
第五方面,本申请提供了一种板卡,所述板卡包括:存储器件、接口装置和控制器件 以及如前所述的人工智能芯片;
其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;
所述控制器件,用于对所述人工智能芯片的状态进行监控。
本申请提供的Winograd卷积运算方法及相关产品,通过在接收训练指令和获取特征数据之后,采用Winograd算法以利用特征数据对神经网络中的权值数据进行训练,获 得训练后的神经网络,与现有技术相比,本申请利用了Winograd算法中将大量矩阵乘法 运算转换为矩阵加法运算的特点,有效提高了对于神经网络的训练数据进行处理的运算效 率,降低了训练过程所占用的运算资源。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技 术描述中所需要使用的附图作一简单地介绍。
图1为现有技术中的神经网络架构示意图;
图2示出根据本公开实施例的Winograd卷积运算方法所基于的运算系统的示意图;
图3为本申请提供的一种神经网络的训练方法的流程示意图;
图4为本申请提供的一种Winograd卷积运算方法的流程示意图;
图5为本申请提供的另一种Winograd卷积运算方法的流程示意图;
图6为本申请提供的又一种Winograd卷积运算方法的流程示意图;
图7为本申请提供的一种Winograd卷积运算装置的结构示意图;
图8示出根据本公开实施例的板卡的结构框图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地 描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开 中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都 属于本公开保护的范围。
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、“第三” 和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要 求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/ 或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或 其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的, 而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清 楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应 当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的 项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为 “当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确 定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定” 或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件 或事件]”。
为了清楚理解本申请的技术方案,下面对现有技术和本申请实施例中涉及的技术术语 进行解释:
卷积运算:卷积运算是指从图像的左上角开始,开一个与模板同样大小的活动窗口, 活动窗口对应一个窗口图像,该窗口图像为卷积核,窗口图像与图像中的像素对应起来相 乘再相加,并用计算结果作为卷积运算后新图像的第一个像素值。然后,活动窗口向右移 动一列,并作同样的运算。以此类推,从左到右、从上到下,即可得到一幅新图像。
Winograd卷积运算:Winograd卷积运算是一种基于多项式插值算法的卷积加速实现 方式。它通过对卷积操作的两个输入:第一目标矩阵和第二目标矩阵分别进行Winograd卷积正变换,再将正变换后的第一目标矩阵和第二目标矩阵进行对位乘法,最后对对位乘法结果再次进行Winograd卷积逆变换,得到与原卷积操作等价的卷积结果。
卷积神经网络:卷积神经网络技术是一类包含卷积计算且具有深度结构的前馈神经网 络,是深度学习的代表算法之一。在卷积神经网络技术中的卷积层,全连接层等网络层中 均需要神经元与卷积核进行卷积运算,得到特征数据,其被广泛用于图像分类、图像识别 等。
作为一种示例,图1为现有技术中的神经网络架构示意图,如图1所示,该神经网络采用了包括有卷积层、池化层、全连接层以及分类器层的输出层的网络架构。该神经网络包括多层依次进行的处理。举例来说,卷积层用于对输入本层的特征数据进行特征提取(第一层卷积层即用于对原始输入的特征数据进行特征提取);池化层用于对上一层输出的特征通过人为设定的池化窗口大小以及步长进行池化计算,以减小特征的维度,使特征聚合。
具体来说,在神经网络的第一层卷积网络接收到原始输入的数据(比如待处理图像) 后,神经网络开始对待处理图像进行卷积神经网络处理,其中每层卷积网络均进行卷积神 经网络的处理;且除最后一层卷积网络外,其它每层卷积网络在完成处理后,均将自身的 处理结果输出至下一层卷积网络,下一层卷积网络可用该处理结果作为本身的输入数据, 继续进行卷积神经网络的后续处理。
关于上述卷积神经网络处理,无论是在神经网络的推理过程还是在神经网络的训练过 程,均需要将输入的特征数据与神经网络中的权值数据进行卷积运算,且该卷积运算的次 数一般为多次。随着,特征数据的数据量增大,其运算的复杂性将相应升高。此时,若采 用传统的基于矩阵乘法的卷积运算将使得执行该神经网络运算的运算装置处理超负荷运 算状态,其运算时长和运算所需资源均大大增加。
举例来说,通过神经网络的权值对特征数据进行卷积的过程中,需要大量的乘法运算。 例如输入一个卷积层的特征数据维度是4×4,该卷积层的卷积核的维度是3×3,滑动步 长是1,则可以通过卷积核在特征数据上的滑动,将特征数据拆分为四个维度是3×3的 子数据,通过卷积核与每个子数据的卷积运算,能够输出2×2的输出数据。具体可以用卷积核与子数据进行对位乘法运算,再将九个乘积相加,得到输出数据中的一个值。在上述例子中,共需要36次乘法、32次加法运算,才能够得到输出结果。
同理的,在对神经网络进行训练的训练过程中,将首先对神经网络基于正向的传播训 练处理,此时,特征输入被输入至神经网络,并与权值数据进行卷积,得到正向传播的输 出结果;随后,还将对神经网络基于反向的传播训练处理,此时,梯度数据将与特征数据进行卷积,以得到的用于对权值数据进行调整的权值差。在上述例子中,对神经网络进行训练的训练过程,其正向的传播训练处理将需要36次乘法、32次加法运算,才能够能得 到正向传播的输出结果,在反向的传播训练处理也将至少需要36次乘法、32次加法运算, 才能够能得到反向传播的输出结果。
而对于运算系统来说,进行乘法的运算对于运算系统的消耗较大,这将直接造成运算 效率低下,以及训练效率的降低。
为了解决这一问题,本申请采用了基于预配置的Winograd卷积算法以应用于神经网 络训练过程的卷积运算中,特别是应用在神经网络训练的反向传播训练过程。具体的,本 申请采用的基于预配置的Winograd卷积算法是一种可将卷积运算转换为由大量矩阵加法 运算和少量矩阵乘法运算的运算方法,在本申请中,考虑运算器对于数据进行矩阵乘法运 算所需的时间和资源,远大于对数据进行矩阵加法运算所需的时间和资源,在本申请中, 通过利用Winograd卷积算法以减小运算资源消耗较大的矩阵乘法运算的次数,相对增加 消耗较小的矩阵加法运算的次数,从而降低整个神经网络训练过程在反向传播处理时的运 算资源消耗量和运算时间,提高运算效率。
以神经网络训练的场景作为示例,下面将结合附图对本申请提供的Winograd卷积运 算方法及相关产品进行解释和说明:
图2示出根据本公开实施例的Winograd卷积运算方法所基于的运算系统的示意图, 本申请提供的Winograd卷积运算方法可以应用于图2所示的运算系统中,如图 2所示,运算系统100包括多个处理器101以及存储器102,多个处理器101用于执行指令序 列,存储器102用于存储数据,可包括随机存储器(RAM,Random Access Memory)和寄存 器堆。处理系统100中的多个处理器101既可共用部分存储空间,例如共用部分RAM存储空 间和寄存器堆,又可同时拥有各自的存储空间,该运算系统用于执行本申请运算方法所执 行的各步骤。
根据本公开实施例的Winograd卷积运算方法可应用于包括多个处理器(多核)的运算 系统(例如人工智能芯片)的任意一个处理器中。该处理器可以是通用处理器,例如CPU (Central Processing Unit,中央处理器),也可以是用于执行人工智能运算的人工智能 处理器(IPU)。人工智能运算可包括机器学习运算,类脑运算等。其中,机器学习运算包括神经网络运算、k-means运算、支持向量机运算等。该人工智能处理器可例如包括 GPU(Graphics Processing Unit,图形处理单元)、NPU(Neural-Network Processing Unit,神经网络处理单元)、DSP(Digital Signal Process,数字信号处理单元)、现场可编程 门阵列(Field-Programmable Gate Array,FPGA)芯片中的一种或组合。本公开对处理 器的具体类型不作限制。此外,运算系统中的多个处理器的类型可以相同或不同,本公开 对此不作限制。
在一种可能的实现方式中,本公开中所提及的处理器可包括多个处理单元,每个处理 单元可以独立运行所分配到的各种任务,如:卷积运算任务、池化任务或全连接任务等。 本公开对处理单元及处理单元所运行的任务不作限制。
此外,基于不同的使用场景,其神经网络中的网络层将相应调整,其中的权值数据、 特征数据也将相应变换。也就是说,本申请所述的Winograd卷积运算方法、Winograd卷积运算装置及运算芯片可用于不同场景下的神经网络的训练,如对于人脸识别模型的训练,对于颜色分类器的训练,对于音视频数据转换模型的训练,对于图像边界划分模型的训练等等。相应的,在本申请中,训练完毕的神经网络可用于实现推理过程,其适用于不 同的场景,例如人脸识别、颜色分类、基于特殊需求的音视频数据转换、图像边界划分等 等。
第一方面,图3为本申请提供的一种神经网络的训练方法的流程示意图,如图3 所示的,该方法,其包括:
步骤101、接收训练指令,获取特征数据;
步骤102、利用所述特征数据和神经网络的权值数据,采用Winograd算法对所述神经网络进行训练,得到训练后的神经网络。
需要说明的是,该训练方法的执行主体可为Winograd卷积运算装置,其可与包括运 算芯片、神经网络芯片等芯片进行交互,以接收来自用户的电子设备或组合处理装置等发 起的训练指令。其中,训练指令可用于指示运算装置开始执行对神经网络进行训练的运算。
其中,本申请所提供的Winograd卷积运算方法则可应用于步骤1-102中,以提高神经网络训练过程的训练效率。
为了便于理解,首先将对本申请涉及的Winograd算法的进行介绍:
Winograd算法是一种可将卷积运算转换为由大量矩阵加法运算和少量矩阵乘法运算 的运算方法,其运算公式可以公式(1)的形式进行表示:
S=AT[(GgGG)⊙(BTdB)]A 公式(1)
其中,S用于表示卷积的结果矩阵,即使用特征数据与权值数据进行卷机运算得到的 结果矩阵;d用于表示输入的特征数据;g用于表示神经网络中的权值数据;B用于表示将特征数据从原域转换至Winograd域的特征变换矩阵;BT用于表示将特征数据从Winograd域转换至原域的特征逆变换矩阵;G用于表示将权值数据从原域转换至Winograd域的权 值变换矩阵;GT用于表示将权值数据从转换Winograd域至原域的权值逆变换矩阵;A用于 表示将对位乘后的运算结果从原域转换至Winograd域的逆变换运算的变换矩阵;AT用于 表示将对位乘后的运算结果从转换Winograd域至原域的逆变换运算的逆变换矩阵。
需要说明的是,上述的原域是指未经过Winograd变换的域,而Winograd域是指经过 Winograd变换的域。上述的特征数据d和权值数据g可为固定规模大小的矩阵,其中特征数据d的规模可在4*4的范围内,而权值数据g的规模可在3*3的范围内,其规模的选 取与结果矩阵的规模有关,本申请不进行限制。同时,在Winograd算法中,A、B、G、AT、 BT、GT均为转换矩阵,且该常数矩阵的规模和取值均与前述的结果矩阵S和权值数据g的 规模相关。此外,针对不同规模的常数矩阵,其元素值也将存在差异,但针对每一规模的 每一类常数矩阵,其元素值是固定的。
在本申请涉及的整个训练过程中,Winograd卷积运算装置将获取到特征数据。该特征数据可携带在训练指令中,并随着该训练指令一并发送至运算装置,以供其获取;该特征数据也可由运算装置在接收到训练指令之后,对该训练指令进行响应,并基于预存的数据存储地址,或接收的携带在训练指令中的数据存储地址,从与数据存储地址相应的数据存储位置进行读取。可知的是,用于训练的特征数据的数据量较大,在可选实施方式中,在本领域技术人员完成对于训练的特征数据进行采集和标注等操作之后,可将其存储于云端服务器中,当运算装置接收到训练指令之后,可根据该训练指令指示的训练方式以及存储地址,从云端服务器中读取所需要的特征数据,并进行处理和运算。
具体来说,针对于本申请涉及到的Winograd卷积运算方法,其可应用于前述的步骤102中,特别应用在对神经网络进行训练的反向传播训练过程中。
以神经网络包括n层,n为大于等于2的整数为例,Winograd卷积运算装置在获 取到特征数据之后,首先将利用特征数据和各层的权值数据,对所述神经网络进行正 向传播处理,获得第n层的正向输出特征数据。
随后,Winograd卷积运算装置将采用下述步骤201至步骤204的方法,利用各层 的输入梯度、各层的正向输入特征数据、以及各层的权值数据,对所述神经网络进行 反向传播处理,以对各层的权值数据进行更新。
图4为本申请提供的一种Winograd卷积运算方法的流程示意图,如图4所示的, 该方法,其包括:
步骤201、分别将所述神经网络中第j层的反向输入梯度以及第j层的正向输入 特征数据的正变换运算拆解为求和运算,以基于求和运算获取所述第j层的反向输入 梯度正变换运算的变换结果,以及第j层的正向输入特征数据正变换运算的变换结果;
步骤202、对第j层的反向输入梯度正变换运算的变换结果和第j层的正向输入 特征数据正变换运算的变换结果执行对位乘法运算,获得第一乘法运算结果;
步骤203、将第一乘法运算结果的逆变换运算拆解为求和运算,并将求和运算所得结果作为第j层的权值差;
步骤204、根据所述第j层的权值差完成所述神经网络的训练。
具体来说,针对于神经网络中的第j层(j属于n)来说,在对该第j层进行反 向传播训练时,将会向其网络层输入第j层的反向输入梯度以及正向输入特征数据, 以使通过对反向输入梯度以及正向输入特征数据进行卷积运算获得第j层的权值差, 进而根据该第j层的权值差完成第j层的权值数据的更新。重复该过程直至完成对n 层神经网络中的每一层的权值数据的更新,以完成对神经网络的训练。
在本实施例提供的方法中,可以采用winograd算法对反向传播训练时的反向输入梯度以及正向输入特征数据的卷积运算进行变换。
其中,针对采用Winograd算法进行权值差的运算,可采用公式(2)进行表示:
Δwj=GT[(Atop_diffjAT)⊙(BTtop_datajB)]G 公式(2)
其中,Δwj用于表示权值差,即使用反向输入梯度与正向输入特征数据进行卷积运算 得到的结果矩阵;top_diffj用于表示第j层的反向输入梯度,其与第j+1层的反向输出梯 度相同;top_dataj用于表示神经网络中的第j层的正向输入特征数据,其与第j-1层的 正向输出特征数据相同;B用于表示将正向输出特征数据从原域转换至winograd域的变换矩阵;BT用于表示将正向输出特征数据从winograd域转换至原域的逆变换矩阵;A用于表示将反向输入梯度从原域转换至winograd域的变换矩阵;AT用于表示将反向输入梯度从转换winograd域至原域的逆变换矩阵;G用于表示将对位乘后的运算结果从原域转换 至winograd域的逆变换运算的变换矩阵;GT用于表示将对位乘后的运算结果从转换winograd域至原域的逆变换运算的逆变换矩阵。
需要说明的是,上述的原域是指未经过winograd变换的域,而winograd域是指经过 winograd变换的域。
实际应用时,在winograd算法中,需要对反向输入梯度与正向输入特征数据分别进 行正变换运算,因此,本实施例提供的方法可以获取用于对反向输入梯度与正向输入特征数据进行正变换运算的变换矩阵A、AT、BT、B,以及对位乘后的运算结过进行逆变换 运算的变换矩阵G、GT
在本实施例中,若top_diffj和top_dataj的尺寸固定,则A、AT、B、BT、G、GT矩阵也 是固定的。具体可以根据需要的输出结果Δwj的尺寸以及卷积过程的滑动步长,确定 top_diffj和top_dataj的尺寸,进而根据这些数据的尺寸确定对应的A、AT、B、BT、G、GT
Winograd卷积运算装置可以使用变换矩阵B、BT对正向输入特征数据top_dataj进行 正变换运算,得到BTtop_datajB的运算结果,使用变换矩阵A、AT对反向输入梯度top_diffj进行正变换运算,得到Atop_diffjAT的运算结果。随后,Winograd卷积运算装置将对第j层的反向输入梯度正变换运算的变换结果Atop_diffjAT以及第j层的正向输入特 征数据正变换运算的变换结果BTtop_datajB执行对位乘法运算,获得第一乘法运算结 果(Atop_diffjAT)⊙(BTtop_datajB)。再后,Winograd卷积运算装置使用变换矩阵G、GT对第一乘法运算结果进行逆变换运算,以得到最后的权值差 GT[(Atop_diffjAT)⊙(BTtop_datajB)]G。该权值差将用于对第j层的权值数据进行调 整。
也就是说,在本公开实施例中,对于正变换运算和逆变换运算,均可采用将变换运算拆解为求和运算的方式进行,根据求和运算确定正变换运算和逆变换运算的运算结果率。 传统的卷积运算中乘法运算次数较多,通过采用winograd算法进行卷积处理,从而有效 降低了变换运算中乘法运算的次数,相对增加了加法运算的次数,进而提高的运算效率, 降低运算带来的性能损耗。
可选的,对于神经网络进行训练中,第j层的反向输入梯度是等同于第j+1层的 反向输出梯度的,第j层的反向输出梯度是等同于第j-1层的反向输出梯度的。而对 于第j层的反向输出梯度的获取,则可通过对第j层的反向输入梯度与第j层的权值 数据进行卷积运算获得,该卷积运算可采用前述的预配置的Winograd卷积算法,图 1-5为本申请提供的另一种Winograd卷积运算方法的流程示意图,如图1-5所示的方 法可适用于获取图4中对于任一层的反向输入梯度的获取,该方法其包括:
步骤301、在基于预配置的Winograd卷积算法对神经网络进行训练的过程中,分别将第j层的反向输入梯度以及第j层的权值数据的正变换运算拆解为求和运算,以 基于求和运算获取所述第j层的反向输入梯度正变换运算的变换结果,以及所述第j 层的权值数据正变换运算的变换结果;
步骤302、对所述第j层的反向输入梯度正变换运算的变换结果和所述第j层的 权值数据正变换运算的变换结果执行对位乘法运算,获得第二乘法运算结果;
步骤303、将第二乘法运算结果的逆变换运算拆解为求和运算,并将求和运算所得结果作为第j层的反向输出梯度。
在本实施例提供的方法中,可以采用winograd算法对反向传播训练时的权值数据和反 向输入梯度的卷积运算进行变换,以得到反向输出梯度。
其中,针对采用Winograd算法进行反向输出梯度的运算,可采用公式(3)进行 表示:
bottom_diffj=AT[(GgjGT)⊙(BTtop_diffjB)]A 公式(3)
其中,bottom_diffj用于表示第j层的反向输出梯度,即使用第j层的反向输入梯度 与第j层的权值数据进行卷积运算得到的结果矩阵,该第j层的反向输出梯度也将作为第 j-1层的反向输入梯度;top_diffj用于表示第j层的反向输入梯度,其与第j+1层的反向输出梯度相同;gj用于表示神经网络中的第j层的权值数据;B用于表示可将反向输入梯 度从原域转换至winograd域的变换矩阵;BT用于表示可将反向输入梯度从winograd域转 换至原域的逆变换矩阵;G用于表示可将权值数据从原域转换至winograd域的变换矩阵; GT用于表示可将权值数据从转换winograd域至原域的逆变换矩阵;A用于表示将对位乘 后的运算结果从原域转换至winograd域的逆变换运算的变换矩阵;AT用于表示将对位乘 后的运算结果从转换winograd域至原域的逆变换运算的逆变换矩阵。
需要说明的是,上述的原域是指未经过winograd变换的域,而winograd域是指经过 winograd变换的域。
实际应用时,在winograd算法中,需要对反向输入梯度与权值数据分别进行正变换 运算,因此,本实施例提供的方法可以获取用于对反向输入梯度与权值数据进行正变换运算的变换矩阵G、GT、BT、B,以及对位乘后的运算结过进行逆变换运算的变换矩阵A、 AT
在本实施例中,若top_diffj和gj的尺寸固定,则A、AT、B、BT、G、GT矩阵也是固定 的。具体可以根据需要的输出结果bottom_diffj的尺寸以及卷积过程的滑动步长,确定 top_diffj和gj的尺寸,进而根据这些数据的尺寸确定对应的A、AT、B、BT、G、GT
Winograd卷积运算装置可以使用变换矩阵B、BT对反向输入梯度top_diffj进行正变 换运算,得到BTtop_diffjB的运算结果,使用变换矩阵G、GT对权值数据gj进行正变换 运算,得到GgjGT的运算结果。随后,Winograd卷积运算装置将对第j层的反向输入 梯度正变换运算的变换结果BTtop_diffjB以及第j层的权值数据正变换运算的变换结 果GgjGT执行对位乘法运算,获得第二乘法运算结果(GgjGT)⊙(BTtop_diffjB)。再后, Winograd卷积运算装置使用变换矩阵A、AT对第二乘法运算结果进行逆变换运算,以 得到最后的反向输出梯度AT[(GgjGT)⊙(BTtop_diffjB)]A。该反向输出梯度将作为第 j-1层的反向输入梯度,以供第j-1层利用该反向输入梯度计算第j-1层的反向输出 梯度。当然,类似的,在上述过程中第j层的反向输入梯度是由第j+1层对该第j+1 层的反向输入梯度和权值数据进行运算处理获得并输出给第j层的。
可选的,对于神经网络进行训练中,还包括有正向传播的训练,在正向传播的训练中也可采用将卷积运算进行拆分求和的运算处理,图6为本申请提供的又一种 Winograd卷积运算方法的流程示意图,该图6所示的方法可与图4或图5组合使用, 一同作用于对于神经网络的训练过程,图6所示方法也可独立使用,单独作用于神经 网络的训练过程。
该方法,包括:
步骤401、基于所述预配置的Winograd算法,分别将第i层的正向输入特征数据 以及第i层的权值数据的正变换运算拆解为求和运算,以获取所述第i层的正向输入 特征数据正变换运算的变换结果,以及所述第i层的权值数据正变换运算的变换结果;
步骤402、对所述第i层的正向输入特征数据正变换运算的变换结果和所述第i 层的权值数据正变换运算的变换结果执行对位乘法运算,获得第三乘法运算结果;
步骤403、对第三乘法运算结果的逆变换运算拆解为求和运算,并将求和运算所得结果作为第i层的正向输出特征数据。
在本实施例提供的方法中,可以采用winograd算法对正向传播训练时的权值数据和正 向输入特征数据的卷积运算进行变换,以得到正向输出特征数据。
其中,针对采用Winograd算法进行正向输出特征数据的运算,可采用公式(4) 进行表示:
bottom_datai=AT[(GgiGT)⊙(BTtop_dataiB)A 公式(4)
其中,bottom_datai用于表示第i层(i属于m)的正向输出特征数据,即使用第i 层的正向输入特征数据与第i层的权值数据进行卷积运算得到的结果矩阵,该第i层的正 向输出特征数据也将作为第i+1层的正向输入特征数据;top_datai用于表示第i层的正向 输入特征数据,其与第i-1层的正向输出特征数据相同;gi用于表示神经网络中的第i 层的权值数据;B用于表示可将正向输入特征数据从原域转换至winograd域的变换矩阵; BT用于表示可将正向输入特征数据从winograd域转换至原域的逆变换矩阵;G用于表示可 将权值数据从原域转换至winograd域的变换矩阵;GT用于表示可将权值数据从转换 winograd域至原域的逆变换矩阵;A用于表示将对位乘后的运算结果从原域转换至 winograd域的逆变换运算的变换矩阵;AT用于表示将对位乘后的运算结果从转换winograd 域至原域的逆变换运算的逆变换矩阵。
需要说明的是,上述的原域是指未经过winograd变换的域,而winograd域是指经过 winograd变换的域。
实际应用时,在winograd算法中,需要对正向输入特征数据与权值数据分别进行正 变换运算,因此,本实施例提供的方法可以获取用于对正向输入特征数据与权值数据进行正变换运算的变换矩阵G、GT、BT、B,以及对位乘后的运算结过进行逆变换运算的变 换矩阵A、AT
在本实施例中,若top_datai和gi的尺寸固定,则A、AT、B、BT、G、GT矩阵也是固定 的。具体可以根据需要的输出结果bottom_datai的尺寸以及卷积过程的滑动步长,确定 top_datai和gi的尺寸,进而根据这些数据的尺寸确定对应的A、AT、B、BT、G、GT
Winograd卷积运算装置可以使用变换矩阵B、BT对正向输入特征数据top_datai进行 正变换运算,得到BTtopdataiB的运算结果,使用变换矩阵G、GT对权值数据gi进行正 变换运算,得到GgiGT的运算结果。随后,Winograd卷积运算装置将对第i层的正向 输入特征数据正变换运算的变换结果BTtop_dataiB以及第i层的权值数据正变换运算 的变换结果GgiGT执行对位乘法运算,获得第三乘法运算结果 (GgiGT)⊙(BTtop_dataiB)。再后,Winograd卷积运算装置使用变换矩阵A、AT对第三乘 法运算结果进行逆变换运算,以得到最后的正向输出特征数据 AT[(GgiGT)⊙(BTtop_dataiB)]A。该正向输出特征数据将作为第i+1层的正向输入特 征数据,以供第i+1层利用该正向输入特征数据计算第i+1层的正向输出特征数据。 当然,类似的,在上述过程中第i层的正向输入特征数据是由第i-1层对该第i-1层 的正向输入特征数据和权值数据进行运算处理获得并输出给第i层的。
也就是说,在本公开实施例中,对于图4、图5以及图6中涉及到的正变换运算和 逆变换运算,均可采用将变换运算拆解为求和运算的方式进行,根据求和运算确定正变换 运算和逆变换运算的运算结果率。传统的卷积运算中乘法运算次数较多,通过采用 winograd算法进行卷积处理,从而有效降低了变换运算中乘法运算的次数,相对增加了 加法运算的次数,进而提高的运算效率,降低运算带来的性能损耗。
进一步的,为了降低乘法次数,降低运算带来的性能损耗,本实施例提供的方法中, 将正变换运算或逆变换运算拆解为求和运算的处理方式可采用如下方式:将目标数据拆解 为与所述目标数据对应的多个子张量,并对所述多个子张量进行变换运算并求和,根据求 和运算的结果得到所述目标数据对应的变换结果;所述目标数据包括如下一种:反向输入 梯度、正向输入特征数据、权值数据、第一乘法运算结果、第二乘法运算结果和第三乘法 运算结果。
也就是说,实际应用时,可以前述中涉及到的对反向输入梯度、正向输入特征数据以及权值数据的正变换运算拆解为多个子变换结果,再将子变换结果的求和结果确定 为相应的变换结果,还可将涉及到的对第一乘法运算结果、第二乘法运算结果以及第 三乘法运算结果的逆变换运算拆解为多个子多个子变换结果,再将子变换结果的求和 结果确定为相应的变换结果。
其中,以BTtop_datajB进行举例来说,假设正向输入特征数据top_dataj是4×4的矩 阵,则可以预先设置top_dataj中每个元素对应的替换矩阵,例如d00对应一矩阵D00,d01对应一D01……d33对应一D33。替换矩阵可以是包括0、1、﹣1的矩阵。
在对top_dataj进行变换时,可以直接读取与top_dataj对应的替换矩阵,并提取top_dataj中的每个元素,用该元素与相应的替换矩阵相乘再相加,得到变换结果。具体可以根据正向输入特征数据的尺寸、特征转换矩阵B、特征逆变换矩阵BT确定替换矩阵,在 对正向输入特征数据进行变换时,可以直接读取预先存储的特征转换替换矩阵。
具体的,通过单个元素与替换矩阵进行相乘的运算,能够降低乘法次数。尤其在替换 矩阵由0、1、﹣1组成的时候,更能够大幅的降低运算量。例如,特征数据是4×4的矩 阵,共包括d00、d01……d33这个16个元素,此时,可以具有与这些元素对应的16个替换矩 阵D01、D01……D33
进一步的,所述目标数据对应的多个子张量之和为所述目标数据;所述多个子张量的 个数与所述目标数据中非0元素的个数相同,每个所述子张量中有单个非0元素,且在所 述子张量中的非0元素与在所述目标数据中对应位置的非0元素相同。也就是说,以目标数据为正向输入特征数据top_dataj为例,其可表示为:
Figure BDA0002257976630000141
则可以根据上述规定,将正向输入特征数据top_dataj拆分为16个(假设特征数据中 的元素均为非0时),子张量分别为:
Figure BDA0002257976630000142
Figure BDA0002257976630000151
实际应用时,将目标数据拆分为子张量之后,可以使用变换矩阵对每个子张量进行变换,再将子张量的变换结果相加,得到特征变换结果。
其中,由于子张量之和与目标数据等同,那么对目标子数据进行变换,再将变换结果相加得到的结果,与目标数据的变换结果相同。
例如,对于其中的一个子张量,可以基于下式对其进行转换:
Figure BDA0002257976630000152
针对每个子张量,都可以进行如上的变换,再将各个子张量的变换结果相加,得到变 换结果。
为了进一步的减少运算过程中的乘法运算,在对子张量进行变换运算并求和,得到 变换结果时,还可以:
根据子张量确定对应的元子张量,其中,元子张量是将子张量的非0元素置为1的张 量;
确定特征子张量的变换结果;
对子张量的变换结果进行求和,得到特征变换结果。
其中,可以识别子张量中的非0元素,并将非0元素对应的位置设置为1,得到 元子张量,例如对于子张量
Figure BDA0002257976630000153
来说,对应的元子张量是:
Figure BDA0002257976630000154
针对每个子张量都可以确定其对应的元子张量。
在对子张量进行变换时,可以根据变换矩阵、元子张量及其对应的非0元素,确定子 张量的变换结果。
具体可以对元子张量左边乘以变换矩阵中的左乘矩阵、右边乘以特征变换矩阵中的右 乘矩阵,并将结果与元子张量对应的非0元素相乘,得到子张量的变换结果;其中,特征 元子张量中的左乘矩阵和右乘矩阵都是由子张量的规模确定的
例如对于
Figure BDA0002257976630000161
来说,可以转换为
Figure BDA0002257976630000162
由于矩阵中的元素除了0就是1,因此,对于上式的运算过程引起的性能损耗较小。
进一步的,由于根据正向输入特征数据的尺寸可以确定BT、B,并且,元子张量也是预先可以根据正向输入特征数据确定的。因此,还可以预先根据BT、B、元子张量确定与 特征数据中每个元素位置对应的替换矩阵。
例如,对于第一行第一列的元素位置,替换矩阵为:
Figure BDA0002257976630000163
基于上式可以得知,子张量
Figure BDA0002257976630000164
的变换结果变为:
d00×D00
针对正向输入特征数据中每个元素位置都可以确定对应的替换矩阵,可以在对正向输 入特征数据进行变换时,直接根据数据尺寸,确定对应的替换矩阵集合,再根据替换矩阵 集合确定变换结果。
具体运算时,得到
BTtop_dataiB=d00×D01+d01×D01...d33×D33
当替换矩阵由0、1、-1组成时,元素与替换矩阵的乘法被改变为直接写入数据的过程,例如替换矩阵中的1与d00相乘,实际结果为直接写入d00。因此,基于本实施例提供 的方法,能够将winograd算法中的变换过程转换为加法算法,从而进一步的降低卷积过 程的运算量。
而对其他类型数据,如top_diffj或gj等,进行正变换运算的过程,则与对top_dataj进行正变换运算的过程类似,在此不做赘述。
此外,在确定正变换运算的变换结果之后,还可将基于运算目标采用这两个结果进行 对位乘运算。例如,在得到了图1-4所示方法中的,BTtop_datajB及Atop_diffjAT之后,可以对这两个运算结果进行对位乘运算,即确定
(Atop_diffjAT)⊙(BTtop_datajB)的结果。
实际应用时,可以将两个变换结果相应位置的数值相乘,从而得到新的矩阵作为乘法 运算结果。例如反向输入梯度的变换结果为:
Figure BDA0002257976630000172
正向输入特征数据的变换结果为:
Figure BDA0002257976630000173
则第一乘法运算结果可表示为:
Figure BDA0002257976630000174
可以获取用于对乘法运算结果进行逆变换的逆变换矩阵A、AT。如上所述,可以 根据运算结果的尺寸确定逆变换矩阵。
进一步的,可以使用逆变换矩阵对乘法运算结果进行逆变换,例如,可采用拆分求和的方式确定对第一乘法运算结果的逆变换运算的变换结果,即权值差: Δwj=GT[(Atop_diffjAT)⊙(BTtop_datajB)]G。
具体的,在逆变换过程中,为了减少乘法运算,如正变换过程类似的,也可以将 乘法运算结果的变换运算拆解为求和运算,并根据求和运算确定运算结果。
以对第一乘法运算结果进行逆变换运算的拆分为例,可以基于下式对第一乘法运算结果进行变换:
ApAT
其中,AT、A是逆变换矩阵,p是第一乘法运算结果。在将该变换过程拆解为求和运算时,可以将第一乘法运算结果拆解为多个子张量;再根据逆变换矩阵对多个子张量进行变换运算并求和,得到运算结果。
具体的,多个子张量之和为乘法运算结果,多个子张量的个数与乘法运算结果中非0 元素的个数相同,每个子张量中有单个非0元素,且在子张量中的非0元素与在乘法运算 结果中对应位置的非0元素相同。
也就是说,第一乘法运算结果p为:
Figure BDA0002257976630000181
可将第一乘法运算结果拆分为16个子张量,分别为:
Figure BDA0002257976630000182
实际应用时,将乘法运算结果拆分为结果子张量之后,可以使用逆变换矩阵对每个结果子张量进行变换,再将结果子张量的变换结果相加,得到运算结果。
例如,对于其中的一个结果子张量,可以基于下式对其进行转换:
Figure BDA0002257976630000183
针对每个子张量,都可以进行如上的变换,再将各个子张量的变换结果相加,得到运 算结果。
为了进一步的减少运算过程中的乘法运算,在对子张量进行变换运算并求和,得到 运算结果时,还可以:
根据子张量确定对应的元子张量,其中,元子张量是将子张量的非0元素置为1的张 量;
根据逆变换矩阵、元子张量及其对应的非0元素,确定结果子张量的变换结果;
对子张量的变换结果进行求和,得到运算结果。
与对前述的正向输入特征数据的变换过程类似,可以识别第一乘法运算结果的子张量中的非0元素,并将非0元素对应的位置设置为1,得到元子张量,例如对于子 张量
Figure BDA0002257976630000191
来说,对应的元子张量是:
Figure BDA0002257976630000192
针对每个子张量都可以确定其对应的元子张量。
在对子张量进行变换时,可以根据逆变换矩阵、元子张量及其对应的非0元素,确定 运算结果。
具体可以对元子张量左边乘以逆变换矩阵中的左乘矩阵、右边乘以逆变换矩阵中的右 乘矩阵,并将结果与元子张量对应的非0元素相乘,得到子张量的变换结果;其中,元子 张量中的左乘矩阵和右乘矩阵都是由子张量的规模确定的。
例如对于
Figure BDA0002257976630000193
来说,可以转换为
Figure BDA0002257976630000194
进一步的,由于根据运算结果的尺寸可以确定AT、A,并且,元子张量也是预先可以根据运算结果的尺寸确定的。因此,还可以预先根据AT、A、结果元子张量确定与乘法运 算结果中每个元素位置对应的替换矩阵。
例如,对于第一行第一列的元素位置,替换矩阵为:
Figure BDA0002257976630000201
基于上式可以得知,子张量
Figure BDA0002257976630000202
的变换结果变为:
p00×D″00
针对第一乘法运算结果中每个元素位置都可以确定对应的替换矩阵,可以在对第一乘 法运算结果进行变换时,直接根据该结果或最终运算结果尺寸,确定对应的替换矩阵集合, 再根据替换矩阵集合确定运算结果。
基于上式可以得到运算结果,即权值差可表示为:
ApAT=p00×D″00+p01×D″01…p33×D″33
也就是说,可以确定与各乘法运算中包括的每个元素对应的替换矩阵,从而可以根 据这些替换矩阵对逆变换运算拆解为求和运算,并根据求和运算确定运算结果。
其中,具体的拆解方式与对特征变换运算的拆解方式类似,进而通过更少的乘法方式 就能够得到卷积运算结果。而对第二乘法运算结果以及第三乘法运算结果的逆变换运算的 处理过程与前述的对第一乘法运算结果的逆变换运算进行处理的过程类似,再此不进行赘 述。
本实施例提供的方法用于进行卷积运算,该方法由设置有本实施例提供的方法的设备 执行,该设备通常以硬件和/或软件的方式来实现。
在本申请所基于的对神经网络进行训练的过程中,由于采用了前述的Winograd算法, 其训练所需的训练时间将大大缩短。特别的,由于训练的特征数据的数据量较大,在本申 请中,对于获取的特征数据的规模将与神经网络输出的运算结果的规模,以及神经网络中 权值数据的规模相关联。也就是说,在对神经网络进行训练的运算获取特征数据的过程中, 基于训练的运算任务,可将训练数据进行拆解,以将规模较大的多维训练数据拆分为若干 固定规模的二维的特征数据,针对每一特征数据,运算装置可利用前述提供的方法进行训 练运算。
当然,对于运算装置如何从存储有多维训练数据的云端服务器中获取二维的特征数据, 则可采用基于存储地址进行数据精准读取的方式,即基云端服务器中的存储地址位,读取 存储在特定存储地址位的数据,并进行处理。其中,对于处理所需要的特征数据的存储地 址,运算装置可从训练指令中获取,即训练指令中可携带有本次运算处理所需要的特征数 据的存储地址,以供运算装置基于该存储地址从云端服务器中读取特征数据。
特别的,在其中一种可选实现方式中,运算装置在进行上述的正向传播处理和反向传播处理过程时的至少一次卷积运算将采用Winograd算法。
具体来说,由于神经网络中包括有n层,其每一层均将存在有大量卷积运算,其 中的部分或全部卷积运算可采用该Winograd算法,当仅有部分卷积运算采用Winograd 算法时,该部分卷积运算以外的其他卷积运算可采用通常的卷积运算处理。另外,参 与运算的数据格式也不限,例如,可以使用浮点运算的算法进行各步骤的运算,也可 以将浮点数转换为定点数后进行各步骤的运算。
进一步的,当运算装置仅对部分卷积运算采用Winograd算法进行运算处理时, 运算装置接收的训练指令中还将包括有选取的目标层,运算装置将基于选取的目标层, 采用Winograd算法对目标层的卷积运算进行处理。其中,该目标层是采用预设规则 选取获得的。
其中,预设规则具体可取决于训练数据的复杂程度,即训练数据被拆分为特征数据的拆分程度。
具体的,若训练数据的复杂程度较大,其数据规模也相对较大,为了进行卷积处理,需要对训练数据进行拆分,并获得数量巨大的拆分后的特征数据。
此时,若采用传统的卷积运算处理方式对数量巨大的拆分后的特征数据进行卷积运算,其运算的处理时间将会很长。相应的,若此时对数量巨大的拆分后的特征数据 采用Winograd算法进行卷积运算,相对于传统运算处理方式每一次的运算的处理时 间将得到缩短,而由于特征数据的数量巨大,使得整个训练数据的运算效率的提升也 将呈现几何倍增长,对于神经网络训练过程的运算效率提高的效果显著。
因此,在可选实施方式中,可在对训练数据进行拆分后,先确定拆分后的特征数据的数量,随后基于特征数据的数量选取采用Winograd算法进行卷积运算的一个或 多个目标层。其中,在选择过程中,可仅对一个或多个目标层的正向传播处理过程中 的卷积运算采用Winograd算法进行处理,也可对一个或多个目标层的反向传播处理 过程中的卷积运算进行采用Winograd算法进行处理,或者,可对一个或多个目标层 的正向传播处理过程以及反向传播过程中的卷积运算进行采用Winograd算法进行处 理。
进一步的,上述运算方法获得的神经网络可用于各场景,此处以人脸识别模型进行推 理为例进行说明:
步骤501、接收识别指令,获取人脸样本的特征数据;
步骤502、将所述人脸样本的特征数据作为训练获得的所述人脸识别模型的输入,通 过训练得到的人脸识别模型进行神经网络处理;
步骤503、将所述人脸识别模型输出的结果作为人脸识别结果。
本申请提供的信息的运算方法及相关产品,通过在接收训练指令和获取特征数据之后,采用Winograd算法以利用特征数据对神经网络中的权值数据进行训练,获得 训练后的神经网络,与现有技术相比,本申请利用了Winograd算法中将大量矩阵乘 法运算转换为矩阵加法运算的特点,有效提高了对于神经网络的训练数据进行处理的 运算效率,降低了训练过程所占用的运算资源。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的 动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为 依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知 悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开 所必须的。
进一步需要说明的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些 步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执 行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,流程图中的至少一部 分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执 行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进 行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执 行。
第二方面,图7为本申请提供的一种Winograd卷积运算装置的结构示意图,如 图7所示的,本申请的Winograd卷积运算装置,包括:数据接收模块10、变换模块 20、对位乘模块30以及权值更新模块40;
其中,
数据接收模块10,用于获取对神经网络进行训练的正向输入特征数据;
变换模块20,用于在训练模块基于预配置的Winograd卷积算法对神经网络进行训练的过程中,分别将所述神经网络中第j层的反向输入梯度以及第j层的正向输入 特征数据的正变换运算拆解为求和运算,以基于求和运算获取所述第j层的反向输入 梯度正变换运算的变换结果,以及第j层的正向输入特征数据正变换运算的变换结果;
对位乘模块30,用于对第j层的反向输入梯度正变换运算的变换结果和第j层的正向输入特征数据正变换运算的变换结果执行对位乘法运算,获得第一乘法运算结果;
变换模块20,还用于将第一乘法运算结果的逆变换运算拆解为求和运算,并将求和运算所得结果作为第j层的权值差;
权值更新模块40,用于根据所述第j层的权值差完成所述神经网络的训练。
可选的,变换模块20,还用于在基于预配置的Winograd卷积算法对神经网络进 行训练的过程中,分别将第j层的反向输入梯度以及第j层的权值数据的正变换运算 拆解为求和运算,以基于求和运算获取所述第j层的反向输入梯度正变换运算的变换 结果,以及所述第j层的权值数据正变换运算的变换结果;
对位乘模块30,还用于对所述第j层的反向输入梯度正变换运算的变换结果和所述第j层的权值数据正变换运算的变换结果执行对位乘法运算,获得第二乘法运算结 果;
变换模块20,还用于将第二乘法运算结果的逆变换运算拆解为求和运算,并将求和运算所得结果作为第j层的反向输出梯度。
可选的,变换模块20,还用于基于所述预配置的Winograd算法,分别将第i层 的正向输入特征数据以及第i层的权值数据的正变换运算拆解为求和运算,以获取所 述第i层的正向输入特征数据正变换运算的变换结果,以及所述第i层的权值数据正 变换运算的变换结果;
对位乘模块30,还用于对所述第i层的正向输入特征数据正变换运算的变换结果和所述第i层的权值数据正变换运算的变换结果执行对位乘法运算,获得第三乘法运 算结果;
变换模块20,还用于对第三乘法运算结果的逆变换运算拆解为求和运算,并将求和运算所得结果作为第i层的正向输出特征数据。
可选的,变换模块20具体用于:将正变换运算或逆变换运算拆解为求和运算的处理 方式为:将目标数据拆解为与所述目标数据对应的多个子张量,并对所述多个子张量进行变换运算并求和,根据求和运算的结果得到所述目标数据对应的变换结果;所述目标数据包括如下一种:反向输入梯度、正向输入特征数据、权值数据、第一乘法运算结果、第 二乘法运算结果和第三乘法运算结果。
可选的,所述目标数据对应的多个子张量之和为所述目标数据;所述多个子张量的个 数与所述目标数据中非0元素的个数相同,每个所述子张量中有单个非0元素,且在所述 子张量中的非0元素与在所述目标数据中对应位置的非0元素相同。
可选的,变换模块20具体用于:确定目标数据的各子张量对应的元子张量,其 中,所述元子张量是将所述子张量的非0元素置为1的张量;获取各子张量对应的元 子张量的变换结果;将所述子张量中非0的元素值作为系数乘以对应的元子张量的变 换结果,得到所述子张量的变换结果;将多个子张量的变换结果相加得到所述根据求 和运算的结果得到对所述多个子张量进行变换运算并求和,根据求和运算的结果得到 对所述目标数据进行变换运算的变换结果。
可选的,变换模块20具体用于:对于每一个所述子张量,将所述子张量对应的元子张量左边乘以左乘矩阵、右边乘以右乘矩阵,得到所述元子张量的变换结果,其中,所述 左乘矩阵和所述右乘矩阵都是由所述子张量的规模以及变换类型确定的,其中所述变换类型包括正变换运算的变换类型和逆变换运算的变换类型。
应该理解,上述的装置实施例仅是示意性的,本公开的装置还可通过其它的方式实现。 例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以 有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统, 或一些特征可以忽略或不执行。
另外,若无特别说明,在本公开各个实施例中的各功能单元/模块可以集成在一个单 元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成 在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的 形式实现。
所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路 等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述人工智能处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。 若无特别说明,所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻 变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM (DynamicRandom Access Memory)、静态随机存取存储器SRAM(Static Random-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、 高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(Hybrid Memory Cube) 等等。
所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用 时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上 或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式 体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设 备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或 部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机 存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储 程序代码的介质。
在一种可能的实现方式中,还公开了一种人工智能芯片,其包括了上述Winograd卷积 运算装置。
在一种可能的实现方式中,还公开了一种板卡,其包括存储器件、接口装置和控制器 件以及上述人工智能芯片;其中,所述人工智能芯片与所述存储器件、所述控制器件以及 所述接口装置分别连接;所述存储器件,用于存储数据;所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;所述控制器件,用于对所述人工智能芯片的状态进行监控。
图8示出根据本公开实施例的板卡的结构框图,参阅图8,上述板卡除了包括上述芯片 389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装 置391和控制器件392;
所述存储器件390与所述人工智能芯片通过总线连接,用于存储数据。所述存储器件 可以包括多组存储单元393。每一组所述存储单元与所述人工智能芯片通过总线连接。可 以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双 倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装 置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在 一个实施例中,所述人工智能芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控 制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用 DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存 储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器, 用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述人工智能芯片电连接。所述接口装置用于实现所述人工智能芯片 与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装 置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。优选的,当采用PCIE 3.0 X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本公开并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述人工智能芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述人工智能芯片电连接。所述控制器件用于对所述人工智能芯片的 状态进行监控。具体的,所述人工智能芯片与所述控制器件可以通过SPI接口电连接。所 述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述人工智能芯片可以包 括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述人工智能芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述人工智能芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
在一种可能的实现方式中,公开了一种电子设备,其包括了上述人工智能芯片。电子 设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、 行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、 手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、 B超仪和/或心电图仪。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分, 可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描 述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些 技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
依据以下条款可更好地理解前述内容:
A1、一种Winograd卷积运算方法,所述方法包括:
在基于预配置的Winograd卷积算法对神经网络进行训练的过程中,分别将所述神经网络中第j层的反向输入梯度以及第j层的正向输入特征数据的正变换运算拆解 为求和运算,以基于求和运算获取所述第j层的反向输入梯度正变换运算的变换结果, 以及第j层的正向输入特征数据正变换运算的变换结果;
对第j层的反向输入梯度正变换运算的变换结果和第j层的正向输入特征数据正变换运算的变换结果执行对位乘法运算,获得第一乘法运算结果;
将第一乘法运算结果的逆变换运算拆解为求和运算,并将求和运算所得结果作为第j层的权值差;
根据所述第j层的权值差完成所述神经网络的训练。
A2、根据条款A1所述的方法,所述方法还包括:
在基于预配置的Winograd卷积算法对神经网络进行训练的过程中,分别将第j 层的反向输入梯度以及第j层的权值数据的正变换运算拆解为求和运算,以基于求和 运算获取所述第j层的反向输入梯度正变换运算的变换结果,以及所述第j层的权值 数据正变换运算的变换结果;
对所述第j层的反向输入梯度正变换运算的变换结果和所述第j层的权值数据正变换运算的变换结果执行对位乘法运算,获得第二乘法运算结果;
将第二乘法运算结果的逆变换运算拆解为求和运算,并将求和运算所得结果作为第j层的反向输出梯度。
A3、根据条款A1或A2所述的方法,所述方法还包括:
基于所述预配置的Winograd算法,分别将第i层的正向输入特征数据以及第i 层的权值数据的正变换运算拆解为求和运算,以获取所述第i层的正向输入特征数据 正变换运算的变换结果,以及所述第i层的权值数据正变换运算的变换结果;
对所述第i层的正向输入特征数据正变换运算的变换结果和所述第i层的权值数据正变换运算的变换结果执行对位乘法运算,获得第三乘法运算结果;
对第三乘法运算结果的逆变换运算拆解为求和运算,并将求和运算所得结果作为第i层的正向输出特征数据。
A4、根据条款A1至A3任一项所述的方法,所述方法还包括:
将正变换运算或逆变换运算拆解为求和运算的处理方式为:将目标数据拆解为与所述目标数据对应的多个子张量,并对所述多个子张量进行变换运算并求和,根据 求和运算的结果得到所述目标数据对应的变换结果;
所述目标数据包括如下一种:反向输入梯度、正向输入特征数据、权值数据、第一乘 法运算结果、第二乘法运算结果和第三乘法运算结果。
A5、根据条款A4所述的方法,所述目标数据对应的多个子张量之和为所述目标数据;
所述多个子张量的个数与所述目标数据中非0元素的个数相同,每个所述子张量中有 单个非0元素,且在所述子张量中的非0元素与在所述目标数据中对应位置的非0元素相 同。
A6、根据条款A4或A5所述的方法,所述对所述多个子张量进行变换运算并求和,根据求和运算的结果得到所述目标数据对应的变换结果,包括:
确定目标数据的各子张量对应的元子张量,其中,所述元子张量是将所述子张量的非 0元素置为1的张量;
获取各子张量对应的元子张量的变换结果;
将所述子张量中非0的元素值作为系数乘以对应的元子张量的变换结果,得到所述子 张量的变换结果;
将多个子张量的变换结果相加得到所述根据求和运算的结果得到对所述多个子张量 进行变换运算并求和,根据求和运算的结果得到对所述目标数据进行变换运算的变换结果。
A7、根据条款A6所述的方法,所所述获取各子张量对应的元子张量的变换结果,包括:
对于每一个所述子张量,将所述子张量对应的元子张量左边乘以左乘矩阵、右边乘以 右乘矩阵,得到所述元子张量的变换结果,其中,所述左乘矩阵和所述右乘矩阵都是由所 述子张量的规模以及变换类型确定的,其中所述变换类型包括正变换运算的变换类型和逆 变换运算的变换类型。
A8、一种Winograd卷积运算装置,包括:
数据接收模块,用于获取对神经网络进行训练的正向输入特征数据;
变换模块,用于在训练模块基于预配置的Winograd卷积算法对神经网络进行训练的过程中,分别将所述神经网络中第j层的反向输入梯度以及第j层的正向输入特 征数据的正变换运算拆解为求和运算,以基于求和运算获取所述第j层的反向输入梯 度正变换运算的变换结果,以及第j层的正向输入特征数据正变换运算的变换结果;
对位乘模块,用于对第j层的反向输入梯度正变换运算的变换结果和第j层的正向输入特征数据正变换运算的变换结果执行对位乘法运算,获得第一乘法运算结果;
变换模块,还用于将第一乘法运算结果的逆变换运算拆解为求和运算,并将求和运算所得结果作为第j层的权值差;
权值更新模块,用于根据所述第j层的权值差完成所述神经网络的训练。
A9、根据条款A8所述的装置,
变换模块,还用于在基于预配置的Winograd卷积算法对神经网络进行训练的过程中,分别将第j层的反向输入梯度以及第j层的权值数据的正变换运算拆解为求和 运算,以基于求和运算获取所述第j层的反向输入梯度正变换运算的变换结果,以及 所述第j层的权值数据正变换运算的变换结果;
对位乘模块,还用于对所述第j层的反向输入梯度正变换运算的变换结果和所述第j层的权值数据正变换运算的变换结果执行对位乘法运算,获得第二乘法运算结果;
变换模块,还用于将第二乘法运算结果的逆变换运算拆解为求和运算,并将求和运算所得结果作为第j层的反向输出梯度。
A10、根据条款A8或A9所述的装置,
变换模块,还用于基于所述预配置的Winograd算法,分别将第i层的正向输入 特征数据以及第i层的权值数据的正变换运算拆解为求和运算,以获取所述第i层的 正向输入特征数据正变换运算的变换结果,以及所述第i层的权值数据正变换运算的 变换结果;
对位乘模块,还用于对所述第i层的正向输入特征数据正变换运算的变换结果和所述第i层的权值数据正变换运算的变换结果执行对位乘法运算,获得第三乘法运算 结果;
变换模块,还用于对第三乘法运算结果的逆变换运算拆解为求和运算,并将求和运算所得结果作为第i层的正向输出特征数据。
A11、根据条款A8至A10任一项所述的装置,所述变换模块具体用于:
将正变换运算或逆变换运算拆解为求和运算的处理方式为:将目标数据拆解为与所 述目标数据对应的多个子张量,并对所述多个子张量进行变换运算并求和,根据求和运算 的结果得到所述目标数据对应的变换结果;
所述目标数据包括如下一种:反向输入梯度、正向输入特征数据、权值数据、第一乘 法运算结果、第二乘法运算结果和第三乘法运算结果。
A12、根据条款A11所述的装置,所述目标数据对应的多个子张量之和为所述目标数 据;
所述多个子张量的个数与所述目标数据中非0元素的个数相同,每个所述子张量中有 单个非0元素,且在所述子张量中的非0元素与在所述目标数据中对应位置的非0元素相 同。
A13、根据条款A10或A11所述的装置,所述变换模块具体用于:
确定目标数据的各子张量对应的元子张量,其中,所述元子张量是将所述子张量的非 0元素置为1的张量;
获取各子张量对应的元子张量的变换结果;
将所述子张量中非0的元素值作为系数乘以对应的元子张量的变换结果,得到所述子 张量的变换结果;
将多个子张量的变换结果相加得到所述根据求和运算的结果得到对所述多个子张量 进行变换运算并求和,根据求和运算的结果得到对所述目标数据进行变换运算的变换结果。
A14、根据条款A13所述的装置,所述变换模块具体用于:
对于每一个所述子张量,将所述子张量对应的元子张量左边乘以左乘矩阵、右边乘以 右乘矩阵,得到所述元子张量的变换结果,其中,所述左乘矩阵和所述右乘矩阵都是由所 述子张量的规模以及变换类型确定的,其中所述变换类型包括正变换运算的变换类型和逆 变换运算的变换类型。
A15、一种人工智能芯片,所述芯片包括如条款A6至A10中任意一项所述的Winograd 卷积运算装置。
A16、一种电子设备,所述电子设备包括如条款A15所述的人工智能芯片。
A17、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款A15所述 的人工智能芯片;
其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;
所述控制器件,用于对所述人工智能芯片的状态进行监控。
A18、根据条款A17所述的板卡,所述存储器件包括:多组存储单元,每一组所述存储 单元与所述人工智能芯片通过总线连接,所述存储单元为:DDR SDRAM;
所述芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
所述接口装置为:标准PCIE接口。
本申请提供的Winograd运算方法及相关产品,通过在基于预配置的Winograd卷积算法对神经网络进行训练的过程中,分别将所述神经网络中第j层的反向输入梯度 以及第j层的正向输入特征数据的正变换运算拆解为求和运算,以基于求和运算获取 所述第j层的反向输入梯度正变换运算的变换结果,以及第j层的正向输入特征数据 正变换运算的变换结果;对第j层的反向输入梯度正变换运算的变换结果和第j层的 正向输入特征数据正变换运算的变换结果执行对位乘法运算,获得第一乘法运算结果; 将第一乘法运算结果的逆变换运算拆解为求和运算,并将求和运算所得结果作为第j 层的权值差;根据所述第j层的权值差完成所述神经网络的训练。与现有技术相比, 本申请利用了Winograd算法中将大量矩阵乘法运算转换为矩阵加法运算的特点,有 效提高了对于神经网络的训练数据进行处理的运算效率,降低了训练过程所占用的运 算资源。
以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施 方式进行了阐述,以上实施例的说明仅用于帮助理解本公开的方法及其核心思想。同时, 本领域技术人员依据本公开的思想,基于本公开的具体实施方式及应用范围上做出的改变 或变形之处,都属于本公开保护的范围。综上所述,本说明书内容不应理解为对本公开的 限制。

Claims (18)

1.一种Winograd卷积运算方法,其特征在于,所述方法包括:
在基于预配置的Winograd卷积算法对神经网络进行训练的过程中,分别将所述神经网络中第j层的反向输入梯度以及第j层的正向输入特征数据的正变换运算拆解为求和运算,以基于求和运算获取所述第j层的反向输入梯度正变换运算的变换结果,以及第j层的正向输入特征数据正变换运算的变换结果;
对第j层的反向输入梯度正变换运算的变换结果和第j层的正向输入特征数据正变换运算的变换结果执行对位乘法运算,获得第一乘法运算结果;
将第一乘法运算结果的逆变换运算拆解为求和运算,并将求和运算所得结果作为第j层的权值差;
根据所述第j层的权值差完成所述神经网络的训练。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在基于预配置的Winograd卷积算法对神经网络进行训练的过程中,分别将第j层的反向输入梯度以及第j层的权值数据的正变换运算拆解为求和运算,以基于求和运算获取所述第j层的反向输入梯度正变换运算的变换结果,以及所述第j层的权值数据正变换运算的变换结果;
对所述第j层的反向输入梯度正变换运算的变换结果和所述第j层的权值数据正变换运算的变换结果执行对位乘法运算,获得第二乘法运算结果;
将第二乘法运算结果的逆变换运算拆解为求和运算,并将求和运算所得结果作为第j层的反向输出梯度。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
基于所述预配置的Winograd算法,分别将第i层的正向输入特征数据以及第i层的权值数据的正变换运算拆解为求和运算,以获取所述第i层的正向输入特征数据正变换运算的变换结果,以及所述第i层的权值数据正变换运算的变换结果;
对所述第i层的正向输入特征数据正变换运算的变换结果和所述第i层的权值数据正变换运算的变换结果执行对位乘法运算,获得第三乘法运算结果;
对第三乘法运算结果的逆变换运算拆解为求和运算,并将求和运算所得结果作为第i层的正向输出特征数据。
4.根据权利要求1-3任一项所述的方法,其特征在于,将正变换运算或逆变换运算拆解为求和运算的处理方式为:将目标数据拆解为与所述目标数据对应的多个子张量,并对所述多个子张量进行变换运算并求和,根据求和运算的结果得到所述目标数据对应的变换结果;
所述目标数据包括如下一种:反向输入梯度、正向输入特征数据、权值数据、第一乘法运算结果、第二乘法运算结果和第三乘法运算结果。
5.根据权利要求4所述的方法,其特征在于,所述目标数据对应的多个子张量之和为所述目标数据;
所述多个子张量的个数与所述目标数据中非0元素的个数相同,每个所述子张量中有单个非0元素,且在所述子张量中的非0元素与在所述目标数据中对应位置的非0元素相同。
6.根据权利要求4或5所述的方法,其特征在于,所述对所述多个子张量进行变换运算并求和,根据求和运算的结果得到所述目标数据对应的变换结果,包括:
确定目标数据的各子张量对应的元子张量,其中,所述元子张量是将所述子张量的非0元素置为1的张量;
获取各子张量对应的元子张量的变换结果;
将所述子张量中非0的元素值作为系数乘以对应的元子张量的变换结果,得到所述子张量的变换结果;
将多个子张量的变换结果相加得到所述根据求和运算的结果得到对所述多个子张量进行变换运算并求和,根据求和运算的结果得到对所述目标数据进行变换运算的变换结果。
7.根据权利要求6所述的方法,其特征在于,所述获取各子张量对应的元子张量的变换结果,包括:
对于每一个所述子张量,将所述子张量对应的元子张量左边乘以左乘矩阵、右边乘以右乘矩阵,得到所述元子张量的变换结果,其中,所述左乘矩阵和所述右乘矩阵都是由所述子张量的规模以及变换类型确定的,其中所述变换类型包括正变换运算的变换类型和逆变换运算的变换类型。
8.一种Winograd卷积运算装置,其特征在于,包括:
数据接收模块,用于获取对神经网络进行训练的正向输入特征数据;
变换模块,用于在训练模块基于预配置的Winograd卷积算法对神经网络进行训练的过程中,分别将所述神经网络中第j层的反向输入梯度以及第j层的正向输入特征数据的正变换运算拆解为求和运算,以基于求和运算获取所述第j层的反向输入梯度正变换运算的变换结果,以及第j层的正向输入特征数据正变换运算的变换结果;
对位乘模块,用于对第j层的反向输入梯度正变换运算的变换结果和第j层的正向输入特征数据正变换运算的变换结果执行对位乘法运算,获得第一乘法运算结果;
变换模块,还用于将第一乘法运算结果的逆变换运算拆解为求和运算,并将求和运算所得结果作为第j层的权值差;
权值更新模块,用于根据所述第j层的权值差完成所述神经网络的训练。
9.根据权利要求8所述的装置,其特征在于,
变换模块,还用于在基于预配置的Winograd卷积算法对神经网络进行训练的过程中,分别将第j层的反向输入梯度以及第j层的权值数据的正变换运算拆解为求和运算,以基于求和运算获取所述第j层的反向输入梯度正变换运算的变换结果,以及所述第j层的权值数据正变换运算的变换结果;
对位乘模块,还用于对所述第j层的反向输入梯度正变换运算的变换结果和所述第j层的权值数据正变换运算的变换结果执行对位乘法运算,获得第二乘法运算结果;
变换模块,还用于将第二乘法运算结果的逆变换运算拆解为求和运算,并将求和运算所得结果作为第j层的反向输出梯度。
10.根据权利要求8或9所述的装置,其特征在于,
变换模块,还用于基于所述预配置的Winograd算法,分别将第i层的正向输入特征数据以及第i层的权值数据的正变换运算拆解为求和运算,以获取所述第i层的正向输入特征数据正变换运算的变换结果,以及所述第i层的权值数据正变换运算的变换结果;
对位乘模块,还用于对所述第i层的正向输入特征数据正变换运算的变换结果和所述第i层的权值数据正变换运算的变换结果执行对位乘法运算,获得第三乘法运算结果;
变换模块,还用于对第三乘法运算结果的逆变换运算拆解为求和运算,并将求和运算所得结果作为第i层的正向输出特征数据。
11.根据权利要求8-10任一项所述的装置,其特征在于,所述变换模块具体用于:
将正变换运算或逆变换运算拆解为求和运算的处理方式为:将目标数据拆解为与所述目标数据对应的多个子张量,并对所述多个子张量进行变换运算并求和,根据求和运算的结果得到所述目标数据对应的变换结果;
所述目标数据包括如下一种:反向输入梯度、正向输入特征数据、权值数据、第一乘法运算结果、第二乘法运算结果和第三乘法运算结果。
12.根据权利要求11所述的装置,其特征在于,所述目标数据对应的多个子张量之和为所述目标数据;
所述多个子张量的个数与所述目标数据中非0元素的个数相同,每个所述子张量中有单个非0元素,且在所述子张量中的非0元素与在所述目标数据中对应位置的非0元素相同。
13.根据权利要求10或11所述的装置,其特征在于,所述变换模块具体用于:
确定目标数据的各子张量对应的元子张量,其中,所述元子张量是将所述子张量的非0元素置为1的张量;
获取各子张量对应的元子张量的变换结果;
将所述子张量中非0的元素值作为系数乘以对应的元子张量的变换结果,得到所述子张量的变换结果;
将多个子张量的变换结果相加得到所述根据求和运算的结果得到对所述多个子张量进行变换运算并求和,根据求和运算的结果得到对所述目标数据进行变换运算的变换结果。
14.根据权利要求13所述的装置,其特征在于,所述变换模块具体用于:
对于每一个所述子张量,将所述子张量对应的元子张量左边乘以左乘矩阵、右边乘以右乘矩阵,得到所述元子张量的变换结果,其中,所述左乘矩阵和所述右乘矩阵都是由所述子张量的规模以及变换类型确定的,其中所述变换类型包括正变换运算的变换类型和逆变换运算的变换类型。
15.一种人工智能芯片,其特征在于,所述芯片包括如权利要求6-10中任意一项所述的Winograd卷积运算装置。
16.一种电子设备,其特征在于,所述电子设备包括如权利要求15所述的人工智能芯片。
17.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求15所述的人工智能芯片;
其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;
所述控制器件,用于对所述人工智能芯片的状态进行监控。
18.根据权利要求17所述的板卡,其特征在于,
所述存储器件包括:多组存储单元,每一组所述存储单元与所述人工智能芯片通过总线连接,所述存储单元为:DDR SDRAM;
所述芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
所述接口装置为:标准PCIE接口。
CN201911061089.1A 2019-11-01 2019-11-01 Winograd卷积运算方法及相关产品 Active CN112784951B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201911061089.1A CN112784951B (zh) 2019-11-01 2019-11-01 Winograd卷积运算方法及相关产品
PCT/CN2020/113168 WO2021082725A1 (zh) 2019-11-01 2020-09-03 Winograd卷积运算方法及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911061089.1A CN112784951B (zh) 2019-11-01 2019-11-01 Winograd卷积运算方法及相关产品

Publications (2)

Publication Number Publication Date
CN112784951A true CN112784951A (zh) 2021-05-11
CN112784951B CN112784951B (zh) 2024-04-19

Family

ID=75715762

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911061089.1A Active CN112784951B (zh) 2019-11-01 2019-11-01 Winograd卷积运算方法及相关产品

Country Status (2)

Country Link
CN (1) CN112784951B (zh)
WO (1) WO2021082725A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114399036B (zh) * 2022-01-12 2023-08-22 电子科技大学 一种基于一维Winograd算法的高效卷积计算单元
CN116415103B (zh) * 2023-06-09 2023-09-05 之江实验室 一种数据处理的方法、装置、存储介质以及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180189237A1 (en) * 2016-12-30 2018-07-05 Intel Corporation Winograd algorithm on a matrix processing architecture
CN109388777A (zh) * 2017-08-07 2019-02-26 英特尔公司 一种用于经优化的Winograd卷积加速器的系统和方法
US20190149134A1 (en) * 2019-01-14 2019-05-16 Intel Corporation Filter optimization to improve computational efficiency of convolution operations
CN110222760A (zh) * 2019-06-04 2019-09-10 东南大学 一种基于winograd算法的快速图像处理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180189237A1 (en) * 2016-12-30 2018-07-05 Intel Corporation Winograd algorithm on a matrix processing architecture
CN109388777A (zh) * 2017-08-07 2019-02-26 英特尔公司 一种用于经优化的Winograd卷积加速器的系统和方法
US20190149134A1 (en) * 2019-01-14 2019-05-16 Intel Corporation Filter optimization to improve computational efficiency of convolution operations
CN110222760A (zh) * 2019-06-04 2019-09-10 东南大学 一种基于winograd算法的快速图像处理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ANDREW LAVIN: "Fast Algorithms for Convolutional Neural Networks", ARXIV, pages 1 - 9 *
BUYI_SHIZI: "caffe中backward过程总结", pages 1 - 3, Retrieved from the Internet <URL:https://blog.csdn.net/Buyi_Shizi/article/details/51512848> *

Also Published As

Publication number Publication date
WO2021082725A1 (zh) 2021-05-06
CN112784951B (zh) 2024-04-19

Similar Documents

Publication Publication Date Title
US11341399B2 (en) Reducing power consumption in a neural network processor by skipping processing operations
CN109685201B (zh) 运算方法、装置及相关产品
JP2020126597A (ja) 計算装置と計算方法
US20200110604A1 (en) Energy-efficient memory systems and methods
US20220108150A1 (en) Method and apparatus for processing data, and related products
WO2022111002A1 (zh) 用于训练神经网络的方法、设备和计算机可读存储介质
WO2021082725A1 (zh) Winograd卷积运算方法及相关产品
CN111125617A (zh) 数据处理方法、装置、计算机设备和存储介质
US10747845B2 (en) System, method and apparatus for computationally efficient data manipulation
WO2021083101A1 (zh) 数据处理方法、装置及相关产品
CN109740730B (zh) 运算方法、装置及相关产品
CN112889072A (zh) 用于降低功率消耗的系统、方法和装置
CN112766471B (zh) 运算装置及相关产品
CN112766473B (zh) 运算装置及相关产品
CN113033813A (zh) 数据处理方法、装置、计算机设备和存储介质
US20220414183A1 (en) Winograd convolution operation method, apparatus, and device, and storage medium
WO2021082723A1 (zh) 运算装置
CN113112009B (zh) 用于神经网络数据量化的方法、装置和计算机可读存储介质
CN112784207B (zh) 运算方法及相关产品
WO2021082722A1 (zh) 运算装置、方法及相关产品
CN113536221B (zh) 运算方法、处理器以及相关产品
WO2021212972A1 (zh) 运算方法、处理器以及相关产品
CN113536219B (zh) 运算方法、处理器以及相关产品
US20230091541A1 (en) Data quantization processing method and apparatus, electronic device and storage medium
CN113111997A (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
GR01 Patent grant
GR01 Patent grant