CN113496269A - 神经网络装置 - Google Patents

神经网络装置 Download PDF

Info

Publication number
CN113496269A
CN113496269A CN202011291921.XA CN202011291921A CN113496269A CN 113496269 A CN113496269 A CN 113496269A CN 202011291921 A CN202011291921 A CN 202011291921A CN 113496269 A CN113496269 A CN 113496269A
Authority
CN
China
Prior art keywords
winograd
layer
value
neural network
activation
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
CN202011291921.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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics 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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN113496269A publication Critical patent/CN113496269A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/144Prime factor Fourier transforms, e.g. Winograd transforms, number theoretic transforms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/156Correlation function computation including computation of convolution operations using a domain transform, e.g. Fourier transform, polynomial transform, number theoretic transform
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Discrete Mathematics (AREA)
  • Neurology (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)

Abstract

公开了一种神经网络装置,所述神经网络装置包括:第一存储器,针对CNN中的至少一个层的每个层,存储该层的预定数量的输入信道中的每个的IFM的激活值;流水线结构,从该层的预定数量的输入信道中的每个中的IFM选择激活值,流水线结构将被选激活值即时转换到Winograd域;第二存储器,存储该层的预定数量的输入信道中的每个的Winograd滤波器的元素;乘法器,将该层的Winograd域中的转换后的激活值与来自Winograd滤波器的被选元素相乘,以形成Winograd域中的对应的乘积值,Winograd滤波器中的每个被选元素对应于Winograd域中的激活值;加法器树,对该层的Winograd域中的各个乘积值进行求和以形成Winograd域中的特征图的元素;逆Winograd转换器,对Winograd域中的特征图的元素即时进行逆Winograd转换,以形成该层的OFM。

Description

