CN114424252A - 快速稀疏神经网络 - Google Patents
快速稀疏神经网络 Download PDFInfo
- Publication number
- CN114424252A CN114424252A CN202080066353.5A CN202080066353A CN114424252A CN 114424252 A CN114424252 A CN 114424252A CN 202080066353 A CN202080066353 A CN 202080066353A CN 114424252 A CN114424252 A CN 114424252A
- Authority
- CN
- China
- Prior art keywords
- elements
- convolution
- values
- weights
- sparse
- 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
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 64
- 239000011159 matrix material Substances 0.000 claims abstract description 94
- 230000004913 activation Effects 0.000 claims abstract description 36
- 238000000034 method Methods 0.000 claims description 49
- 238000012545 processing Methods 0.000 claims description 33
- 230000008569 process Effects 0.000 claims description 23
- 238000012549 training Methods 0.000 claims description 19
- 239000013598 vector Substances 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 14
- 238000003860 storage Methods 0.000 claims description 10
- 238000000605 extraction Methods 0.000 claims description 2
- 238000002474 experimental method Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000010801 machine learning Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 239000003795 chemical substances by application Substances 0.000 description 4
- 230000003993 interaction Effects 0.000 description 3
- 238000012886 linear function Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 230000005284 excitation Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 241000009334 Singa Species 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000001747 exhibiting effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0495—Quantised networks; Sparse networks; Compressed networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/513—Sparse representations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Biophysics (AREA)
- General Engineering & Computer Science (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Databases & Information Systems (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供了一种神经网络系统,所述系统包括至少一个层,所述层使用稀疏权重矩阵所定义的内核将1x 1卷积应用于稠密激活矩阵。所述层由处理器通过访问稀疏性数据集来实施,所述稀疏性数据集指示空权重在所述权重矩阵中的位置。所述处理器从存储器单元中选择与其他权重对应的特征值,然后使用这些提取的特征值来计算所述卷积值,所述存储器单元被配置为存储所述激活矩阵。
Description
背景技术
本说明书涉及神经网络系统,特别是能够在存储器和/或处理能力有限的处理器设备(诸如移动设备)上实施的系统。
神经网络是机器学习模型,该机器学习模型采用一层或多层单元或节点来预测接收的输入的输出。除了输出层之外,有些神经网络还包括一个或多个隐藏层。每个隐藏层的输出都被用作网络中的下一层的输入,即,下一个隐藏层或输出层。网络的每一层都根据相应的参数集的当前值从接收的输入生成输出。
许多神经网络包括卷积层,该卷积层具有基于元素数组而定义的输入和同样基于元素数组而定义的输出。通常,数组是二维数组,诸如矩形数组(例如方形数组),其宽度为W列,高度为H行。每个元素都与“输入通道”相关联,该“输入通道”是由C’个特征值组成的特征向量(其中C’是整数,通常大于1)。HW输入通道是卷积层的输入。因此,输入通道集构成具有C’×HW个分量的激活矩阵。对于每个元素,卷积层将包括元素的数组的相应nxm部分的相应特征向量与内核相乘,形成元素的相应“输出通道”。每个元素的输出通道都有C个卷积值(其中C是整数,通常与C’不同)。非线性函数(激活函数),诸如修正线性(ReLU)激活函数,通常应用于元素的输出通道的C个卷积值中的每个卷积值。
在一个被称为“1x1卷积层”的示例中,n和m等于1,这样,数组的元素的输出通道所依赖的唯一输入通道就是该元素的输入通道。在这种情况下,内核在将激活函数(如果有的话)应用于每个卷积值之前,将权重值的C’×C权重矩阵(“权重”)应用于元素的输入通道,以生成元素的输出通道。
卷积神经网络(CNN),即包括至少一个卷积层的神经网络,已被证明在解决各种各样的任务方面非常出色。在许多这些体系结构中,推理时间、浮点运算(FLOP)和参数计数由1x1卷积控制,其相当于矩阵-矩阵乘法。
发明内容
本说明书描述了一种神经网络系统,该神经网络系统实施为在一个或多个位置的一个或多个计算机上的计算机程序。
一般来说,本公开提出,应用于稠密激活矩阵的1x1卷积层(即H×W元素中的每个元素的大体上全部的C’特征值都在生成元素的相应输出通道的过程中得以使用)使用由稀疏C’x C权重矩阵所定义的核。即,权重矩阵的值有一半以上是“空”权重,即在计算卷积值时不使用并且可以被认为是零的权重。通过向处理器提供稀疏性数据集(该稀疏性数据集是空权重在权重矩阵中所在的位置的指示),处理器从被配置为存储激活矩阵的存储器单元中(仅)选择与其他权重(“非空权重”,定义为不是空权重的权重)对应的特征值,然后(仅)使用这些提取的特征值来计算卷积值。对于数组的多个不同元素中的每个元素的对应卷积值,这可以高效地(例如并行地或在很短的时间间隔内连续地)完成,因为所有元素都需要相同的对应权重。即,不同元素的对应卷积值取决于相同的权重。
多个元素可以位于数组的同一行,即,它们可以是元素的“行向量”,例如作为该行中连续的一系列元素。如在许多已知的存储器单元中,用于存储特征值的存储器单元具有CHW格式的存储器布局,在这种情况下,选择多个元素作为同一行的元素是特别受激励的。在这种情况下,卷积向量的计算可以有效地用同一行中元素的连续的(通常不重叠的)行向量的内循环和连续行的外循环来执行。注意,在实现方式中,存储器单元可以实施为多个物理上分离的存储器设备。
存储激活矩阵的存储器单元可以被称为特征值存储器单元。权重值存储在被称为权重存储器单元的另一个存储器单元中。在实现方式中,权重存储器单元可以是与实施特征值存储器单元的存储器设备相同的存储器设备或不同的存储器设备。
本说明书中所描述的主题可以在特定实施例中实施,以便实现以下一个或多个优点。首先,权重存储器单元只需要存储非空权重,因此与具有相同维数的稠密权重矩阵的传统神经网络相比,权重存储器单元的存储器需求降低。其次,与神经网络的传统卷积层相比,基于激活矩阵生成输出通道的乘法和/或除法运算次数减少,从而提高了能量效率和处理速度。第三,由于多个卷积值是并行计算的,有效利用了并行处理硬件。如果处理器是GPU(图形处理单元)或其他专用硬件,则使存储器单元将特征值存储在CHW存储器布局中是特别有效的。例如,CHW存储器层特别适合在专用硬件中实施,该专用硬件在硬件(例如,张量处理单元(TPU)或另一个硬件机器学习加速器)中执行矩阵乘法。实验发现,与传统的神经网络相比,所有这些优点都可以在性能下降极小的情况下实现,例如,在所提出的神经网络中,空权重(稀疏性)的比例不大于95%。
例如,对于一些已知的测试问题,发明人已经通过实验发现令人惊讶的结果,即,在被训练以解决标准测试问题的神经网络的至少一个卷积层中,选择至少70%和/或不超过95%的权重为空(即,稀疏性在70%到95%的“稀疏性范围”内),将神经网络的参数的数目减少了多于两倍,并且将神经网络所执行以从输入生成输出的计算(浮点运算——FLOPS)的数目减少了达三倍,同时神经网络的性能降低小于1%。还发现,当神经网络在低功率处理器(诸如,移动设备(诸如移动电话、平板计算机或其他形式的移动客户端设备)的CPU)上实施时,神经网络的处理时间减少了1.3至2倍。这使得目前的神经网络特别适合于这类设备。虽然神经网络中的稀疏性并不是全新的概念,但是它通常被认为是加速模型的实际方法,因为常见的误解是,稀疏运算不能快到在干扰期间实现实际加速。目前的实验表明情况并非如此。其中一个原因是,在这些实验中,稀疏权重矩阵与稠密激活矩阵结合,提供了稀疏性。同样,虽然之前的工作通常关注的是极其稀疏的问题(稀疏性超过99%),但是实验中所使用的稀疏性范围较低。
每个非空权重都可以取任何值(例如,浮点值或预定义整数范围中的任何整数值),在一些实现方式中甚至可选地包括零;即,在这些实现方式中,非空权重中有一些可能等于零,尽管神经网络的实现方式没有采用它们为零的先验信息。通常,权重将在训练过程中生成,并且原则上,训练过程可能会生成一些等于零的权重,而不会将这些权重标记为空权重,因此不会被包括在空权重的指示中。可替代地,在其他实现方式中,所有在训练之后为零的权重(或因为在训练之后它们遵守预定的标准而被设置为零,诸如在训练之后具有低于预定阈值的幅度)被标记为空权重,并且被包括在空权重的指示中;换言之,在这些实现方式中,所有非空权重都是非零的。在其他实现方式中,空权重可以在训练之前指定,以便训练过程只修改非空权重的值。
注意,尽管本公开提出了一种稀疏权重矩阵,但是激活矩阵(卷积层的输入)中基本上没有稀疏性。因此,神经网络的卷积层被配置为依次从数组中选择元素(例如,每个元素都有相同的元素数目)的连续的行向量,并且每个行向量都如上所述被并行处理,以便神经网络的卷积层最终处理多个连续的行向量,这些行向量共同包括数组的所有元素。可能基本上不存在“空”特征值(即,卷积值所取决的特征值)。
并不是神经网络的所有的层都必须使用上述原理。例如,神经网络的输入层可以是全连接的,和/或神经网络的输出层可以是全连接的。换言之,稀疏性可以在神经网络的特定位置提供,即由能够并行处理的已知计算机处理器的能力激励的位置。
可选地,权重矩阵可以具有一定的规则性。例如,对于权重矩阵的多个行(分别对应于每个元素的多个卷积值),非空权重可以处于相同的位置(即,对应于每个元素的输入通道的特征值的相同子集)。因此,给定元素的卷积值中的不同卷积值取决于元素的输入通道的特征值的相同子集。在这种情况下,计算的效率可以进一步通过并行(作为“块”)计算行向量的输出通道的那些卷积值来提高。此外,对于给定数目的非空权重,由于非空权重的布置的规则性,稀疏性数据集的大小可以减小。
为了用不同的方式表达这一点,权重矩阵的行可以垂直划分为权重的行的组(“权重行”),其中,每一组都可以是相等数目的权重行,至少是两行,并且可以由连续的权重行组成。对于每一组,该组的所有权重行的非空权重都可以在沿权重行的相同位置(即,对应于相同的特征值子集)。在这种情况下,当对元素的行向量进行处理以生成对应的卷积值时,可以依次处理权重行的组,但是每一组的权重行都可以进行并行处理以生成对应的卷积值。
H和W的值可以是任何整数,但是通常每个值都至少为10。每个输入通道C’的特征值的数目通常至少为2,并且可以大于2。每个行向量的元素数目都至少为2,更通常至少为3(诸如4或8)或至少为8(诸如16)。
优选地,在生成多个元素的每个卷积值期间,一旦这些多个元素(其对应权重是非空的)的特征值是从存储器单元中提取的(例如,同时),便将所提取的特征值存储(例如,同时)在缓存存储器中。然而,对于在为多个元素生成前面的卷积值时存储在缓存存储器中的特征值,优选地不执行提取和存储。这又节省了计算时间。
除了从存储器单元中提取多个元素(当前正在为其计算卷积值)的特征值并且将它们写入缓存存储器,还从存储器单元中读取(例如,同时)多个附加元素的对应特征值,并且将它们写入(例如,同时)缓存存储器。多个附加元素的卷积值不与多个元素的卷积值并行生成,例如,这可能是在单独的处理循环中完成的,但是事实上,它们已经被预取回这一事实意味着是时候为这些元素计算卷积值,它们的特征值已经存在于缓存存储器中。这减少了为这些附加元素生成卷积值所需的计算时间。
本文中所提出的概念可以表示为实施神经网络的方法或可替代地表示为训练神经网络的方法。这个训练过程通常包括推导权重矩阵。
训练可以包括将权重矩阵的至少一些权重指定为空权重(即,选择权重矩阵的一些分量作为空权重)。这可以通过执行训练过程以获得权重,识别满足某种标准的结果权重(诸如,具有低于阈值的幅度)并且将识别出的权重指定为空权重来完成。用于识别结果权重以指定为空权重的更复杂的标准可以同时考虑多个结果权重,例如,以确保所识别出的结果权重是幅度相对较低的权重,其受到空权重在权重矩阵中位置的规则性的约束。可替代地,可以预先指定一些或全部空权重(即,在训练非空权重之前可能存在稀疏性数据集),以便确保上面讨论的非空权重的布置中存在规则性。
本概念的替代表达可以是根据计算机系统,该计算机系统包括:一个或多个计算机,该计算机位于一个或多个位置,设置为执行方法;或包括指令的计算机程序产品,诸如,存储程序指令的非暂时性计算机存储介质(存储器设备)或包括指令的可下载软件,其中,指令在由一个或多个计算机执行时使计算机实施上述任何方法。
神经网络的实现方式有许多应用。从广义上讲,系统可以在任何神经网络中使用,该神经网络接收输入数据,该输入数据具有与数组的维数对应的维数(例如,二维)。
例如,输入数据可以表示静止或移动的图像,在这种情况下,数据的值可以表示像素值。输入数据可以是真实世界数据,诸如,由一个或多个传感器设备(诸如,一个或多个静止和/或视频相机)收集到的数据。
例如,神经网络可以用作分类器,该分类器被训练以将输入数据分类成一个或多个类。例如,神经网络系统可以用于将(例如,真实世界或模拟环境的)图像分类为预定的多个类中的一个类。
可替代地,例如,神经网络可以用作生成模型,例如,用于生成以边信息为条件的示例。可替代地,它可以用于对已经生成的示例的质量进行评分,即,根据示例与训练数据的匹配程度。
可替代地,神经网络可以用于强化学习,例如,用于生成控制数据以控制在真实世界或模拟环境中移动的代理(例如,机器人)。可替代地,神经网络系统可以被训练以生成预测未来图像或视频序列的数据,该未来图像或视频序列由与模拟或真实世界环境中的物理对象或代理相关联的真实或虚拟相机看到。
附图说明
仅仅为了举例起见,现在将参照以下图描述本公开的示例,在图中:
图1示出了采用目前所公开的方法的神经网络。
图2示出了用于实施图1的神经网络的计算机系统。
图3图示了由图1的神经网络的层执行的第一卷积运算。
图4图示了由图1的神经网络的层执行的第二替代卷积运算。
由图5(a)至图5(e)组成的图5示意性地图示了在执行图3的卷积运算期间所执行的一系列存储器操作。
图6示出了在过程(诸如,图5的过程)期间由图1的神经网络执行的方法的步骤。
在不同的图中,相同的参考数字和称号都指示相同的元件。
具体实施方式
图1示出了作为本公开的示例的神经网络100。神经网络100可以由位于一个或多个位置的一个或多个计算机系统实施。
神经网络100包括输入层101、输出层103和一个或多个隐藏层102a、102b、102c。输入层101、隐藏层102a、102b、102c和输出层103按顺序排列。除输出层103之外的每一层的输出都为序列的下一层提供输入。输入层101、隐藏层102a、102b、102c和输出层103中的一个或多个层是卷积层。实际上,它们可能都是卷积层,尽管至少输出层103通常不是。每个卷积层都接收基于元素的数组(通常是二维数组)而定义的输入。对于每个元素,都有相应的输入通道,该输入通道是由C’特征值组成的特征向量。类似地,对于每个元素,卷积层都生成相应的输出通道,该输出通道具有被称为“卷积值”的C值。每个卷积层都采用由权重矩阵定义的相应内核。
至输入层101的输入是定义图像的数据,诸如,为像素的数组中的每一个指定针对一个或多个值的值的数据。像素可以与元素的相应一个对应。例如,对于该层,C’可以是3,并且每个元素的输入通道的特征值可以分别为红色、绿色和蓝色通道的强度。
层中的至少一层,特别是隐藏层102a、102b、102c中的一层,是1x1卷积层。在1x1卷积层的情况下,每个元素的输出通道都只取决于元素的输入通道。即,内核不包含导致一个元素的输出通道的分量取决于另一个元素的输入通道的权重。
如下所述,实施1x1卷积的神经网络100的层中的一个或多个层可以使用表现出“稀疏性”的内核来实施(即,至少有一定比例的权重取零值,例如,至少一半),特别是隐藏层102a、102b、102c中的一层。然而,并不是神经网络的所有层都表现出稀疏性。
首先,输入层101可以包括不表现出稀疏性的内核。其对参数计数、FLOP计数和运行时的贡献很小。相反,输入层101可以采用稠密的卷积内核,并且以图像作为其输入。
同样,层101、102a、102b、102c、103中的一个或多个层可以实施“挤压和激励”(SE)层,如Jie Hu等人的“Squeeze and excitation networks(挤压和激励网络)”(2019)中所描述的。在这种层中,至层的输入被映射到用U表示的特征图(例如,通过卷积),并且特征图经受“挤压”操作,该操作通过跨越它们的H×W空间维度聚合特征图产生通道描述符,以产生通道式特征响应的全球分布的嵌入。这种聚合之后是“激励”操作,该操作将嵌入作为输入,并且产生每个通道的权重的集合,这些权重被应用于特征图U,以生成SE层的输出。如果这种SE层存在于神经网络100中,则这也可能不采用下面所述的稀疏内核,因为实验表明,它们对常规使用它们的稠密模型的总FLOP的贡献通常不到1%。
同样,神经网络100的最后一层103可以实施为全连接层,而不是卷积层。再次,通过实验可知,在传统模型中,全连接的输出层对总FLOP计数的贡献微不足道(<1%),但是贡献了总参数的重要部分(20%至50%),特别是在神经网络的训练使得神经网络的其他层被修剪的情况下。
图2图示了用于实施图1的神经网络100的计算机系统200。该计算机系统200接收数据输入201,该数据输入201可以是描述一个或多个图像的图像数据。计算机系统200包括处理器202和存储器单元203、204、205。处理器202可以是能够同时并行处理多个计算线程的处理器。存储器单元203、204、205中的第一个存储器单元是程序存储器单元203,该程序存储器单元203存储程序指令,这些程序指令操作以控制处理器202实施神经网络,特别是执行下面所述的隐藏层102a、102b、102c的卷积运算。存储器单元中的第二个存储器单元是权重存储器单元204,该权重存储器单元204存储定义由神经网络100的层执行的操作的权重。对于每一层,存在由权重组成的相应权重矩阵。对于每一层,权重存储器单元204还可以存储相应的稀疏性数据集,该数据集针对每个输出通道指示相应的权重矩阵的一个或多个非空权重值。
存储器单元中的第三个存储器单元是特征值存储器单元205,该特征值存储器单元205存储输入至每一层并且从每一层输出的数据。在接收到数据输入201后,将数据存储在特征值存储器205中。
在数据输入201中和存储在特征值存储器205中的数据可以在标准HWC布局中,其中,对应于一个空间位置的不同通道的值在存储器中是相邻的。即,将数组的每行的元素数目表示为W,数组中的行数表示为H和每个元素的通道数表示为C,在数组中的位置(h,w)的元素的第c个通道的值的存储器位置(即,与存储器空间中的某个任意位置的偏移距离)可以被表示为h*(W)*(C)+w*(C)+c。在接收到数据输入201后,数据输入201通常仍然可以以HWC格式存储在特征存储器单元205中。
为了实施神经网络100的一个层,处理器202可以将描述至该层的输入的数据的连续部分从特征存储器单元205传输给处理器202的缓存存储器206。在表现出稀疏性的层的情况下,对于每个元素,传输都可以分多个步骤执行,在每个步骤中,只有该元素的输入通道的特征值的子集按照需要被传输给缓存存储器206,以生成元素的输出通道的部分。为了允许多个元素的卷积值一起(例如,并行地)生成,多个元素的特征值可以同时从特征存储器单元205被传输给缓存存储器206。
对于每一层(可选地,除了输出层103之外),每个元素的相应输出通道的卷积值被存储在特征值存储器单元205中。输出通道随后由处理器202从特征值存储器单元205读取,并且由处理器202用作神经网络100的连续层的输入数据。如下所述,神经网络100的一个或多个层(诸如,输入层101和/或一个或多个隐藏层102a、102b、102c)的输出通道可以以CHW格式(在这里也称为CHW布局)存储在特征值存储器单元205中。在CHW布局中,一个通道的所有空间位置的值在存储器中都是相邻的。在CHW布局中,位于H×W数组中的位置(h,w)的元素的第c个通道的存储器位置(偏离存储器空间中的任意位置)是c*(W)*(H)+h*(W)+w。如果隐藏层102a、102b、102c和输出层103中的一个或多个层的输入数据是CHW格式,特别是紧跟在输入层101之后的卷积层102a的输入数据是CHW格式,则方便进行稀疏卷积运算。
输出层103的输出通道作为输出数据207从计算机系统200传输。例如,输出可以表示图像数据201的分类。可替代地,如果数据输入201是边数据,并且神经网络100是生成网络,则输出数据207可以是表示图像或信号(诸如,声音波形)的数据集。可替代地,如果数据输入201是描述环境的传感器数据,例如,由静止或视频相机收集到的真实世界环境的图像,则输出数据207可以是控制数据,该控制数据被传输给代理,以便控制代理与环境进行交互,例如,在环境内移动(通过平移、旋转和/或重新配置)。可替代地,如果数据输入201是表示自然语言的部分的数据(例如,当说出自然语言时由传感器收集到的字母序列或声音信号),则输出数据207可以是经过修饰的自然语言,诸如,自然语言的翻译,并且还可以是字母序列或声音信号。
转向图3,示出了示意图,使用这里所公开的稀疏性原理解释了通过神经网络100的层之一,例如,隐藏层102a、102b、102c之一的1x1卷积运算的执行。至卷积运算的输入是CHW格式的激活矩阵301。激活矩阵301的每列都表示至由C’特征值组成的数组的元素之一的输入通道。激活矩阵301的相应特征值在图1中用列之一中的相应框表示。在图3中,激活矩阵301被表示为具有“高度×宽度”(即,HW)的列的数目和被表示为“channels in(输入通道)”的行的数目C’。从某种意义上说,激活矩阵301是稠密的,即实质上任何元素的任何通道的特征值均不为“空”,即,提前知道是零(例如,提前知道没有值或不超过1%的值是零)。事实上,所有或基本上所有的C’×HW值实际上都可能是非零。非空特征值在图3中用阴影框表示,即,激活矩阵301的所有框都被涂上阴影。
1x1卷积层的内核用CxC’权重矩阵302表示,其中,C是每个元素的输出通道中卷积值的数目。C可以与C’相同或不同。权重矩阵302中为零的值(“空值”)用无阴影(白色)框表示,而内核矩阵中的非零值(“非空值”)用阴影框表示。非空值的比例小,例如,在25%到10%的范围内。卷积运算由权重矩阵302与激活矩阵301相乘组成。这在下面参照图5进行描述。
图4图示了可以由隐藏层102a、102b、102c之一执行的1x1卷积运算的替代形式。激活矩阵401与图3中的相同,但是与图3不同的是,在图4的情况下,权重矩阵402的行(“权重行”)被垂直划分为组403、404、405、406。对于每一组,该组的所有权重行的非空权重都在沿权重行的相同位置(即,与特征值的相同子集对应)。每一组都可以由数目相等的权重行组成,该数目至少为2(在图4中,每个组403、404、405、406都具有4行)。如图4中所示,每一组403、404、405、406的权重行都是连续的权重行,但是在替代布置中,组的行可以相互交错。
当处理矩阵401的每一列(即,每个元素的输入值)以生成对应的卷积值时,每一组的权重行都可以被并行处理以生成对应的卷积值。然而,不同组的权重行可以依次地加以处理。
图5示出了用于评估图3的1x1卷积运算之一中的内核的存储器读写操作。为了简单起见,激活矩阵的行的数目C’(即,每个元素的输入的通道数目)在该示例中为4,每个元素的输出通道的数目C也是4。然而,图5的方案很容易扩展到值C’和C是任何正整数(例如,图3和图4中的C’=8和C=16)彼此相等或不同的情况。具体地,图5(a)示出了示例权重矩阵501,具有用包含交叉的框表示的非零(非空)元素和用无交叉的框表示的零(空)元素。例如,第四输出通道(第四行)只有第二输入通道和第四输入通道具有非空的权重值。
图5(b)至图5(e)示出了操作序列,其中,数组的8个元素的4个通道值都一起被处理,但是一起处理的元素的数目可能不同。例如,16个元素可以一起被处理,这些元素可以与缓存存储器206中的一条缓存线对应。缓存存储器的存储器空间用502表示,具有数目(至少)等于每个输入通道中特征值的数目的行(缓存线)。在每一行中,有多个存储器位置,每个存储器位置都被配置为能够存储对应的特征值。图5(b)至图5(e)还示出了特征值存储器单元205的存储器空间503,该空间用于存储作为1x1卷积层的输出的卷积值。
在图5(b)中所示的第一步骤中,处理器202从稀疏性数据集确定权重矩阵的第一行中非零权重的位置。在该示例中,权重矩阵501的第一行在第一位置和第四位置具有非空值。对于数组的8个元素的集合,在与权重矩阵501的第一行中的非零权重对应的存储器空间502的相应行中,处理器202从特征值存储器单元205中读取与这些非零权重对应的特征值,并且将它们写入缓存存储器206的存储器空间502的前8个位置。即,分别将8个元素的集合的第一特征值写入存储器空间502的第一行的前8个位置5021,并且分别将8个元素的集合的第四特征值写入存储器空间502的第四行的前8个位置5022。被写入位置5021、5022的特征值用交叉的框表示。这些读写操作基本上是同时对8个元素(数组中的空间位置)执行的。
可选地,对于权重矩阵501的第一行中的每个非空权重值(即,第一权重和第四权重),处理器还读取例如8个元素的第二集合的对应特征值(即,第一特征值和第四特征值),并且将它们写入存储器空间502的对应行的接下来的8个位置5023、5024(即,第一行和第四行)。它们在图5(b)中被示出为框,有一条从左上到右下的对角线穿过它们。这些预取回的特征值稍后(在8个元素的第一集合的所有卷积值生成之后)被用来生成元素的第二集合的卷积值。
对于8个元素的第一集合中的每一个,处理器502通过将权重矩阵501的第一行中的每个非空权重与存储器空间502的行中对应于非空权重的元素的特征值相乘,并且累加(添加)结果,形成相应的卷积值。处理器202然后将这8个元素中的每个元素的相应卷积值写入特征值存储器单元205的存储器空间的部分503的前8个位置5031。可选地,被包括在1x1卷积中的非线性函数(例如,ReLU函数)可以对每个卷积值加以执行。因此,图5(b)中所示的过程已经为8个元素的第一集合的输出通道生成第一卷积值。8个元素的第一集合的卷积值可以并行地(或在短时间间隔内依次地)生成,并且可以基本上同时被写入特征值存储器单元205。
如上所述,处理器202可能已经可选地将8个元素的第二集合的第一特征值和第四特征值写入8个相应的存储器位置5023、5024。在这种情况下,处理器202可以可选地通过相同的过程为8个元素的第二集合生成卷积值。即,对于8个元素的第二集合中的每一个,处理器202通过将权重矩阵501的第一行中的每个非空权重与存储器空间502的行的部分5023、5024中对应于非空权重的该元素的特征值相乘,累加(添加)结果,并且将它们写入存储器空间503的第一行的接下来的8个位置5032,形成相应的卷积值。如果1x1卷积运算包括执行非线性函数,则这是对每个卷积值执行的。注意,图5(a)中没有图示这个过程,因为为8个元素的第二集合中的每一个的第一输出通道计算相应的卷积值这一过程可以可选地在完成图5(b)至图5(e)中所示的步骤序列之后执行。
图5(c)示出了如何执行图5(b)中所示的相同过程来计算8个元素的第一集合的输出通道的第二卷积值。在该示例中,非空权重值在权重矩阵501的第二行的第二位置和第三位置,因此,处理器从特征值存储器单元205中读取8个元素的第一集合的输入通道的第二特征值和第三特征值,并且将它们写入由点所示的存储器空间502中的位置。在该示例中,权重矩阵501的第二行的非空权重发生在与权重矩阵501的第一行的非空权重不同的位置,但是如果任何非空权重都在相同的位置(即,与相同的输入通道相关),则可以省略该输入通道的读写操作,因为存储器空间502已经包含这些特征值。
可选地,将8个元素的第二集合的第二特征值和第三特征值写入存储器空间502的对应行(即,第二行和第三行)的接下来的8个位置(如一条从左下到右上的对角线所示)。然后,处理器202通过将权重矩阵501的第二行中的非空权重与8个元素的第一集合的对应特征值相乘,并且添加结果,为8个元素的第一集合中的每一个计算输出通道的相应的第二卷积值。
图5(d)和图5(e)分别示出了处理器如何为8个元素的第一集合的输出通道的第三卷积值和第四卷积值生成卷积值。注意,在图5(b)和图5(c)中所示的过程之后,8个元素的第一集合(空间位置)的所有特征值都在缓存存储器206中,因此,处理器202可以为剩余的输出通道生成卷积值,而不是从特征值存储器单元205中读取任何更多的数据。为了生成8个元素的第一集合中的每一个的输出通道的第三卷积值和第四卷积值,处理器202分别将权重矩阵501的第三行和第四行中的非空权重与8个元素的第一集合的对应特征值相乘,并且添加结果。这意味着,加载特征值以执行步骤5(d)和步骤5(e)中的乘法是快速的,尽管特征值存储器单元205和缓存存储器206被随机访问。
在图5(b)至图5(e)中所示的步骤序列中,外部循环是在列之上,并且内部循环是在行之上。这允许激活矩阵中16个空间位置的每个条带都保持在缓存存储器206中,直到不再需要它。图5(b)和图5(c)中的步骤准备好缓存存储器206,同时图5(d)和图5(e)的后续步骤从缓存存储器206中加载所有特征值。
如果知道在权重矩阵501中的结构中有任何规则性,即使少量,这也允许图5的过程在将权重和特征值加载到处理器202的寄存器中后,通过增加数据重用,随着性能的显著提升而变化。例如,如上面关于图4所描述的,权重矩阵的多个输出通道都可以具有相同的零/非零权重模式。可替代地或附加地,权重矩阵的多列都可以具有相同的零/非零权重模式。约束生成权重矩阵的训练过程,以产生稀疏模式,以便多个输出或输入通道都共享相同的零/非零模式,在权重矩阵中创建了‘块’,如图4中所示,块是一组具有相同稀疏模式的多个行。如图4中所示,在输出通道维度中创建块,与在输入通道维度中形成块相比,允许更多的数据重用。所进行的实验表明,任一选择对准确性的影响都是相同的,但是将权重矩阵的多行设置为具有相同的模式(如图4中所示),导致了更高的处理效率,因此首选这种方式。在某些实验中,对权重矩阵进行训练的约束是,组由2行组成,或组由4行组成。在这种情况下,内部循环可以包括为对应组的所有行生成输出通道。例如,在每一组都包含2个权重行的情况下,对数组的特征向量(例如,数组的一行8个元素)执行的单个内部循环可以为元素集合的输出通道生成对应的两个卷积值。实际上,图5的方案是变化的,以便图5(a)至图5(b)中的每个阶段都被替换为一个阶段,其中,组之一的所有权重行都被用来生成所有的对应卷积值。
在图6中对在图5中所示的过程中生成卷积值的方法600进行了总结。在步骤601中,对于每个卷积值,基于稀疏性数据集(充当权重矩阵中与每个卷积值对应的非空权重的指示),从激活矩阵中获得一个或多个特征值。在步骤602中,生成卷积值,作为由相应的非空权重加权的对应提取特征值的和。
所执行的实验表明,使用上述技术可以大大节省计算负担和存储器需求。有三个因素对此特别有贡献:
1、虽然权重矩阵是稀疏的,但是激活矩阵是稠密的。这意味着,处理器202可以执行来自激活矩阵的向量负载,并且同时处理多个空间位置。
2、通过以正确的顺序处理矩阵,系统可以在缓存存储器中保留将被随机访问的值。注意,从缓存存储器206进行随机访问可以比从特征值存储器单元205进行随机访问更快。
3、特别是当输入通道的数目小时,从元素的第二集合的激活矩阵预取回特征值进一步减少了如下情况中的数目,其中当要计算元素的第二集合的卷积值时,缓存存储器206不包含所需的特征值,使得必须从特征值存储器单元205中获得值。
实验表明,对于恒定的计算预算,稀疏卷积网络比稠密卷积网络更准确,诸如,按挂钟时间计算,其准确性为1.3至2.4倍,而只需要≈66%的参数——大约相当于整整一代的改进。
本说明书使用与系统和计算机程序组件有关的术语“被配置为”。对于要被配置为执行特定操作或动作的一个或多个计算机的系统,意味着系统具有安装在其上在运行时使系统执行操作或动作的软件、固件、硬件或它们的组合。对于要被配置为执行特定操作或动作的一个或多个计算机程序,意味着一个或多个程序包括指令,这些指令在由数据处理装置执行时使该装置执行操作或动作。
本说明书中所描述的主题和功能操作的实施例可以实施在数字电子电路系统中、在有形地体现的计算机软件或固件中、在包括本说明书中所公开的结构及其结构等同物的计算机硬件中或在它们中的一个或多个的组合中。本说明书中所描述的主题的实施例可以实施为一个或多个计算机程序,即,在有形的非暂时性存储介质上编码以由数据处理装置执行或控制数据处理装置的操作的计算机程序指令的一个或多个模块。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备或它们中的一个或多个的组合。可替代地或附加地,程序指令可以在人工生成的传播信号(例如,机器生成的电气、光学或电磁信号)上进行编码,生成这种信号是为了对信息进行编码,以传输给合适的接收器装置以供数据处理装置执行。
术语“数据处理装置”指数据处理硬件,并且涵盖用于处理数据的所有种类的装置、设备和机器,例如,包括可编程处理器、计算机或多个处理器或计算机。装置还可以是或进一步包括专用逻辑电路系统,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件外,装置还可以可选地包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
计算机程序(其也可以被称为或描述为程序、软件、软件应用、应用、模块、软件模块、脚本或代码)可以用任何形式的编程语言进行编写,包括编译或解译语言或陈述性或程序语言,并且它可以用任何形式进行部署,包括作为独立程序或作为模块、组件、子例程或适合用于计算环境的其他单元。程序可以,但不需要,对应于文件系统中的文件。程序可以存储在文件保存其他程序或数据的部分(例如,存储在标记语言文档中的一个或多个脚本)、专用于所讨论的程序的单个文件或多个协调文件(例如,存储一个或多个模块、子程序或代码的部分的文件)中。计算机程序可以被部署为在一个计算机或位于一个站上或跨多个站分布并且由数据通信网络互连的多个计算机上执行。
在本说明书中,术语“数据库”被广泛用于指任何数据集合:数据不需要以任何特定方式被结构化或完全不被结构化,并且它可以存储在一个或多个位置的存储设备上。因此,例如,索引数据库可以包括多个数据集合,每个数据集合都可以以不同的方式加以组织和访问。
类似地,在本说明书中,术语“引擎”被广泛用于指被编程以执行一个或多个特定功能的基于软件的系统、子系统或过程。通常,引擎将被实施为安装在一个或多个位置的一个或多个计算机上的一个或多个软件模块或组件。在一些情况下,一个或多个计算机将专用于特定引擎;在其他情况下,多个引擎可以被安装在同一个或多个计算机上并且在其上运行。
本说明书中所描述的过程和逻辑流程可以由一个或多个可编程计算机执行,该可编程计算机执行一个或多个计算机程序以通过对输入数据进行操作和生成输出来执行功能。过程和逻辑流程还可以由专用逻辑电路系统(例如,FPGA或者ASIC)或专用逻辑电路系统和一个或多个编程计算机的组合执行。
适合执行计算机程序的计算机可以是基于通用或专用微处理器或两者或任何其他种类的中央处理单元。通常,中央处理单元将接收来自只读存储器或随机存取存储器或两者的指令和数据。计算机的基本元件是用于进行或执行指令的中央处理单元和用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可以由专用逻辑电路系统补充或被合并到专用逻辑电路系统中。通常,计算机还将包括用于存储数据的一个或多个海量存储设备(例如,磁盘、磁光盘或光盘)或可操作地耦合以接收来自该海量存储设备的数据或将数据传输给该海量存储设备或进行这两种操作。然而,计算机不需要有这样的设备。此外,计算机可以嵌入另一设备中,例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备,例如,通用串行总线(USB)闪存驱动器,仅举几个例子。
适合存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,例如,包括:半导体存储器设备(例如,EPROM、EEPROM和闪存设备)、磁盘(例如,内部硬盘或可移动盘)、磁光盘、CD-ROM盘和DVD-ROM盘。
为了提供与用户的交互,本说明书中所描述的主题的实施例可以在计算机上实施,该计算机具有:用于向用户显示信息的显示设备,例如,CRT(阴极射线管)或LCD(液晶显示器)监视器;以及键盘和指向设备,例如,鼠标或轨迹球,用户可以通过该键盘和该指向设备来将输入提供给计算机。其他种类的设备还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且来自用户的输入可以以任何形式(包括声音输入、语音输入或触觉输入)加以接收。另外,计算机可以通过将文档发送给用户所使用的设备并且接收来自该设备的文档与用户交互,例如,通过响应于从网络浏览器接收的请求将网页发送给用户的设备上的网络浏览器。同样,通过将文本消息或其他形式的消息发送给个人设备,例如,运行消息传递应用的智能电话,并且接收来自用户的响应消息作为回答,计算机可以与用户交互。
例如,用于实施机器学习模型的数据处理装置还可以包括专用硬件加速器单元,用于处理机器学习训练或生产的通用和计算稠密型部分,即,推论、工作负载。
机器学习模型可以使用机器学习框架来实施和部署,例如,TensorFlow框架、Microsoft Cognitive Toolkit框架、Apache Singa框架或Apache MXNet框架。
本说明书中所描述的主题的实施例可以实施在计算系统中,该计算系统包括后端组件(例如,作为数据服务器),或包括中间件组件(例如,应用服务器),或包括前端组件(例如,具有图形用户界面、web浏览器或应用的客户端计算机,用户可以通过该图形用户界面、该web浏览器或该应用与本说明书中所描述的主题的实现方式进行交互),或包括一个或多个这种后端组件、中间件组件或前端组件的任意组合。系统的组件可以通过任何形式或介质的数字数据通信(例如,通信网络)相互连接。通信网络的示例包括局域网(LAN)和广域网(WAN),例如,互联网。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系借助于在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。在一些实施例中,服务器将数据(例如,HTML页面)传输给用户设备(例如,为了向与设备(该设备充当客户端)交互的用户显示数据并且接收来自该用户的用户输入)。在用户设备处生成的数据(例如,用户交互的结果)可以是在服务器处从设备接收的。
虽然本说明书包含许多具体实现方式细节,但是不应将这些细节视为对任何发明的范围或可能被要求的内容的范围的限制,而是作为可以特定于特定发明的特定实施例的特征的描述。本说明书中在单独的实施例的背景下所描述的某些特征还可以在单个实施例中组合实施。相反,在单个实施例的背景下所描述的各种特征也可以单独地或按照任何合适的子组合在多个实施例中实施。此外,虽然上面可能将特征描述为以某些组合起作用,并且最初甚至被同样地进行了要求,但是在某些情况下,来自所要求的组合的一个或多个特征可以从组合中删除,并且所要求的组合可以涉及子组合或子组合的变化。
类似地,虽然操作以特定顺序在附图中进行描绘并且在权利要求中进行说明,但是这不应被理解为要求以所示的特定顺序或以相继顺序执行这样的操作,或者所有所示的操作都被执行来获得期望结果。在某些情况下,多任务处理和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中都需要这种分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或封装到多个软件产品中。
主题的特定实施例已经进行了描述。其他实施例在以下权利要求书的范围内。例如,权利要求书中所引用的动作可以按照不同的顺序执行并且仍然实现期望结果。作为一个示例,附图中所描绘的过程不一定需要以所示的特定顺序或相继顺序来完成期望结果。在一些情况下,多任务处理和并行处理可以是有利的。
Claims (16)
1.一种实施神经网络的方法,所述神经网络包括多个层,所述多个层包括至少一个稀疏1x 1卷积层,所述卷积层的输入针对被设置在H×W数组中的多个元素中的每个元素包括特征值的相应输入通道,
所述稀疏1x 1卷积层被配置为将稀疏1x 1卷积应用于所述输入通道,以形成相应的输出通道,每个输出通道由多个卷积值组成,所述稀疏1x 1卷积由稀疏C×C’权重矩阵定义,所述权重矩阵具有等于零的多个空权重以及多个非空权重,并且所述输入通道构成稠密C’×HW激活矩阵,所述激活矩阵具有为所述激活矩阵的每个元素定义的特征值,
所述方法包括:
获得所述权重矩阵的空权重的指示;以及
通过针对包括在所述激活矩阵的行中的多个元素的行向量的元素通过以下步骤生成所述多个元素的卷积值,来结合所述稠密C’×HW激活矩阵处理所述稀疏C×C’权重矩阵:
(a)从存储所述激活矩阵的存储器单元中提取所述输入通道的对应特征值,所述对应特征值是如下特征值:根据所述指示,针对这些特征值的所述权重矩阵的对应权重是非空权重;以及
(b)形成由所述相应的非空权重加权的所提取的对应特征值的对应和。
2.根据权利要求1所述的方法,其中,所述空权重实质上构成了所述权重矩阵的70%至95%的分量。
3.根据权利要求1或权利要求2所述的方法,其中,所述神经网络的输出层是全连接的。
4.根据前述权利要求中任一项所述的方法,其中,所述存储器单元具有CHW存储器布局。
5.根据权利要求4所述的方法,其中,所述处理是利用同一行中元素的连续行向量的内部循环和连续行的外部循环来执行的。
6.根据前述权利要求中任一项所述的方法,其中,所述处理是对连续行向量重复执行的,所述行向量共同包括元素的整个数组。
7.根据前述权利要求中任一项所述的方法,所述神经网络进一步包括输出层,所述输出层在所述卷积层之后并且被设置为生成一个或多个输出值,每个输出值都是基于所有所述元素的所有卷积值来确定的。
8.根据前述权利要求中任一项所述的方法,其中,所述非空权重是在所述权重矩阵的多个行中的每个行中的相同位置。
9.根据权利要求8所述的方法,其中,对所述权重矩阵的多个行的处理并行地被执行,以生成所述行向量的输出通道的对应的多个卷积值。
10.根据前述权利要求中任一项所述的方法,其中,在所述多个元素的卷积值的生成期间,在从所述存储器单元的对应的特征值的提取之后,所提取的特征值被存储在缓存存储器中,在所述多个元素的先前卷积值的生成期间,未对所述缓存存储器中所存储的特征值进行提取和存储。
11.根据权利要求10所述的方法,其中,在基于所述多个元素的对应特征值的多个元素的卷积值的生成期间,多个附加元素的对应特征值也被从所述存储器单元中读入所述缓存存储器中,所述多个附加元素的卷积值不与所述多个元素的卷积值并行生成。
12.一种生成按照根据前述权利要求中任一项所述的方法实施的神经网络的方法,所述方法包括:
基于训练示例执行训练过程,以确定所述权重矩阵的非空权重。
13.根据权利要求12所述的方法,其中,所述权重矩阵的空权重是根据稀疏性数据集预先确定的。
14.一种被配置为实施神经网络的系统,所述神经网络包括多个层,所述多个层包括至少一个稀疏1x 1卷积层,所述卷积层的输入针对被设置在H×W数组中的多个元素中的每个元素包括特征值的相应输入通道,
所述稀疏1x 1卷积层被配置为将稀疏1x 1卷积应用于所述输入通道,以形成相应的输出通道,每个输出通道由多个卷积值组成,所述稀疏1x 1卷积由稀疏C×C’权重矩阵定义,所述权重矩阵具有等于零的多个空权重以及多个非空权重,并且所述输入通道构成稠密C’×HW激活矩阵,所述激活矩阵具有为所述激活矩阵的每个元素定义的特征值,
所述系统包括存储器单元和处理单元,所述存储器单元存储指令,所述指令在由所述处理单元实施时使所述处理单元:
获得所述权重矩阵的空权重的指示;以及
通过针对包括在所述激活矩阵的行中的多个元素的行向量的元素通过以下步骤生成所述多个元素的卷积值,来结合所述稠密C’×HW激活矩阵处理所述稀疏C×C’权重矩阵:
(a)从存储所述激活矩阵的存储器单元中提取所述输入通道的对应特征值,所提取的对应特征值是如下特征值:根据所述指示,针对这些特征值的所述权重矩阵的对应权重是非空权重;以及
(b)形成由所述相应的非空权重加权的所提取的对应特征值的对应和。
15.根据权利要求14所述的系统,所述系统被配置为实施根据权利要求1至11中任一项所述的方法。
16.一种有形的非暂时性存储介质,所述介质存储计算机程序指令,以实施根据权利要求1至13中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962905888P | 2019-09-25 | 2019-09-25 | |
US62/905,888 | 2019-09-25 | ||
PCT/EP2020/076587 WO2021058578A1 (en) | 2019-09-25 | 2020-09-23 | Fast sparse neural networks |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114424252A true CN114424252A (zh) | 2022-04-29 |
Family
ID=72644240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080066353.5A Pending CN114424252A (zh) | 2019-09-25 | 2020-09-23 | 快速稀疏神经网络 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20220335272A1 (zh) |
EP (1) | EP4007971A1 (zh) |
JP (1) | JP7403638B2 (zh) |
KR (1) | KR20220051242A (zh) |
CN (1) | CN114424252A (zh) |
CA (1) | CA3155094A1 (zh) |
WO (1) | WO2021058578A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109214508B (zh) * | 2017-06-30 | 2022-04-05 | 华为技术有限公司 | 信号处理的系统和方法 |
US20210264239A1 (en) * | 2020-02-20 | 2021-08-26 | Tencent America LLC | Method and apparatus for neural network optimized matrix-matrix multiplication (nnmm) |
KR20230063791A (ko) * | 2021-11-02 | 2023-05-09 | 리벨리온 주식회사 | 인공지능 코어, 인공지능 코어 시스템 및 인공지능 코어 시스템의 로드/스토어 방법 |
US20230267301A1 (en) * | 2022-02-23 | 2023-08-24 | International Business Machines Corporation | Neural network inference quantization |
CN116187420B (zh) * | 2023-05-04 | 2023-07-25 | 上海齐感电子信息科技有限公司 | 轻量化的深度神经网络的训练方法、系统、设备和介质 |
KR102660892B1 (ko) * | 2023-06-27 | 2024-04-26 | 주식회사 하이퍼엑셀 | 로터리 포지션 임베딩 연산을 위한 메모리 매핑 방법 및 시스템 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11003985B2 (en) | 2016-11-07 | 2021-05-11 | Electronics And Telecommunications Research Institute | Convolutional neural network system and operation method thereof |
CN107239824A (zh) | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
US20180330235A1 (en) | 2017-05-15 | 2018-11-15 | National Taiwan University | Apparatus and Method of Using Dual Indexing in Input Neurons and Corresponding Weights of Sparse Neural Network |
-
2020
- 2020-09-23 US US17/763,924 patent/US20220335272A1/en active Pending
- 2020-09-23 KR KR1020227009693A patent/KR20220051242A/ko unknown
- 2020-09-23 JP JP2022519014A patent/JP7403638B2/ja active Active
- 2020-09-23 CA CA3155094A patent/CA3155094A1/en active Pending
- 2020-09-23 WO PCT/EP2020/076587 patent/WO2021058578A1/en unknown
- 2020-09-23 CN CN202080066353.5A patent/CN114424252A/zh active Pending
- 2020-09-23 EP EP20780164.8A patent/EP4007971A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2022550730A (ja) | 2022-12-05 |
KR20220051242A (ko) | 2022-04-26 |
EP4007971A1 (en) | 2022-06-08 |
JP7403638B2 (ja) | 2023-12-22 |
WO2021058578A1 (en) | 2021-04-01 |
CA3155094A1 (en) | 2021-04-01 |
US20220335272A1 (en) | 2022-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114424252A (zh) | 快速稀疏神经网络 | |
AU2020220126B2 (en) | Superpixel methods for convolutional neural networks | |
CN108073983B (zh) | 在硬件中执行核心跨越 | |
CN109389027B (zh) | 表单结构提取网络 | |
CN111279362B (zh) | 胶囊神经网络 | |
EP4312157A2 (en) | Progressive neurale netzwerke | |
GB2571825A (en) | Semantic class localization digital environment | |
US11144782B2 (en) | Generating video frames using neural networks | |
US11693627B2 (en) | Contiguous sparsity pattern neural networks | |
US10909457B2 (en) | Compound model scaling for neural networks | |
CN113112509A (zh) | 图像分割模型训练方法、装置、计算机设备和存储介质 | |
US20210390410A1 (en) | Local self-attention computer vision neural networks | |
US20200349418A1 (en) | Gated linear networks | |
US11481994B2 (en) | Method and apparatus for extracting image data in parallel from multiple convolution windows, device, and computer-readable storage medium | |
US20210064961A1 (en) | Antisymmetric neural networks | |
US20230008777A1 (en) | Accelerating convolutions for sparse inputs | |
US20240135543A1 (en) | Method and device with image data generating | |
KR102594477B1 (ko) | 스코어 재조정을 통한 객체 검출 방법 | |
KR20230096904A (ko) | 희소 행렬 데이터 압축 방법 및 장치 | |
WO2022248727A1 (en) | Generating neural network outputs by cross attention of query embeddings over a set of latent embeddings | |
CN118043818A (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 |