神经网络装置
本申请要求于2020年3月20日提交的第62/992,899号美国临时申请的优先权权益,所述美国临时申请的公开通过引用全部包含于此。
技术领域
在此公开的主题涉及神经网络装置。
背景技术
神经网络装置(例如,神经网络芯片)是用于执行神经网络的装置。神经网络装置通常通过设置在其中的加法器和乘法器执行神经网络的运算,其性能速度有待提高。
发明内容
示例实施例提供一种神经网络装置,所述神经网络装置包括:第一存储器,针对卷积神经网络(CNN)中的至少一个层的每个层,存储所述层的预定数量的输入信道中的每个的IFM的激活值,每个IFM具有第一预定大小;流水线结构,从所述层的预定数量的输入信道中的每个中的IFM选择激活值,流水线结构将被选激活值即时转换到Winograd域;第二存储器,存储所述层的预定数量的输入信道中的每个的Winograd滤波器的元素,每个Winograd滤波器对应于具有第一预定大小的内核滤波器;乘法器,将所述层的Winograd域中的转换后的激活值与来自Winograd滤波器的被选元素相乘,以形成Winograd域中的对应的乘积值,Winograd滤波器中的每个被选元素对应于Winograd域中的激活值;加法器树,对所述层的Winograd域中的各个乘积值进行求和以形成Winograd域中的特征图的元素;和逆Winograd转换器,对Winograd域中的特征图的元素即时进行逆Winograd转换,以形成所述层的输出特征图(OFM),OFM具有第二预定大小。
示例实施例提供一种用于图像识别的方法,所述方法包括:获得用于生成卷积神经网络(CNN)的输入特征图(IFM)的输入图像;和基于输入图像执行CNN来获得图像识别结果,其中,获得图像识别结果的步骤包括:针对CNN中的至少一个层的每个层,选择所述层的预定数量的输入信道中的每个的IFM中的激活值,每个IFM具有第一预定大小,将被选激活值即时转换到Winograd域,选择预定数量的输入信道中的每个中的Winograd滤波器中的元素,每个Winograd滤波器对应于具有第一预定大小的内核滤波器,Winograd滤波器中的每个被选元素对应于Winograd域中的激活值,将Winograd域中的转换后的激活值与Winograd滤波器中的对应的元素相乘,以形成Winograd域中的对应的乘积值,从预定数量的输入信道中的每个中的IFM重复地选择激活值,将被选激活值即时转换到Winograd域,选择Winograd滤波器中的与Winograd域中的当前转换后的激活值对应的元素,并且将当前转换后的激活值与对应的元素相乘以形成Winograd域中的对应的乘积值,直到IFM的全部激活值已经被转换并且与对应的元素相乘为止,对Winograd域中的各个乘积值进行求和,以形成Winograd域中的特征图的元素,和对Winograd域中的特征图的元素即时进行逆Winograd转换以形成所述层的OFM,OFM具有第二预定大小。
CNN的第一层可获得输入图像作为第一层的IFM,CNN的前一层的OFM可以是CNN的后一层的IFM。
被选激活值在IFM中的位置可以是与从中选择其他的被选激活值的其他的IFM中的被选激活值的位置相同的位置;并且其中,从中选择元素的Winograd滤波器中的被选元素的位置可以是与从中选择另外的元素的另外的Winograd滤波器中的另外的被选元素的位置相同的位置。
可针对预定数量的输入信道并行执行以下步骤:从预定数量的输入信道中的每个中的IFM重复地选择激活值,将被选激活值即时转换到Winograd域,选择Winograd滤波器中的与Winograd域中的当前转换后的激活值对应的元素,并且将当前转换后的激活值与对应的元素相乘以形成Winograd域中的对应的乘积值。
第一预定大小的IFM和第一预定大小的Winograd滤波器可包括4×4阵列,第二预定大小的OFM可包括2×2阵列。
输入信道的预定数量可以是16。
第一预定大小的每个Winograd滤波器可对应于3×3权重内核、1×3权重内核和3×1权重内核中的一个。
第一预定大小的每个IFM可包括第三预定数量的行和和第四预定数量的列,第三预定数量和第四预定数量大于1,并且其中,将被选激活值即时转换到Winograd域的步骤可包括:选择IFM的行中的两个第一激活值;将两个被选第一激活值转换为第一中间值;选择两个第二激活值,每个第二激活值从第一激活值已经被从中选择的列来选择;将被选两个第二激活值转换为第二中间值;和可将第一中间值和第二中间值进行组合来将被选激活值即时转换到Winograd域。
可以以流水线的方式执行将被选激活值即时转换到Winograd域的步骤。
示例实施例提供一种训练用于图像识别的卷积神经网络(CNN)的方法,所述方法包括:基于作为训练数据的输入图像执行CNN,从CNN生成输出数据;基于生成的输出数据来更新CNN的参数;和通过重复地执行生成的步骤和更新的步骤来训练CNN,其中,生成输出数据的步骤包括:针对CNN中的至少一个层的每个层,选择所述层的预定数量的输入信道中的每个中的输入特征图(IFM)中的激活值,每个IFM具有第一预定大小,将被选激活值即时转换到Winograd域,选择预定数量的输入信道中的每个中的Winograd滤波器中的元素,每个Winograd滤波器具有第一预定大小,并且Winograd滤波器中的每个被选元素对应于Winograd域中的转换后的激活值,将Winograd域中的转换后的激活值与对应的元素相乘,以形成Winograd域中的对应的乘积值,从预定数量的输入信道中的每个中的IFM重复地选择激活值,将被选激活值即时转换到Winograd域,选择Winograd滤波器中的与Winograd域中的当前转换后的激活值对应的元素,并且将Winograd域中的当前转换后的激活值与对应的元素相乘以形成Winograd域中的对应的乘积值,直到IFM中的全部激活值已经被转换并且与对应的元素相乘为止,对Winograd域中的各个乘积值进行求和,以形成Winograd域中的特征图的元素,和对Winograd域中的特征图即时进行逆Winograd转换以形成所述层的OFM,OFM具有第二预定大小。
被选激活值在IFM中的位置可以是与从中选择另外的被选激活值的另外IFM中的另外的被选激活值的位置相同的位置,并且其中,从中选择元素的Winograd滤波器中的选择的元素的位置可以是与从中选择另外的元素的另外的Winograd滤波器中的另外的被选元素的位置相同的位置。
可针对预定数量的输入信道并行执行以下步骤:重复地选择激活值,对被选激活值进行转换,选择Winograd滤波器中的元素,并且将转换后的激活值与对应的元素相乘。
第一预定大小的IFM和第一预定大小的Winograd滤波器可包括4×4阵列,第二预定大小的OFM可包括2×2阵列。
输入信道的预定数量可以是16。
第一预定大小的每个Winograd滤波器可对应于3×3权重内核、1×3权重内核和3×1权重内核中的一个。
第一预定大小的每个IFM可包括第三预定数量的行和和第四预定数量的列,第三预定数量和第四预定数量大于1,并且其中,将被选激活值即时转换到Winograd域的步骤可包括:选择IFM的行中的两个第一激活值;将两个被选第一激活值转换为第一中间值;选择两个第二激活值,每个第二激活值从第一激活值已经被从中选择的列来选择;将被选两个第二激活值转换为第二中间值;和将第一中间值和第二中间值进行组合来将被选激活值即时转换到Winograd域。
可以以流水线的方式执行将被选激活值即时转换到Winograd域的步骤。
附图说明
在下面的部分中,将参照附图中示出的示例性实施例来描述在此公开的主题的方面,其中:
图1A描绘根据在此公开的主题的可用于对激活值和权重值进行卷积的CNN的架构的示例实施例的框图;
图1B描绘当跨越对应的示例IFM的元素来形成示例OFM的四个元素时的3×3权重内核的四个位置;
图1C描绘用于形成示例OFM的四个元素的Winograd滤波器相对于对应的示例IFM的元素的位置;
图1D描绘基于等式(1)至等式(7)对4×4矩阵的元素(诸如,激活值)执行的以将元素转换到Winograd域的运算;
图2A描绘根据图1A中描绘的CNN的架构的可用于将一组IFM(或通道(lane))的激活元素值与对应的权重值元素相乘的系统的示例实施例的功能性框图;
图2B描绘根据图1A中描绘的CNN的架构的可进行操作来将IFM的激活元素值与对应的权重值元素相乘的系统的示例实施例的另一功能性框图;
图3A描绘根据在此公开的主题的将激活值即时转换到Winograd域使得激活元素与Winograd滤波器的元素可被卷积的系统的示例实施例的功能性框图;
图3B描绘根据在此公开的主题的在第一周期期间的行的细节;
图3C描绘根据在此公开的主题的在第二周期期间的图3B的热行(hot row);
图3D是示出根据在此公开的主题的热行301a的操作的附加细节的表;
图4描绘根据在此公开的主题的逆Winograd转换器的示例实施例的功能性框图,逆Winograd转换器可将例如图2A中的加法器树的输出从Winograd域即时逆Winograd转换回激活值的原始域;和
图5描绘根据在此公开的主题的包括将IFM的激活值即时转换到Winograd域的CNN的电子装置。
具体实施方式
在以下具体实施方式中,阐述了许多具体细节以便提供对公开的透彻理解。然而,本领域技术人员将理解,可在没有这些具体细节的情况下实践公开的方面。在其他实例中,没有详细描述公知的方法、过程、组件和电路,以不模糊在此公开的主题。
贯穿本说明书的对“一个实施例”或“实施例”的引用表示:结合该实施例描述的特定特征、结构或特性可包括在在此公开的至少一个实施例中。因此,贯穿本说明书的不同地方的短语“在一个实施例中”或“在实施例中”或“根据一个实施例”(或具有类似含义的其他短语)的出现可不一定都指示同一实施例。此外,在一个或多个实施例中,可以以任何合适的方式组合特定的特征、结构或特性。在这方面,如在此使用的,词“示例性”表示“用作示例、实例或说明”。在此描述为“示例性”的任何实施例不应被解释为一定比其他实施例优选或有利。此外,根据在此的讨论的上下文,单数术语可包括对应的复数形式,并且复数术语可包括对应的单数形式。类似地,带有连字符的术语(例如,“二-维”、“预先-确定”、“特定-像素”等)可与对应的非带有连字符的版本(例如,“二维”、“预先确定”、“特定像素”等)偶尔可互换地使用,大写的词条(例如,“Counter Clock”、“Row Select”、“PIXOUT”等)可与对应的非大写的版本(例如,“counter clock”、“row select”、“pixout”等)可互换地使用。这样的偶尔可互换的使用不应被认为彼此不一致。
还应注意,在此示出和讨论的各种附图(包括组件图)仅为了说明的目的,并且不按比例绘制。类似地,各种波形和时序图仅为了说明的目的而被示出。例如,为了清楚起见,一些元件的尺寸可能相对于其他元件被夸大。此外,如果认为合适,则在附图中重复参考标号以指示对应的和/或类似的元件。
在此使用的术语仅为了描述一些示例实施例的目的,而不意在限制要求权利的主题。除非上下文另有清楚地指示,否则如在这里使用的单数形式也意在包括复数形式。还将理解,术语“包括”和/或“包含”用在本说明书中时,表明存在陈述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或增加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组。除非这样清楚地定义,否则如在此使用的术语“第一”、“第二”等用作它们之后的名词的标签,并且不表示任何类型的顺序(例如,空间、时间、逻辑等)。此外,可在两个或更多个附图之间使用相同的参考标号来表示具有相同或相似功能的部件、组件、块、电路、单元或模块。然而,这样的用法仅为了简化说明和易于讨论,并不表示这样的组件或单元的构造或结构细节在所有实施例之间都是相同的或者这样共同引用的部件/模块是实现在此公开的示例实施例中的一些示例实施例的唯一方式。
将理解,当元件或层被称为在另一元件或层上、“连接到”或者“结合到”另一元件或层时,它可直接在该另一元件或层上、直接连接到或者直接结合到该另一元件或层,或者可存在中间元件或层。相反,当元件或层被称为“直接在”另一元件或层“上”、“直接连接到”或者“直接结合到”另一元件或层时,不存在中间元件或层。相同的标号始终表示相同的元件。如在此使用的,术语“和/或”包括相关联的所列项中的一个或多个的任何组合和全部组合。
除非另有定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与由本主题所属领域的普通技术人员通常理解的含义相同的含义。还将理解,除非在此清楚地如此定义,否则术语(诸如通用词典中定义的术语)应被解释为具有与它们在相关领域的上下文中的含义一致的含义,并且将不被理想化或过于形式化地解释。
在此公开的主题允许激活值被即时(on-the-fly)(或称为实时)转换到Winograd域,使得当将Winograd域中的激活值与权重值进行卷积时所执行的减少的乘法运算的数量可用于提高CNN的性能速度并且降低CNN的功耗。
图1A描绘根据在此公开的主题的可用于对激活值和权重值进行卷积的CNN的架构100的示例实施例的框图。架构100包括当进行卷积时生成多个OFM 103的多个权重内核(或滤波器)102和多个IFM 101。在一个示例中,CNN的第一层可获得输入图像作为第一层的IFM,CNN的前一层的OFM可以是CNN的后一层的IFM。
如图1A中所描绘的那样,多个IFM 101可包括64个IFM,其中,每个IFM可以是112×112元素的IFM。每个IFM 101可被称为通道(lane)或被称为信道(channel)。IFM的元素还可被称为激活或被称为激活值。多个权重内核102可包括128个内核滤波器,其中,每个内核滤波器可包括64个3×3权重内核。多个OFM 103可包括128个OFM,其中,每个OFM可以是112×112元素的OFM。IFM、权重内核和OFM的数量可与图1A中指示的数量不同。此外,其他IFM和滤波器大小可被用于获得不同大小的OFM。在图1A中,D可指示输入信道的数量,H可指示IFM或OFM的高度,W可指示IFM或OFM的宽度。
可用于从IFM 101和权重内核102生成OFM 103的处理可以如下。权重内核102的可包括64个3×3权重内核的第一组102a可被选择,并且第一组的每个单独的权重内核与对应的IFM 101的3×3块(patch)相关联。例如,如图1A中所描绘的那样,64成员组102a中的每个单独的3×3的权重内核与64个IFM的对应的IFM 101的最左上3×3块相关联。每个3×3权重内核的元素与对应的3×3IFM块的元素逐元素相乘,以形成64个中间特征图(未示出)中的九个乘积值元素。对64个中间特征图中的每个中间特征图中的处于相同的对应的位置的乘积值元素进行求和,以形成第一OFM 103a的最左上位置处所指示的单个1×1块(或元素)103a1
然后,权重内核的第一组102a可跨IFM 101水平地向右移动(或跨步(stride))一个元素,权重滤波器的第一组102a可与对应的IFM 101的另一3×3块相关联。每个3×3权重内核的元素与新的IFM块集的对应的3×3IFM块的元素逐元素相乘,以形成64个中间特征图(再次,未示出)中的九个乘积值元素。对64个中间特征图中的每个中间特征图中的处于相同的对应的位置的乘积值元素进行求和,以形成OFM 103的将水平地位于块103a1的紧接在右侧的另一单个1×1块(元素)。权重滤波器的第一组102a可基于水平和垂直的步长跨IFM101水平地和垂直地移动(或跨步),以形成第一OFM 103a的各个元素中的全部。
权重内核的第二组102b被选择,并且第二组的每个单独的权重内核与对应的IFM101的3×3块相关联。例如,如图1A中将描绘的那样,64成员组102b中的每个单独的3×3的权重内核与64个IFM的对应的IFM 101的最左上3×3块相关联。每个3×3权重内核的元素与对应的3×3IFM块的元素逐元素相乘,以形成64个中间特征图(未示出)中的九个乘积值元素。对64个中间特征图中的每个中间特征图中的处于相同的对应的位置的乘积值元素进行求和,以形成第二OFM 103b的最左上位置处的单个1×1块(或元素)。
如前所述,权重内核的第二组102b可跨IFM 101水平地和垂直地跨步,以形成第二OFM 103b中的对应的块的元素。权重滤波器的128个组被选择并且应用于IFM 101,以形成128个OFM的元素。
图1B描绘当跨越对应的示例IFM 110的元素以形成示例OFM 113的四个元素时的3×3权重内核112的四个位置。由灰色阴影描绘的权重内核112可水平和垂直地移动以覆盖IFM 110的4×4块111。块111的每个单独的部分由不同方向的交叉影线来指示。OFM 113中的元素的交叉影线指示IFM 110中的从其形成OFM元素的4×4块的部分。OFM 113中的每个元素通过九个乘法运算和八个加法运算来形成。针对图1B中指示的四个OFM元素,总共36个乘法运算和32个加法运算被执行。每个乘法运算的相对复杂度(和功耗)显著大于加法运算的复杂度,因此形成OFM 113的单个元素的整体复杂度可通过仅参考用于形成元素的乘法运算的数量来良好地近似。因此,36个乘法运算在此将被称为需要被执行以形成图1B中指示的OFM 113的四个元素。
图1C描绘用于形成示例OFM 122的四个元素的Winograd滤波器121相对于对应的示例IFM 120的元素的位置。IFM 120中的元素已经被转换到Winograd域。Winograd滤波器121的4×4个元素已经从3×3权重滤波器(未示出)转换到Winograd域。因为IFM 120和Winograd滤波器121二者都在Winograd域中,所以OFM 122′(未示出,可指示Winograd滤波器的元素与Winograd域中的对应的IFM的元素逐元素相乘的中间结果)的元素也在Winograd域中。
图1C中OFM 122指示的四个元素对应于图1B中的OFM 113中的四个元素。为了形成OFM 122中的四个元素,在IFM 120的元素与Winograd滤波器121的元素之间执行逐元素乘法,从而导致总共16个乘法运算,这与当激活值和权重值不在Winograd域中时执行的36个乘法运算相比存在乘法运算上显著减少。当元素在Winograd域中时所执行的乘法运算的数量与当元素不在Winograd域中时所需的乘法运算的数量相比非常有利。
Winograd滤波器121的元素可被离线形成,因此在可用于对激活值和权重值进行卷积的架构(诸如,架构100)的推断操作期间不需要额外的开销。IFM的元素到Winograd域的转换以及结果OFM的转换是基于加法的运算,并且可如在此描述的那样被即时执行。
下面的等式提供用于将IFM的4×4块中的激活值转换到Winograd域的数学解释。在等式中,A是用于将IFM的4×4块转换到Winograd域的矩阵,AT是矩阵A的转置,act是激活值,w是权重值,i是索引。
Figure BDA0002784114830000091
Figure BDA0002784114830000092
Figure BDA0002784114830000093
A0=[1 0] (7)
图1D描绘基于等式(1)至等式(7)对4×4矩阵的元素(诸如,激活值)执行的以将元素转换到Winograd域的运算。更具体地,包含元素a至p的示例4×4矩阵(或IFM的块)在图1D中的150处被示出。示例矩阵在151处被部分转换到Winograd域,并且在152处被完全转换到Winograd域。在等式(2)至等式(5)中,IFMs可指示图像特征图。
一行元素到Winograd域的转换可如下执行。行的第一列中的值通过从行的第一列中的值减去行的第三列中的值来获得。行的第二列中的值通过将行的第二列中的值与第三列中的值相加来获得。行的第三列中的值通过从行的第三列中的值减去第二列中的值来获得。行的第四列中的值通过从行的第二列中的值减去第四列中的值来获得。可参照150处突出显示的一行元素到151处突出显示的一行元素来观察该序列。
如下通过对部分转换的矩阵151的列进行操作来继续转换。列的第一行中的值通过从列的第一行中的值减去列的第三行中的值来获得。列的第二行中的值通过将列的第二行中的值与第三行中的值相加来获得。列的第三行中的值通过从列的第三行中的值减去第二行中的值来获得。列的第四行中的值通过从列的第二行中的值减去第四行中的值来获得。可通过参照部分转换的矩阵151的第一列元素到152处突出显示的一列元素来观察该序列。
因为当CNN在推断模式下操作时权重值通常不改变,所以在CNN已经训练之后权重值可被离线转换到Winograd域并且被存储。然而,激活值在推断模式下确实改变,并且在推断模式下将激活值转换到Winograd域可以包括对存储器中的激活值的额外访问,这不是节能的。此外,将激活值转换到Winograd域并存储在推断模式操作期间使用的值可能对CNN的性能速度产生不利影响。
尽管3×3权重内核已经被用作示例,但是还可通过在此公开的技术使用的其他权重内核包括3×1权重内核和1×3权重内核。针对1×3权重内核和3×1权重内核,IFM的1×4块和4×1块分别被使用。与激活转换被应用到跟随着逐列转换的逐行转换的3×3权重内核情况相比,1×4IFM块的转换只是逐行转换,4×1IFM块的转换只是逐列转换。
图2A描绘根据图1A中描绘的CNN的架构100的可用于将一组IFM(或通道(lane))的激活元素值与对应的权重值元素相乘的系统(或称为神经网络装置)200的示例实施例的功能性框图。当激活值和权重值二者处于同一域中时系统200可被使用。系统200可被布置成处理例如16个IFM的组,并且可包括激活值缓冲器201、权重值缓冲器202、乘法器203、加法器树204和返回单元205。激活值缓冲器(或高速缓存)201和权重值缓冲器(或高速缓存)202可被组织成使得IFM的块的激活元素和对应的权重值可被并行访问。图2A中描绘的块可以是例如4×4块。因此,权重滤波器也可以是4×4权重滤波器。其他块和滤波器大小可被使用。图2A中使用的术语是:激活值由“Act”指示,在Act中,下标对应于通道或信道数量,上标对应于块中的位置。权重值由具有相同的下标和上标规则(convention)的“W”指示。
在一个示例中,系统200可针对多个输入信道并行执行以下步骤:在每个输入信道中从IFM重复地选择激活值,将被选激活值即时转换到Winograd域,选择Winograd滤波器中的与Winograd域中的当前转换后的激活值对应的元素,并且将当前转换后的激活值与对应的元素相乘以形成Winograd域中的对应的乘积值,直到IFM的全部激活值已经被转换并且与对应的元素相乘为止。乘法器203分别将激活值(例如,Winograd域中的转换后的激活值)与Winograd滤波器中的对应的权重值相乘。加法器树204将从乘法器203输出的结果乘积相加。加法器树204的输出是返回单元205的输入,返回单元205可将加法器树204的输出从Winograd域转换到激活值的原始域。返回单元205还可缓冲加法器树204的输出,使得输出可被加到其他加法器(未示出)的输出以在返回到存储器(未示出)之前形成OFM的元素,以用于在CNN的另一层进行后续处理。以这样的方式,执行CNN所需的乘法运算的数量减少,因此系统200执行CNN的性能速度可提高并且系统200的功耗可降低。在一个示例中,系统200可包括控制器(未示出),控制器可接收输入图像,并且可基于CNN的最后层的输出来输出图像识别结果或更新CNN的参数。在一个实施例中,系统200可基于作为训练数据的输入图像执行CNN,从CNN生成输出数据。系统200可基于输入图像基于Winograd滤波器计算输出数据。系统200可基于生成的输出数据来更新CNN的参数;并且通过重复地执行生成的步骤和更新的步骤来训练CNN。在一个示例中,当上述重复地执行的次数达到预定次数或者CNN的输出数据与目标数据之差达到预定精度时,CNN的训练被终止。
图2B描绘根据图1A中描绘的CNN的架构100的可进行操作以将IFM的激活元素值与对应的权重值元素相乘的系统200的示例实施例的另一功能性框图。如图2B中所描绘的那样,系统200包括n个组2100至210n-1,其中,每个组处理架构100的IFM的16个通道以产生OFM103。例如,如果一个组包括16个通道,并且架构100包括总共64个通道,则图2B中的n将等于4。图2B中的矩形211表示生成OFM 103的一个元素的功能性组件。
如前所述,因为转换处理可在CNN已经训练之后离线执行,所以将权重值转换到Winograd域可以是方便的。然而,另一方面,当CNN在推断模式下操作时,将激活值转换到Winograd域可对CNN的性能速度产生不利影响。在此公开的主题允许将激活值即时转换到Winograd域,使得在将Winograd域中的激活值与权重值进行卷积时执行的减少的乘法运算的数量可被用于改善CNN的性能速度和CNN的减少功耗两者。
图3A描绘根据在此公开的主题的(例如,以流水线的方式)将激活值即时转换到Winograd域使得激活元素与Winograd滤波器的元素可被卷积的系统300的示例实施例的功能性框图。系统300类似于图2B中的系统200,但是包括在301处指示的热行(hot row)(或称为流水线结构)。如图1D中所示,针对3×3权重内核的激活值的即时Winograd转换包括一维Winograd转换的两个阶段-关于每行的一个阶段以及关于每列的一个阶段。热行用作在两阶段转换期间存储中间结果的中间寄存器。在图3A中,系统300可包括n个组3100至310n-1
图3B描绘根据在此公开的主题在第一周期期间的热行301的行301a的细节。图3C描绘第二周期期间的热行301a。热行301a可包括第一处理元件(PE)302和第二PE 303。PE302可包括如所示连接的加法器304、第一复用器305和第二复用器306。可存在如所示连接在PE 302和PE 303之间的两个寄存器307和308,以保存从PE 302输出的中间结果。PE 303可包括如所示连接的加法器309。
参照图1D中示出的矩阵152和图3D中示出的表3,在第一周期(图3B)期间,元素a和c被选择并输入到加法器304。加法器304输出a-c,a-c存储在寄存器307中并且a-c被输入到加法器309。在一个示例中,在第二周期(图3C)期间,从元素a和c已经被从中选择的列选择元素,例如,元素i和k被选择并输入到加法器304。加法器304输出i-k,i-k存储在寄存器308中并且i-k被输入到加法器309。加法器309输出作为矩阵152中的最左上的元素(a-c)-(i-k)。
表3示出热行301a的操作的附加细节。表3中标记的时间的行指示按周期的时间。表3中标记的高速缓存控制的行指示在激活值高速缓存201中哪些激活值被选择,标记的热行控制的行指示热行如何被控制以输出Winograd域中的期望的激活值。行H1和H2指示两个热行。标记的Wino激活的行是在Winograd域中输出的激活值。在表3中,T可指示中间变量,ADD可指示加法器,STR可指示步长(stirde)。
表3中由斜影线指示的条目与热行301a的用于生成152处的矩阵的最左边的列中的激活值的操作相关,而由点指示的条目与热行301a用于生成152处矩阵的从左边开始的第二列中的激活值的操作相关。
图4描绘根据在此公开的主题的逆Winograd转换器的示例实施例的功能性框图,逆Winograd转换器可将加法器树204(图2A)的输出从Winograd域即时逆Winograd转换回激活值的原始域。也就是说,逆Winograd转换器400可将OFM 122(图1C)中指示的四个元素从Winograd域即时转换回它们的原始域。逆Winograd转换器400包括如所示连接的四个加法器401至404和四个累加器405至408。来自加法器树204的结果作为具有如图4中所示的符号变化的输入X,被输入到每个单独的加法器401至404。逆Winograd转换器400的功能对应于等式(1)的矩阵A以及如等式(4)中所示的转置AT
图5描绘根据在此公开的主题的包括将IFM的激活值即时转换到Winograd域的CNN的电子装置。电子装置500可用在但不限于计算装置、个人数字助理(PDA)、膝上型计算机、移动计算机、网络平板计算机、无线电话、移动电话、智能电话、数字音乐播放器、或者有线或无线电子装置中。电子装置500还可以是但不限于ADAS、移动装置成像系统、工业成像系统、机器人等的部分。电子装置500可包括通过总线570彼此连接的控制器510、输入/输出装置520(诸如但不限于,键盘、键区、显示器、触摸屏显示器、相机和/或图像传感器)、存储器530、接口540、图形处理器(GPU)550和神经网络装置560。控制器510可包括例如至少一个微处理器、至少一个数字信号处理器、至少一个微控制器等。存储器530可被配置为存储将由控制器530使用的命令代码或用户数据。
电子装置500和电子装置500的各种系统组件可包括神经网络装置560,神经网络装置560包括根据在此公开的主题的将IFM的激活值即时转换到Winograd域的CNN。接口540可被配置为包括被配置为使用RF信号向无线通信网络发送数据或从无线通信网络接收数据的无线接口。无线接口540可包括例如天线、无线收发器等。电子装置500还可用在通信系统的通信接口协议(诸如但不限于,码分多址(CDMA)、全球移动通信系统(GSM)、北美数字通信(NADC)、扩展时分多址(E-TDMA)、宽带CDMA(WCDMA)、CDMA2000、Wi-Fi、市政Wi-Fi(MuniWi-Fi)、蓝牙、数字增强无线通信(DECT)、无线通用串行总线(无线USB)、具有无缝切换的快速低延迟接入正交频分复用(快速OFDM)、IEEE 802.20、通用分组无线业务(GPRS)、iBurst、无线宽带(WiBro)、WiMAX、WiMAX高级、通用移动通信服务-时分双工(UMTS-TDD)、高速分组接入(HSPA)、演进数据优化(EVDO)、长期演进高级(LTE-Advanced)、多信道多点分发服务(MMDS)等)中。
本说明书中描述的主题和操作的实施例可以以数字电子电路、或者以计算机软件、固件或硬件(包括本说明书中公开的结构和它们在结构上的等同物)、或者以它们中的一个或多个的组合来实现。本说明书中描述的主题的实施例可被实现为编码在计算机存储介质上以通过数据处理设备执行或控制数据处理设备的操作的一个或多个计算机程序(即,计算机程序指令中的一个或多个模块)。可选地或此外,程序指令可被编码在人工生成的传播信号(例如,机器生成的电信号、光信号或电磁信号)上,该传播信号被生成以将用于传输的信息编码到合适的接收器设备来由数据处理设备执行。计算机存储介质可以是或被包括在计算机可读存储装置、计算机可读存储基底、随机或串行访问存储阵列或装置、或它们的组合中。此外,当计算机存储介质不是传播信号时,计算机存储介质可以是编码在人工生成的传播信号中的计算机程序指令的源或目标。计算机存储介质也可以是或被包括在一个或多个单独的物理组件或介质(例如,多个CD、磁盘或其他存储装置)中。此外,本说明书中描述的操作可被实现为数据处理设备对存储在一个或多个计算机可读存储装置上或从其他源接收的数据执行的操作。
虽然本说明书可包含许多具体的实施方式细节,但是实施方式细节不应被解释为对任何要求保护的主题的范围的限制,而是应当被解释为特定实施例的具体特征的描述。本说明书中的在单独实施例的上下文中描述的特定特征也可以在单个实施例中以组合来实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独地实现或以任何合适的子组合来实现。此外,尽管以上可将特征描述为以特定组合起作用,甚至最初这样被要求保护,但是在一些情况下,可从该组合删除来自要求保护的组合的一个或多个特征,并且要求保护的组合可涉及子组合或子组合的变化。
类似地,虽然在附图中以特定顺序描述操作,但这不应被理解为需要以示出的特定次序或按顺序次序执行这样的操作,或者执行所有示出的操作以获得期望的结果。在特定情况下,多任务处理和并行处理可能是有利的。此外,在上述实施例中的各种系统组件的分离不应当被理解为在所有实施例中需要这样的分离,应理解:描述的程序组件和系统通常可被一起集成在单个软件产品中,或者封装在多个软件产品中。
因此,在此已经描述了主题的具体实施例。其他实施例在权利要求的范围内。在一些情况下,权利要求中所阐述的动作可以以不同的顺序被执行,并且仍然实现期望的结果。此外,附图中描述的处理不一定需要示出的特定次序或顺序次序来获得期望的结果。在一些实施方式中,多任务处理和并行处理可能是有利的。
如本领域技术人员将意识到的,在此描述的创新构思可在广泛的应用中被修改和改变。因此,要求保护的主题的范围不应限于以上讨论的任何具体示例性教导,而是由权利要求来限定。

Claims (8)

1.一种神经网络装置,所述神经网络装置包括:
第一存储器,针对卷积神经网络中的至少一个层的每个层,存储所述层的预定数量的输入信道中的每个的输入特征图的激活值,每个输入特征图具有第一预定大小;
流水线结构,从所述层的预定数量的输入信道中的每个中的输入特征图选择激活值,流水线结构将被选激活值即时转换到Winograd域;
第二存储器,存储所述层的预定数量的输入信道中的每个的Winograd滤波器的元素,每个Winograd滤波器对应于具有第一预定大小的内核滤波器;
乘法器,将所述层的Winograd域中的转换后的激活值与来自Winograd滤波器的被选元素相乘,以形成Winograd域中的对应的乘积值,Winograd滤波器中的每个被选元素对应于Winograd域中的激活值;
加法器树,对所述层的Winograd域中的各个乘积值进行求和以形成Winograd域中的特征图的元素;和
逆Winograd转换器,对Winograd域中的特征图的元素即时进行逆Winograd转换,以形成所述层的输出特征图,输出特征图具有第二预定大小。
2.根据权利要求1所述的神经网络装置,还包括:控制器,被配置为:
接收输入图像;并且
基于卷积神经网络的最后层的输出特征图来输出图像识别结果或更新卷积神经网络的参数。
3.根据权利要求2所述的神经网络装置,其中,卷积神经网络的第一层获得输入图像作为第一层的输入特征图,卷积神经网络的前一层的输出特征图是卷积神经网络的后一层的输入特征图。
4.根据权利要求1所述的神经网络装置,其中,被选激活值在输入特征图中的位置是与从中选择其他的被选激活值的其他的输入特征图中的被选激活值的位置相同的位置;并且
其中,从中选择元素的Winograd滤波器中的被选元素的位置是与从中选择另外的元素的另外的Winograd滤波器中的另外的被选元素的位置相同的位置。
5.根据权利要求1所述的神经网络装置,其中,第一预定大小的输入特征图和第一预定大小的Winograd滤波器包括4×4阵列,第二预定大小的输出特征图包括2×2阵列。
6.根据权利要求1所述的神经网络装置,其中,输入信道的预定数量是16。
7.根据权利要求1所述的神经网络装置,其中,第一预定大小的每个Winograd滤波器对应于3×3权重内核、1×3权重内核和3×1权重内核中的一个。
8.根据权利要求1至7中的任意一项所述的神经网络装置,其中,第一预定大小的每个输入特征图包括第三预定数量的行和和第四预定数量的列,第三预定数量和第四预定数量大于1,并且
其中,流水线结构还:
选择输入特征图的行中的两个第一激活值;
将两个被选第一激活值转换为第一中间值;
选择两个第二激活值,每个第二激活值从第一激活值已经被从中选择的列来选择;
将被选两个第二激活值转换为第二中间值;和
对第一中间值和第二中间值进行组合来将被选激活值即时转换到Winograd域。
CN202011291921.XA 2020-03-20 2020-11-18 神经网络装置 Pending CN113496269A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202062992899P 2020-03-20 2020-03-20
US62/992,899 2020-03-20
US16/898,422 US20210294873A1 (en) 2020-03-20 2020-06-10 LOW OVERHEAD IMPLEMENTATION OF WINOGRAD FOR CNN WITH 3x3, 1x3 AND 3x1 FILTERS ON WEIGHT STATION DOT-PRODUCT BASED CNN ACCELERATORS
US16/898,422 2020-06-10

Publications (1)

Publication Number Publication Date
CN113496269A true CN113496269A (zh) 2021-10-12

Family

ID=77748937

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011291921.XA Pending CN113496269A (zh) 2020-03-20 2020-11-18 神经网络装置

Country Status (3)

Country Link
US (1) US20210294873A1 (zh)
KR (1) KR20210117905A (zh)
CN (1) CN113496269A (zh)

Also Published As

Publication number Publication date
US20210294873A1 (en) 2021-09-23
KR20210117905A (ko) 2021-09-29

Similar Documents

Publication Publication Date Title
US11373097B2 (en) Optimized neural network input stride method and apparatus
KR20170135752A (ko) 효율적인 스파스 병렬 위노그래드 기반 컨볼루션 체계
JP5840994B2 (ja) 行列演算装置
JP2022541721A (ja) 効率的な乗算のための代替数字形式をサポートするシステムおよび方法
Mao et al. F-DNA: Fast convolution architecture for deconvolutional network acceleration
KR20210126506A (ko) 부동 소수점의 내적을 계산하는 컴퓨팅 유닛 아키텍쳐 및 그에 따른 방법
Meher et al. High-throughput memory-based architecture for DHT using a new convolutional formulation
CN113496269A (zh) 神经网络装置
CN115496192A (zh) 具有网格融合的混合精度神经网络加速器区块
CN111222090A (zh) 卷积计算模块、神经网络处理器、芯片和电子设备
CN115511065A (zh) 神经处理单元核心及配置神经处理单元核心的方法
KR100444729B1 (ko) 레딕스-8 단일 경로 지연 전달 구조의 고속 퓨리에 변환장치 및 그 방법
KR100577005B1 (ko) 고속 하다마드 변환 및 고속 푸리에 변환의 선택적 수행장치 및 방법
Bi et al. Pipelined hardware structure for sequency-ordered complex Hadamard transform
US20230153586A1 (en) Accelerate neural networks with compression at different levels
US20230266941A1 (en) Floating Point Number Calculation Circuit and Floating Point Number Calculation Method
US20240160483A1 (en) Dnns acceleration with block-wise n:m structured weight sparsity
CN117077734A (zh) 卷积输入变换方法、硬件加速器和加速器结构确定方法
US20240095519A1 (en) Extreme sparse deep learning edge inference accelerator
CN116980277B (zh) 数据处理方法、装置、计算机设备及存储介质
Aslan et al. High performance reconfigurable pipelined matrix multiplication module designer
CN118052256A (zh) 利用分块n:m结构化权重稀疏性的dnn加速
KR100575285B1 (ko) 고속의 저전력 이산 코사인 변환 장치 및 방법
KR20220166730A (ko) 신경 처리 장치의 코어 및 신경망 계층의 입력 특징 맵 값을 처리하는 방법
Lu et al. WinTA: An Efficient Reconfigurable CNN Training Accelerator With Decomposition Winograd

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