稀疏深度卷积网络权重的压缩的制作方法

文档序号:20605933发布日期:2020-05-01 22:05阅读:474来源:国知局
稀疏深度卷积网络权重的压缩的制作方法

相关申请的交叉引用

本申请要求于2017年9月21日提交的题为“compressionofsparsedeepconvolutionalnetworkweights(稀疏深度卷积网络权重的压缩)”的美国临时申请no.62/561,640、以及于2018年9月20日提交的题为“compressionofsparsedeepconvolutionalnetworkweights(稀疏深度卷积网络权重的压缩)”的美国专利申请no.16/137,491的优先权,这两件申请通过援引全部明确纳入于此。

背景

领域

本公开的某些方面一般涉及神经网络,且更具体地涉及改进稀疏神经网络权重的压缩的系统和方法。

背景

可包括一群互连的人工神经元(例如,神经元模型)的人工神经网络是一种计算设备或者表示将由计算设备执行的方法。

卷积神经网络是一种前馈人工神经网络。卷积神经网络可包括神经元集合,其中每个神经元具有感受野并且共同地拼出一输入空间。卷积神经网络(cnn)具有众多应用。具体而言,cnn已经在模式识别和分类领域中被广泛使用。

深度学习架构(诸如深度置信网络和深度卷积网络)是分层神经网络架构,其中第一层神经元的输出变成第二层神经元的输入,第二层神经元的输出变成第三层神经元的输入,依此类推。深度神经网络(dnn)可被训练以识别特征阶层并且因此它们已被越来越多地用于对象识别应用。类似于卷积神经网络,这些深度学习架构中的计算可分布在处理节点群体上,其可被配置在一个或多个计算链中。这些多层架构可每次训练一层并可使用后向传播微调。

神经网络越来越多地用于各种应用中。然而,一些神经网络可例如在对计算和/或功率资源有限制的设备中产生计算和功耗开销。将在具有有限的可用计算和/或功率资源的设备上实现的神经网络可超过那些有限的可用资源的阈值。例如,移动设备、可穿戴设备和/或物联网(iot)设备可包括可被一些神经网络超出的计算(例如,片上)资源和/或功率(例如,电池)资源。因此,可需要一种用于在具有有限的计算和/或功率资源的各种设备上实现的优化神经网络的办法。

概述

以下给出了一个或多个方面的简要概述以提供对此类方面的基本理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在标识出所有方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的目的是以简化形式给出一个或多个方面的一些概念以作为稍后给出的更详细描述之序言。

本领域技术人员应当领会,本公开可容易地被用作修改或设计用于实施与本公开相同的目的的其他结构的基础。本领域技术人员还应认识到,这样的等效构造并不脱离所附权利要求中所阐述的本公开的教导。被认为是本公开的特性的新颖特征在其组织和操作方法两方面连同进一步的目的和优点在结合附图来考虑以下描述时将被更好地理解。然而,要清楚理解的是,提供每一幅附图均仅用于解说和描述目的,且无意作为对本公开的限定的定义。

如本文所述,神经网络可消耗在其上实现该神经网络的设备的资源。随着神经网络的复杂性和能力的增加,神经网络可开始超出一些设备的可用资源。即,一些神经网络可消耗通常可超出一些设备的片上和/或电源资源的数据量、处理器容量和/或功率。此类设备的示例可包括移动设备、可穿戴设备、服务器、物联网(iot)设备、实现计算机视觉和/或检测的设备、实现对象识别的设备、虚拟现实设备、增强现实设备、汽车设备、声音设备、或其中功率、性能和/或存储器带宽可以是要素的基本上任何其他设备。在具有一些有限的计算(例如,片上)资源和/或功率(例如,电池)资源的此类设备中,本公开可提供控制神经网络以在设备限制内操作的各方面。

权重矩阵可包括输入到人工神经元或节点的多个权重,以便影响那些节点的输出(例如,激活)。权重矩阵的行可以是权重向量,其可包括神经网络层的权重。在一些方面,可消除一个或多个权重(例如,用零替代),以便减少开销(例如,处理功率)而不会明显降级神经网络的准确性。例如,示例性dcn层的权重可以是百分之三十到百分之七十“稀疏”–例如,使得示例性层的权重向量的百分之三十到百分之七十权重被零替代。

为了解决与由神经网络消耗计算(例如,系统带宽、处理器能力等)资源和/或功率(例如,电池、电源等)资源相对应的问题,本公开的各方面可将此类神经网络描述为实现可被压缩的稀疏权重向量。然而,实现经压缩稀疏权重向量集中的一个或多个向量的神经网络可在未解压缩该经压缩稀疏权重向量集的情况下(例如,在激活神经网络的一层或多层处的一个或多个神经元之前)进行操作。本公开可描述用于利用经压缩稀疏权重向量集来操作神经网络的各种方法、计算机可读介质和/或装置。

在本公开的一方面,提供了用于操作神经网络的第一方法、第一计算机可读介质、和第一装置。例如,用于操作神经网络的第一装置可被配置成接收稀疏权重向量集,并且该稀疏权重向量集中的至少第一稀疏权重向量包括至少一个零权重元素和至少一个非零权重元素。该装置可被配置成通过移除该稀疏权重向量集中的至少第一稀疏权重向量中的至少一个零权重元素中的一者或多者以及将至少第一稀疏权重向量与该稀疏权重向量集中的至少第二稀疏权重向量组合来压缩该稀疏权重向量集以产生经压缩稀疏权重向量集。该装置可被配置成基于经压缩稀疏权重向量集来操作神经网络。

在本公开的一方面,提供了用于操作神经网络的第二方法、第二计算机可读介质、和第二装置。例如,用于操作神经网络的第二装置可被配置成接收稀疏权重向量集,并且每个稀疏权重向量可包括至少一个零权重元素和至少一个非零权重元素。该装置可被配置成通过避免使用该稀疏权重向量集中的每个稀疏权重向量中的至少一个零权重元素来执行一个或多个计算来基于该稀疏权重向量集来执行稀疏计算,并且该稀疏计算的执行产生一个或多个部分和。该装置可被配置成至少部分地基于该一个或多个部分和来操作神经网络。

本公开的附加特征和优点将在下文描述。本领域技术人员应当领会,本公开可容易地被用作修改或设计用于实施与本公开相同的目的的其他结构的基础。本领域技术人员还应认识到,这样的等效构造并不脱离所附权利要求中所阐述的本公开的教导。被认为是本公开的特性的新颖特征在其组织和操作方法两方面连同进一步的目的和优点在结合附图来考虑以下描述时将被更好地理解。然而,要清楚理解的是,提供每一幅附图均仅用于解说和描述目的,且无意作为对本公开的限定的定义。

附图简述

在结合附图理解下面阐述的详细描述时,本公开的特征、本质和优点将变得更加明显,在附图中,相同附图标记始终作相应标识。

图1解说了根据本公开的某些方面的使用片上系统(soc)(包括通用处理器)来设计神经网络的示例实现。

图2解说了根据本公开的各方面的系统的示例实现。

图3a-d是解说根据本公开的各方面的神经网络的示图。

图3e是解说根据本公开的各方面的神经网络的框图。

图4-e是解说根据本公开的各方面的与神经网络相关联的权重元素的示图。

图5是解说根据本公开的各方面的存储器中用于操作神经网络的权重元素的框图。

图6是解说根据本公开的各方面的用于基于权重元素来操作神经网络的示例性硬件映射的框图。

图7是解说根据本公开的各方面的用于基于权重元素来操作神经网络的示例性硬件架构的框图。

图8a-e是解说根据本公开的各方面的操作神经网络的方法的流程图。

图9a-b是解说根据本公开的某些方面的操作神经网络的方法的流程图。

详细描述

以下结合附图阐述的详细描述旨在作为各种配置的描述,而无意表示可实践本文中所描述的概念的仅有配置。本详细描述包括具体细节以提供对各种概念的透彻理解。然而,对于本领域技术人员将显而易见的是,没有这些具体细节也可以实践这些概念。在一些实例中,以框图形式示出众所周知的结构和组件以便避免湮没此类概念。

基于本教导,本领域技术人员应领会,本公开的范围旨在覆盖本公开的任何方面,不论其是与本公开的任何其他方面相独立地还是组合地实现的。例如,可以使用所阐述的任何数目的方面来实现装置或实践方法。另外,本公开的范围旨在覆盖使用作为所阐述的本公开的各个方面的补充或者与之不同的其他结构、功能性、或者结构及功能性来实践的此类装置或方法。应当理解,所披露的本公开的任何方面可由权利要求的一个或多个元素来实施。

措辞“示例性”在本文中用于意指“用作示例、实例、或解说”。本文中描述为“示例性”的任何方面不必被解释为优于或胜过其他方面。

尽管本文描述了特定方面,但这些方面的众多变体和置换落在本公开的范围之内。虽然提到了一些益处和优点,但本公开的范围并非旨在被限定于特定益处、用途或目标。相反,本公开的各方面旨在能宽泛地应用于不同的技术、系统配置、网络和协议,其中一些作为示例在附图以及以下对优选方面的描述中解说。详细描述和附图仅仅解说本公开而非限定本公开,本公开的范围由所附权利要求及其等效技术方案来定义。

图1解说了根据本公开的某些方面使用片上系统(soc)100的前述运动建模系统的示例实现,soc100可包括通用处理器(cpu)或多核通用处理器(cpu)102。soc100的每个所解说组件可例如经由总线或其他互连与一个或多个其他组件通信地耦合。

变量(例如,神经信号和突触权重)、与计算设备(例如,带有权重的神经网络)相关联的系统参数、延迟、频率槽信息、以及任务信息可被存储在与一个或多个神经处理单元(npu)108相关联的存储器块中、与cpu102相关联的存储器块中、与图形处理单元(gpu)104相关联的存储器块中、与数字信号处理器(dsp)106相关联的存储器块中、专用存储器块118中,或者可跨多个块分布。在通用处理器102处执行的指令可从与cpu102相关联的程序存储器加载或可从专用存储器块118加载。

soc100还可包括为具体功能定制的附加处理块(诸如连通性块110(其可包括第四代长期演进(4glte)连通性、第五代(5g)新无线电(nr)连通性、无执照wi-fi连通性、usb连通性、蓝牙连通性等)以及可例如处理音频和/或视觉输出的多媒体处理器112)。在一种实现中,npu实现在cpu、dsp、和/或gpu中。soc100还可包括(诸)传感器处理器114、图像信号处理器(isp)116、和/或导航组件120(其可包括全球定位系统)。

soc100可基于指令集,诸如高级精简指令集计算(risc)(arm)指令集。根据本公开的第一方面,用于操作神经网络的指令可被存储在存储器118中,并且可被加载到处理器102中并由处理器102执行。被加载到处理器102中的指令可使得soc100接收稀疏权重向量集,其中该稀疏权重向量集中的至少第一稀疏权重向量包括至少一个零权重元素和至少一个非零权重元素。被加载到处理器102中的指令可使得soc100通过移除该稀疏权重向量集中的至少第一稀疏权重向量中的至少一个零权重元素中的一者或多者以及将至少第一稀疏权重向量与该稀疏权重向量集中的至少第二稀疏权重向量组合来压缩该稀疏权重向量集以产生经压缩稀疏权重向量集。被加载到处理器102中的指令可使得soc100基于经压缩稀疏权重向量集来操作神经网络。

根据本公开的第二方面,被加载到处理器102中的指令可使得soc100接收稀疏权重向量集,并且每个稀疏权重向量可包括至少一个零权重元素和至少一个非零权重元素。被加载到处理器102中的指令可使得soc100通过避免使用该稀疏权重向量集中的每个稀疏权重向量中的至少一个零权重元素来执行一个或多个计算来基于该稀疏权重向量集来执行稀疏计算,并且该稀疏计算的执行产生一个或多个部分和。被加载到处理器102中的指令可使得soc100至少部分地基于该一个或多个部分和来操作神经网络。

图2解说了根据本公开的某些方面的系统200的示例实现。如图2中所解说的,系统200可具有可执行本文所描述的方法的各种操作的多个局部处理单元202。每个局部处理单元202可包括局部状态存储器204和可存储神经网络的参数的局部参数存储器206。另外,局部处理单元202可具有用于存储局部模型程序的局部(神经元)模型程序(lmp)存储器208、用于存储局部学习程序的局部学习程序(llp)存储器210、以及局部连接存储器212。此外,如图2中所解说的,每个局部处理单元202可与用于为该局部处理单元的各局部存储器提供配置的配置处理器单元214对接,并且与提供各局部处理单元202之间的路由的路由连接处理单元216对接。

深度学习架构可通过学习在每一层中以逐次更高的抽象程度来表示输入、藉此构建输入数据的有用特征表示来执行对象识别任务。以此方式,深度学习解决了常规机器学习的主要瓶颈。在深度学习出现之前,用于对象识别问题的机器学习办法可能严重依赖人类工程设计的特征,或许与浅分类器相结合。浅分类器可以是两类线性分类器,例如,其中可将特征向量分量的加权和与阈值作比较以预测输入属于哪一类别。人类工程设计的特征可以是由拥有领域专业知识的工程师针对特定问题领域定制的模版或内核。相比之下,深度学习架构可学习以表示与人类工程师可能会设计的类似的特征,但它是通过训练来学习的。此外,深度网络可以学习以表示和识别人类可能还没有考虑过的新类型的特征。

深度学习架构可以学习特征阶层。例如,如果向第一层呈递视觉数据,则第一层可学习以识别输入流中的相对简单的特征(诸如边)。在另一示例中,如果向第一层呈递听觉数据,则第一层可学习以识别特定频率中的频谱功率。取第一层的输出作为输入的第二层可以学习以识别特征组合,诸如对于视觉数据识别简单形状或对于听觉数据识别声音组合。例如,更高层可学习以表示视觉数据中的复杂形状或听觉数据中的词语。再高层可学习以识别常见视觉对象或口语短语。

深度学习架构在被应用于具有自然阶层结构的问题时可能表现特别好。例如,机动车辆的分类可受益于首先学习以识别轮子、挡风玻璃、以及其他特征。这些特征可在更高层以不同方式被组合以识别轿车、卡车和飞机。

神经网络可被设计成具有各种连通性模式。在前馈网络中,信息从较低层被传递到较高层,其中给定层中的每个神经元向更高层中的神经元进行传达。如上所述,可在前馈网络的相继层中构建阶层式表示。神经网络还可具有回流或反馈(也被称为自顶向下(top-down))连接。在回流连接中,来自给定层中的神经元的输出可被传达给相同层中的另一神经元。回流架构可有助于识别跨越不止一个按顺序递送给该神经网络的输入数据组块的模式。从给定层中的神经元到较低层中的神经元的连接被称为反馈(或自顶向下)连接。当高层级概念的识别可辅助辨别输入的特定低层级特征时,具有许多反馈连接的网络可能是有助益的。

参照图3a-3d,神经网络的各层之间的连接可以是全连接的(302)或局部连接的(304)。在图3a的全连接网络302中,第一层中的神经元可将它的输出传达给第二层中的每个神经元,从而第二层中的每个神经元将从第一层中的每个神经元接收输入。替换地,在图3b的局部连接网络304中,第一层中的神经元可连接到第二层中有限数目的神经元。图3c的卷积网络306可以是局部连接的,并且被进一步配置成使得与针对第二层中每个神经元的输入相关联的连接强度被共享(例如,308)。更一般地,网络的局部连接层可被配置成使得一层中的每个神经元将具有相同或相似的连通性模式,但其连接强度可具有不同的值(例如,310、312、314和316)。局部连接的连通性模式可能在更高层中产生空间上相异的感受野,这是由于给定区域中的更高层神经元可接收到通过训练被调谐为到网络的总输入的受限部分的性质的输入。

局部连接的神经网络可能非常适合于其中输入的空间位置有意义的问题。参考图3d,被设计成识别来自车载相机的视觉特征的网络300可发展具有不同性质的高层神经元,这取决于它们与图像下部关联还是与图像上部关联。例如,与图像下部相关联的神经元可学习以识别车道标记,而与图像上部相关联的神经元可学习以识别交通信号灯、交通标志等。例如,可通过对图像合适的尺寸(例如,5x5)的一个或多个卷积核来对该图像进行滤波,这可导致一个或多个特征图。可以利用适当的内核大小(例如,2x2)来对特征图进行子采样,以便确定该一个或多个特征图的值。可执行另一迭代,其中利用卷积核(例如,5x5)对经子采样的图像进行滤波,并且随后再次子采样以实现局部不变性和维度缩减。

深度卷积网络(dcn)可以是(诸)卷积网络的网络,其配置有附加的池化和归一化层。dcn已在许多任务上达成现有最先进的性能。dcn可使用监督式学习来训练,其中输入和输出目标两者对于许多典范是已知的并被用于通过使用梯度下降法来修改网络的权重。

dcn可以是前馈网络。另外,如上所述,从dcn的第一层中的神经元到下一更高层中的神经元群的连接跨第一层中的神经元被共享。dcn的前馈和共享连接可被利用于进行快速处理。dcn的计算负担可比例如类似大小的包括回流或反馈连接的神经网络的计算负担小得多。

可以用受监督式学习来训练dcn。在训练期间,可向dcn呈递图像(诸如限速标志的经裁剪图像326),并且可随后计算“前向传递(forwardpass)”以产生输出322。输出322可以是对应于特征(诸如“标志”和“60”)的值向量。网络设计者可能希望dcn在输出特征向量中针对其中一些神经元输出高得分(例如,得分可以是指示对特征图进行分类的确定性的值,其中较高得分对应于较高确定性,而较低得分对应于较低确定性)。例如,该者得分对应于如已被训练的网络300的输出322中所示的“标志”和“60”。在训练之前,dcn产生的输出很可能是不正确的,并且由此可计算实际输出与目标输出之间的误差。dcn的权重可随后被调整以使得dcn的输出得分与目标更紧密地对齐。

为了调整权重,学习算法可为权重计算梯度向量。该梯度可指示在权重被略微调整情况下误差将增加或减少的量。在顶层处,该梯度可直接对应于连接倒数第二层中的活化神经元与输出层中的神经元的权重的值。在较低层中,该梯度可取决于权重的值以及所计算出的较高层的误差梯度。权重可随后被调整以减小误差。这种调整权重的方式可被称为“后向传播”,因为其涉及在神经网络中的“后向传递(backwardpass)”。

在实践中,权重的误差梯度可能是在少量示例上计算的,从而计算出的梯度近似于真实误差梯度。这种近似方法可被称为随机梯度下降法。随机梯度下降法可被重复,直到整个系统可达成的误差率已停止下降或直到误差率已达到目标水平。

在学习之后,dcn可被呈递新图像326并且在网络中的前向传递可产生输出322,其可被认为是该dcn的推断或预测。

深度置信网络(dbn)是可包括多层隐藏节点的概率性模型。dbn可被用于提取训练数据集的阶层式表示。dbn可通过堆叠多层受限波尔兹曼机(rbm)来获得。rbm是一类可在输入集上学习概率分布的人工神经网络。由于rbm可在没有关于每个输入应该被分类到哪个类别的信息的情况下学习概率分布,因此rbm经常被用于无监督式学习中。使用混合无监督式和受监督式范式,dbn的底部rbm可按无监督方式被训练并且可以用作特征提取器,而顶部rbm可按受监督方式(在来自先前层的输入和目标类别的联合分布上)被训练并且可用作分类器。

卷积网络的每一层的处理可被认为是空间不变模版或基础投影。如果输入首先被分解成多个通道,诸如彩色图像的红色、绿色和蓝色通道,那么在该输入上训练的卷积网络可被认为是三维的,其具有沿着该图像的轴的两个空间维度以及捕捉颜色信息的第三维度。卷积连接的输出可被认为在后续层318和320中形成特征图,该特征图(例如,320)中的每个元素从先前层(例如,318)中一定范围的神经元以及从该多个通道中的每一个通道接收输入。

在卷积神经网络(cnn)的上下文中,通道可向该cnn的每一层提供输入。例如,三个通道可以是用于标识红色、绿色和蓝色的颜色通道,而第四通道可以是信息通道,以便标识关于图像的空间信息(例如,像素之间的距离)、像素大小、强度或温度。cnn的每一层可包括多个输入通道。可以对层的各通道应用滤波器,例如,以便对输入通道进行滤波。因此,层的输出通道可基于应用于输入通道的滤波器。在一个方面,可将(例如,通过多个滤波器)对输入通道进行滤波的结果相加在一起以获得对应的输出通道。

特征图中的值可以用非线性(诸如矫正max(0,x))进一步处理。来自毗邻神经元的值可被进一步池化(这对应于降采样)并可提供附加的局部不变性以及维度缩减。还可通过特征图中神经元之间的侧向抑制来应用归一化,其对应于白化。

深度学习架构的性能可随着有更多被标记的数据点变为可用或随着计算能力提高而提高。现代深度神经网络(dnn)用比仅仅十五年前可供典型研究者使用的计算资源多数千倍的计算资源来例行地训练。新的架构和训练范式可进一步推升深度学习的性能。经矫正的线性单元可减少被称为梯度消失的训练问题。新的训练技术可减少过度拟合(over-fitting)并因此使更大的模型能够达成更好的普遍化。封装技术可抽象出给定的感受野中的数据并进一步提升总体性能。

图3e是解说示例性深度卷积网络350的框图。深度卷积网络350可包括多个基于连通性和权重共享的不同类型的层。如图3e所示,该示例性深度卷积网络350包括多个卷积块(例如,c1358a和c2358b)。每个卷积块可被配置有卷积层352a-b中的相应一者、归一化层(lnorm)354a-b中的相应一者、以及池化层356a-b中的相应一者。卷积层可包括一个或多个卷积滤波器,其可被应用于输入数据以生成特征图。尽管仅示出了两个卷积块,但本公开不限于此,而是,根据设计偏好,任何数目的卷积块可被包括在深度卷积网络350中。每个归一化层354a-b可被用于对来自卷积层352a-b中的相应一者的卷积滤波器的输出进行归一化。例如,每个归一化层354a-b可提供白化或侧向抑制。每个池化层356a-b可提供在空间上的降采样聚集以实现局部不变性和维度缩减。

例如,深度卷积网络的平行滤波器组可被加载到soc100的cpu102或gpu104上以达成高性能和低功耗。在替换实施例中,平行滤波器组可被加载到soc100的dsp106或isp116上。另外,dcn可访问其他可存在于soc上的处理块,诸如分别专用于传感器和导航的处理块114和120。

深度卷积网络350还可包括一个或多个全连通层(例如,fc1360和fc2362)。深度卷积网络350可进一步包括逻辑回归(lr)层364。深度卷积网络350的每一层之间是要被更新的权重。每一层的输出可以用作深度卷积网络350中后续层的输入以从第一卷积块c1358a处提供的输入数据(例如,图像、音频、视频、传感器数据和/或其他输入数据)学习阶层式特征表示。

神经网络可包括多个层,并且每一层可包括节点集(也被称为“单元”或“人工神经元”)。每个节点可接收输入。可提供第一输入作为对神经网络的输入(例如,在(诸)节点的输入层)或作为来自另一层的节点的输出(例如,在(诸)节点的(诸)隐藏层)。第一输入可与权重元素(或“权重”)相关联,该权重元素可引入与第一输入相关联的偏置(例如,基于第一输入的相对重要性)。一些节点可接收与该节点相关联的权重(例如“偏置”),例如,以便影响该节点的输出或激活。每个节点可向输入应用激活函数(例如,s型(sigmoid)函数、经矫正线性单元(relu)函数等),以便生成输出或激活。该输出或激活可在神经网络的输出层处被提供,或者可作为输入被提供给另一节点。因此,权重可被存储在存储器中,诸如在权重向量集中。

图4a-e是解说要由神经网络实现的权重的示图。图4a解说了权重向量集400,包括针对八个激活406a-h的十六个权重向量。权重向量集400的每一行402可对应于不同的权重向量(例如,十六个八元素权重向量)。例如,在cnn的上下文中,权重向量可以是输出滤波器,其可与输入(例如,针对八个激活406a-h的八通道输入)卷积。权重向量集400的每一列404可对应于例如针对通道i执行一组计算可能需要的激活集406a-h中的每个激活。激活可以是从一层(例如,前一层)的节点输出的值,该值用作神经网络的另一层(例如,下一层)的节点的输入。权重向量集400中的每个权重向量中的每个数值可对应于不同的权重(例如,对于一个过滤器和第一激活406a的至少一个权重1、对于第二过滤器和第一激活406a的至少一个权重2、…、对于第十六过滤器和第一激活406a的至少一个权重16等)(注意,每个至少一个权重的值可以不是所解说的数值)。解说性地,权重向量集400可包括十六个权重向量,每个权重向量可被用于与激活406a-h中的每个激活相对应的每个输入通道。对于与输入通道相对应的每个权重向量的每个权重,可执行mac运算(例如,对于与八个激活406a-h中的每个激活相对应的每个权重的八个mac运算)。可以通过行402的每个单独行中的mac运算累加一个部分和,以获得来自128个计算(十六乘八)的总共十六个部分和。

根据各个方面,一个或多个mac运算可消耗系统架构的时钟循环(例如,soc100的时钟循环)。例如,系统架构可支持每时钟循环八个mac运算。因此,128个计算(例如,各自具有八个元素的十六个权重向量与八通道输入相乘)可以在十六个时钟循环(例如,128个计算除以每时钟循环八个mac运算)中执行。

随着神经网络的复杂性增加,权重向量和/或输入通道的数目、大小和/或长度可相应地增加。这种增加可消耗数个时钟循环,这是不令人满意的和/或不适用于一些系统架构。因此,可消除一个或多个权重,诸如通过从权重向量集中的权重向量中移除权重。可通过将权重设置为零来实现从权重向量中消除/移除权重。例如,可通过削减、微调、重新训练和/或另一办法来消除一个或多个权重,以便标识可被消除而不会不令人满意地降级神经网络的输出层的准确性的一个或多个权重。

通过消除一个或多个权重,可获得或生成“稀疏”权重向量集。稀疏权重向量集可维持被确定为对于要从神经网络的输出层获得的令人满意的准确结果有用的那些权重。例如,cnn(例如dcn)的一层或多层可以是大约30%到70%稀疏,其中剩余大约70%到30%的权重被填充有被认为对于从该cnn中获得准确结果有用的权重。

图4b解说了第一稀疏权重向量集420。例如,可消除权重向量集400的每个输出滤波器(例如,与行402之一相对应的输出滤波器)的一个或多个权重,以便生成稀疏权重向量集420。为了生成稀疏权重向量集420,可将权重向量集400中的一个或多个权重从非零值调整为零值,这可消除那些示例性元素422a-b。例如,实现权重向量集400的神经网络可被削减、微调和/或重新训练,以便消除一个或多个权重,其随后可以是零权重元素422a-b。在一个方面,稀疏权重向量集420的生成可包括:舍入相应权重的相应值以便消除该相应权重(例如,舍入为零的相应值可允许消除相应权重);向相应权重的相应值应用相应的偏置项以便消除该相应权重(例如,将相应值偏置为零可消除相应权重);或者用于标识和消除权重向量集400中的一个或多个权重以生成稀疏权重向量集420的办法。

如图4b所示,解说了稀疏权重向量集420。在一方面,可消除或移除多个权重,使得稀疏权重向量集420中的一个或多个向量包括零权重元素422a-b(例如,零权重元素422a-b可以是设置为零的值)。在零权重元素422a-b下,稀疏权重向量集420可包括86个权重(例如,33%的稀疏度以及67%的占用率),并且稀疏权重向量集420中的每个稀疏权重向量426可包括平均5.4个权重。图4b是解说性的,并且可以在不脱离本公开的范围的情况下实践用于创建或生成稀疏权重向量的其他办法。

在引入零权重元素422a-b时,可以相应地减少mac运算的数目(例如,因为不需要针对零权重元素422a-b执行mac运算)。例如,稀疏权重向量集420中的一个权重向量426a可包括五个非零权重(例如,对于激活406a-b、406f-h),并且因此可执行五个mac运算(而不是针对权重向量集400中的行402的相应一者的八个mac运算)。因此,代替消耗针对128个计算(例如,针对每时钟循环八个mac运算)的十六个时钟循环,用于稀疏权重向量集420的mac运算可在十一个时钟循环中完成(例如,稀疏权重向量集420的八十六个权重除以每时钟循环八个mac运算等于10.75,再加上一个“虚设”操作以消耗十一个总时钟循环)。

根据示例性方面,稀疏权重向量集420中的稀疏权重向量426的数目为十六。然而,稀疏权重向量集420中的每个稀疏权重向量包括零权重元素422a-b,从而减少了要针对稀疏权重向量集420中的每个稀疏权重向量执行的mac运算(以及相应的时钟循环)的数目。因此,稀疏权重向量集420中的至少两个稀疏权重向量426可被映射用于每个时钟循环的相应mac运算(例如,每时钟循环八个潜在的mac运算),例如,以便在十一个时钟循环内执行mac运算。

在各个方面,稀疏权重向量集420中的一个或多个相应稀疏权重向量可被组合,以例如被映射用于一时钟循环的相应mac运算。即,稀疏权重向量集420中的每个稀疏权重向量426可与稀疏权重向量集420中的至少一个其他稀疏权重向量426配对或组合成更大的编群,从而导致稀疏权重向量的组合424。例如,第一稀疏权重向量426a可与第三稀疏权重向量426c组合。类似地,第九稀疏权重向量426i可与第十六稀疏权重向量426p组合。

为了确定组合424,针对稀疏权重向量集420中的每个稀疏权重向量执行相应的mac运算集的相应时间可被确定。例如,针对稀疏权重向量集420中的每个稀疏权重向量的mac运算要消耗的时钟循环的数目可被确定。可基于针对每个组合424中的每个稀疏权重向量执行mac运算的时间来确定组合424中的相应一者。针对每个组合424执行mac运算的相应经组合时间可与第一阈值进行比较,该第一阈值可以是基于稀疏权重向量集420中的各权重的时钟循环的目标数目(例如,第一阈值可以是针对稀疏权重向量集420中的八十六个剩余权重的十一个时钟循环的目标)。如果相应经组合时间满足第一阈值(例如,小于十一个时钟循环),则那些稀疏权重向量可被组合。

在一个方面,稀疏权重向量的组合424可包括:标识稀疏权重向量集420中具有最高数目的要被执行的mac运算的权重向量;以及标识稀疏权重向量集420中具有最低数目的要被执行的mac运算的权重向量。例如,组合两个稀疏权重向量可基于包括在这两个稀疏权重向量的每一者中的零权重元素422a-b,例如,使得分别具有最高数目的零权重元素422a-b和最低数目的零权重元素422a-b的两个权重向量可被组合。例如,第十权重向量426j可包括八个mac运算(例如,最高数目的mac运算),而第七权重向量426g可包括两个mac运算(例如,最低数目的mac运算)。换言之,针对第七权重向量426g与第十权重向量426j组合执行mac运算的经组合时间可以是十个时钟循环,其可满足十一个时钟循环的第一阈值。因此,第七权重向量426g可与第十权重向量426j组合。

类似地,稀疏权重向量集420中具有第二最高数目的mac运算的稀疏权重向量可被标识。对应地,稀疏权重向量集420中具有第二最低数目的mac运算的稀疏权重向量可被标识。如果mac运算的经组合数目满足第一阈值,则这些标识出的权重向量可被组合。例如,第四稀疏权重向量426d与第六稀疏权重向量426f的组合可被映射用于十一个总时钟循环内的mac运算(例如,针对具有激活406b、406e、406h的第四稀疏权重向量426d中的四个权重的三个mac运算以及针对具有激活406a、406c-h的第六稀疏权重向量426f中的七个权重的七个mac运算)。

在一个方面,组合424中的各组合的用于mac运算的经组合时间可能不满足第一阈值(例如,经组合时间可达到或超过十一个时钟循环)。例如,第一权重向量426a可包括五个权重,并且因此可执行五个mac运算。类似地,第三权重向量426c可包括六个权重,并且因此可执行六个mac运算。因此,第一权重向量426a和第三权重向量426c的组合424可被映射用于至十一个总时钟循环的mac运算,这可能不满足第一阈值(例如,小于十一个时钟循环)。因此,可在激活406a-h内跨两个时钟循环拆分一个或多个组合424,这可满足可被确定的第二阈值(例如,十二个时钟循环)。

如图4c中解说的,可针对第二稀疏权重向量集440形成稀疏权重向量的第二编群。作为示例,第二稀疏权重向量集440可包括针对第二稀疏权重向量集440中与激活406a-h的子集(诸如八个激活406a-h中的包括四个激活406a-d的子集)相对应的每个权重的mac运算。可以跨两个时钟循环拆分针对每个权重向量和包括四个激活406a-d的子集中的对应一者的mac运算。在类似的示例中,可以跨两个时钟循环拆分针对与包括四个激活406e-h的另一子集相对应的稀疏权重向量446的mac运算。

跨两个时钟循环针对权重向量和包括四个激活406a-h的对应子集拆分mac运算可包括:向一个时钟循环指派第一mac运算集;以及向第二时钟循环指派第二mac运算集(例如,未在第一时钟循环中完成的剩余mac运算)。

例如,针对与第一激活406a相对应的稀疏权重向量446的mac运算可在两个时钟循环上被拆分。类似地,针对与第二激活406b相对应的稀疏权重向量446的mac运算可在两个时钟循环上被拆分。当mac运算在两个时钟循环上被拆分时,第一稀疏权重向量446a和第三稀疏权重向量446c可形成第一组合444a。类似地,第四激活406d可在两个时钟循环上被拆分,并且第四稀疏权重向量446c和第六权重向量426f形成第三组合444c。在一些方面,针对包括四个激活406a-d的子集执行的每个mac运算可在两个时钟循环上被拆分,并且各稀疏权重向量446可形成组合444a-h中的相应一者。针对包括激活406e-h的另一子集中的每一者的mac运算可类似地在两个时钟循环上被拆分,并且与包括四个激活406e-h的另一子集相对应的两个或更多个稀疏权重向量446可被组合。因此,针对激活406a-h中的一个或多个激活的mac运算可散布在两个时钟循环上。

图4c中解说的编群旨在是解说性的。因此,可形成不同的编群以便满足第二阈值和/或接近理论最小时钟循环数。例如,可尝试在激活406a-h内跨两个时钟循环拆分一个或多个组合424的若干迭代,以便标识满足第二阈值和/或接近理论最小时钟循环数的编群。

图4d解说了稀疏权重向量集460的第一方面。稀疏权重向量集460中的各权重可被映射到多个mac元件,其可针对稀疏权重向量集460中的每个权重执行mac运算。例如,mac元件可以是例如在图1的soc100上实现的硬件、软件和/或固件元件。在所解说的示例中,包括八个mac元件,尽管在不同方面可存在不同数目的mac元件。一个或多个插入权重468可被插入,以为其中存在太多局部稀疏性的对应mac运算提供值–例如,插入权重468可以是不会影响计算准确性的为零的值。

在一方面,可针对每个时钟循环执行八个mac运算。可向mac元件464a-h中的每个mac元件提供要在其上执行mac运算的激活406a-h中的两个激活。每个mac运算可例如基于激活选择(例如,通过如以下的图7所示的激活选择值714,前一节点的激活值,诸如输入集702a-b)来选择两个激活406a-h之一。因此,mac元件464a-h中的每一者可在每个时钟循环中针对稀疏权重向量466中的权重和激活中的对应一者执行mac运算。例如,在一个时钟循环期间,一个mac元件464h可针对稀疏权重向量466a中的权重和对应的激活406a执行mac运算(例如,没有mac运算可针对第三稀疏权重向量446c和第一激活406a被执行)。

在一个方面,针对第一稀疏权重向量466a(对应于激活406a-b、406f-h)和第三稀疏权重向量466c(对应于激活406b-d、406f-h)的mac运算可被映射到第八mac元件464h(例如,八个mac硬件组件之一);第二稀疏权重向量466b(对应于激活406a-b、406d-g)和第五稀疏权重向量466e(对应于激活406a、406c-d、406g-h)可被映射到第七mac元件464g(例如,八个mac硬件组件中的另一组件);第四稀疏权重向量466d(对应于激活406b、406e、406g)和第六稀疏权重向量466f(对应于激活406a、406c-h)可被映射到第六mac元件464f;第七稀疏权重向量466g(对应于激活406a、406g)和第十稀疏权重向量466j(对应于激活406a-h)可被映射到第五mac元件464e;第十一稀疏权重向量466k(对应于激活406b-d、406f-g)和第十二稀疏权重向量466l(对应于激活406a-b、406d-g)可被映射到第四mac元件464d;第十三稀疏权重向量466m(对应于激活406a、406c-e)和第十四稀疏权重向量466n(对应于激活406a-b、406d-e、406g-h)可被映射到第三mac元件464c;第八稀疏权重向量466h(对应于激活406a-b、406d、406f-g)和第十五稀疏权重向量466o(对应于激活406b-c、406e、406f-h)可被映射到第二mac元件464b;并且第九稀疏权重向量466i(对应于激活406a、406c、406g-h)和第十六稀疏权重向量466p(对应于激活406a-d、406f-h)可被映射到第一mac元件464a。在一些方面,前述映射可以是固定的和/或可以先验地生成(例如,不在运行时生成)。

图4e解说了经压缩稀疏权重向量集480的一方面。对于经压缩稀疏权重向量集480,零权重元素422a-b可被移除(例如,经压缩稀疏权重向量集460可被垂直压缩至允许由八个mac元件在十二个时钟循环上的紧凑乘积)。因此,代替针对权重向量集400的128个mac运算,可针对经压缩稀疏权重向量集480执行更少的mac运算(例如,针对非零权重元素的八十六个mac运算和包括零权重元素的九十六个mac运算)。在一个示例中,可由八个mac元件在十二个时钟循环上执行96个mac运算,包括针对零权重元素的mac运算。一个或多个插入权重468可被插入,以为其中存在太多局部稀疏性的对应mac运算提供值–例如,插入权重468可以是不会影响计算准确性的为零的值。

在第一时钟循环中,针对第一激活406a的一部分的八个mac运算可被执行。

在第二时钟循环中,针对第一激活406a的剩余部分和第二激活406b的一部分的七个mac运算可被执行。在一些方面,等于零的插入权重468可被插入,例如因为每时钟循环仅至多达两个激活可用。在第三时钟循环中,可针对第二激活406b的剩余部分执行八个mac运算。因此,可例如在十二个时钟循环上执行针对激活406a-h中的每个激活的mac运算。因此,利用经压缩稀疏权重向量集480的一方面,时钟循环的数目可以从十六减少到十二。

利用经压缩稀疏权重向量集480的该方面,十二个时钟循环可被消耗用于针对激活406a-h中的每个激活的mac运算。因此,利用稀疏权重向量集的该方面,时钟循环的数目可以从十六减少到十二。然而,图4e解说了映射到mac元件464a-h的一个方面,并且其他可能的映射可以是可能的,以便减少时钟循环的数目并且潜在地达到十一个时钟循环的理论界限。

在一个示例中,激活层可包括m个激活(例如,输入)和n个m元素权重向量。因此,nxm个mac运算可被执行。m元素权重向量中的一个或多个权重向量可以是稀疏的,并且如本公开中所述,稀疏权重向量集可被压缩。因为稀疏权重向量集可被压缩(形成经压缩稀疏权重向量集),所以少于nxm个mac运算可被执行,因为经压缩稀疏权重向量集中的m个元素中的一者或多者可被移除。系统的处理器(例如,soc100的cpu102)可包括l个mac元件,并且因此可在少于(nxm)/l个时钟循环中处理激活层。在所解说的示例中,l等于8,m等于8,并且n等于16。

现在参考图5,解说了存储器500,其可以是图1的存储器118的一部分。存储器500可以是紧密耦合存储器(tcm)和/或双倍数据速率(ddr)存储器。存储器500可包括多个地址,包括地址582a-d。根据一示例,经压缩稀疏权重向量集(例如,经压缩稀疏权重向量集480)可线性地映射到存储器(例如,存储器118)中。在该示例中,存储器500被解说为包括经压缩稀疏权重向量集480的一部分。

如关于图4e所指示的,除了经压缩稀疏权重向量集中的各权重之外,还可添加一个或多个插入权重468。例如,在第一地址582a处开始,经压缩稀疏权重向量集的第一行第一列的第一权重可被映射到存储器500。接下来,经压缩稀疏权重向量集的第二行第一列的第二权重可被映射到存储器500,以此类推。在第一列的每个权重被映射到存储器500之后,第一行第二列的权重可被映射到存储器500。因此,经压缩稀疏权重向量集中的每个权重可被映射到存储器500。当生成针对神经网络的静态ddr图像时,可在编译时执行各权重到存储器500的映射。

虽然权重到存储器500的映射可交织与激活406a-h相关联的各权重,但是作为地址取模mac元件的数目(例如,八个mac元件464a-h)的结果,任何地址(例如,地址582a-d之一)可以是两个可能的激活406a-h之一。因此,每个mac元件可例如基于(诸)激活选择比特在激活406a-h中的两个激活之间选择一个激活。在一些方面,映射可根据激活406a-h(例如,根据滤波器编号)对一系列权重进行重排序,并且进一步交织与顺序激活406a-h相对应的两个系列。

图6解说了经压缩稀疏权重向量集(例如,图4e的经压缩稀疏权重向量集480)到多个mac元件610a-h的映射。mac元件610a-h中的每一者可被实现在硬件、软件和/或固件中。mac元件610a-h中的每一者可被配置成例如在激活(tx)(例如,图4a-e的激活406a-h)上计算部分和。mac元件610a-h中的每一者可包括第一组612a和第二组612b。每个mac元件610a-h中的每一组612a-b可具有映射到其上的相应权重(例如,权重1至权重16之一)。

激活602a-c可被提供为表示一组空间点的输入向量(例如,激活602a-c中的每个激活可以是不同的(x,y)坐标对),并且空间点可基于先前节点的激活值。激活602a-c中的每个激活可以是要提供给每个mac元件610a-h中的每个第一组612a和每个第二组612b的相应激活样本。因此,激活602a-c中的每个激活可针对经压缩稀疏权重向量集中的每个权重被提供(例如,广播)给每个mac元件610a-h。可针对激活602a-c之一与权重的每个配对复制每个mac元件610a-h。

对于激活602a-c中的每个激活,mac元件610a-h可计算输出604a-c中的相应一者,其可包括可在激活602a-c上累加的部分和。输出604a-c中的每一者可对应于经压缩稀疏权重向量集(例如,经压缩稀疏权重向量集480)。

在一个方面,与激活602a-c之一相对应的经压缩稀疏权重向量集中的每个元素可以是唯一性的,并且可被映射到每个mac元件610a-h的组612a-b之一。例如,对于第一激活602a,第一权重1可被映射到第一mac元件610a的第一组612a,并且第八权重8可被映射到第一mac元件610a的第二组612b。类似地,对于第一激活602a,第二权重2可被映射到第二mac元件610b的第一组612a,并且第九权重9可被映射到第二mac元件610b的第二组612b,以此类推。

对于激活602a-c中的每个激活,mac元件610a-h可计算输出604a-c中的相应一者的部分和。输出604a-c中的每一者可以是向量(例如,向量可包括与mac元件610a-h的各组612a-b相对应的十六个值)。例如,针对激活602c的输出604c可以是空间点(xn-1,ym-1),其表示针对mac元件610a-h的n*m次复制的具有包括十六个值的集合的向量。

在一个方面,不超过两个激活可被应用在单个时钟循环中。因此,mac元件610a-h可计算与第一组612a的权重1、2、3、5、7、11、12以及随后14相对应的样本。类似地,mac元件610a-h可计算与第二组612b的权重8、9、4、6、10、13、15以及随后16相对应的样本。随后,输出604a可以是表示mac元件610a-h的各组612a-b的十六个值的向量的空间点(例如,(x,y)坐标对)。输出604a-c可被提供给神经网络的下一层作为输入(例如,用于神经网络的下一层的激活602a-c可基于神经网络的当前层的输出604a-c)。

在一方面,输出604a-c可以是无序的(例如,由于权重压缩)。然而,输出604a-c在存储在存储器(例如,存储器118、存储器500)中时可以未被重新排序。替代地,用于神经网络的下一层的经压缩稀疏权重向量集(例如,通过mac元件610a-h的部分和的下一迭代)可被重新排序以匹配输出604a-c的次序。

对用于神经网络的下一层的权重向量集进行重新排序可被先验地执行。因此,稀疏权重向量集可被压缩,并且神经网络可应用该经压缩稀疏权重向量集,而无需对权重和激活进行解压缩和/或时间对齐(例如,因为权重向量集(诸如权重向量集400)的每一列对应于不同的激活或通道)。即,神经网络可避免在操作期间对经压缩权重向量集进行解压缩。

另外,在不脱离本公开的情况下,可实现不同的压缩办法。例如,使用不同办法压缩的权重向量可如本文所述地被重新排序,并且即使在实践不同的压缩办法时,神经网络也可应用经压缩稀疏权重向量集,而无需对权重和激活进行解压缩和/或时间对齐。

图7解说了用于基于经压缩稀疏权重向量集来操作神经网络的示例性架构700。所解说的架构700可包括控制器720和部分和处置器(psh)740。此外,架构700可包括mac元件的架构,诸如图6的mac元件610a-h之一。架构700可被实现在硬件(例如,通过图1的soc100)、软件、固件和/或其组合中。所解说的架构700可在十六比特模式中操作;然而,在本公开内其他模式也是可能的(例如,八比特模式等)。在一方面,架构700可使用包括定点、浮点、有符号、无符号等的各种数字表示中的任何一种来操作。

控制器720可被配置成与mac元件通信(例如,控制mac元件),该mac元件可至少包括乘法器706、加法器708以及一个或多个缓冲器710a-b。在一些方面,控制器720可被配置成与多个mac元件通信,每个mac元件可至少包括乘法器和加法器。例如,控制器720可与图6的mac元件610a-h通信。

架构700可包括输入集(tx0,tx1)702a-b,其可被配置成接收输入向量。在一个方面,输入向量可包括激活集(例如,对应于通道)(例如,图4a-e的激活406a-h)。通过输入集702a-b,输入向量的两个激活可由复用器(mux)704提供。在一个方面,控制器720可控制输入702a-b,使得在第一输入702a处接收到的第一激活以及在第二输入702b处接收到的第二激活可在一时钟循环中被应用,并且控制器720可避免在相同时钟循环期间应用任何其他激活。

架构700可获得经压缩稀疏权重向量集716(例如,图4e的经压缩稀疏权重向量集480)。架构700可避免对经压缩稀疏权重向量集716进行解压缩。相反,为了对齐经压缩稀疏权重向量集716中的各权重,架构700可对经压缩稀疏权重向量集716中的各权重进行重新排序,以便将各权重与输入向量的对应激活对齐。例如,参考图4a,权重向量集400可解说相应权重与相应激活之间的对应关系。

控制器720可向mux704提供激活选择值714。激活选择值714可指示另一节点(诸如神经网络的先前层的节点)的激活(例如,值)。基于激活选择值714,两个激活中的一个激活可被mux704选择。在这么做的时候,控制器720可向经压缩稀疏权重向量集716中的至少一个稀疏权重向量选择性地应用输入向量集中的第一输入向量。例如,控制器720可将经压缩稀疏权重向量集716的一个权重与可基于激活选择值714选择的输入向量的一个激活对齐。换言之,控制器720可使激活与在经压缩稀疏权重向量集716中包括的经压缩权重向量集716的(诸)对应权重对齐,而无需首先对该经压缩稀疏权重向量集进行解压缩。附加地,控制器720可被配置成例如通过避免针对与来自输入向量的激活相对应的经压缩稀疏权重向量集中的零权重元素执行计算(例如,mac运算)来利用经压缩权重向量集执行稀疏计算。因此,架构700可被配置成利用经压缩稀疏权重向量集执行计算(例如,乘法和加法),并且该经压缩稀疏权重向量集可在神经网络的操作期间保持被压缩。

由mux704选择的激活可在乘法器706中被应用于经压缩稀疏权重向量集716中的对应权重。在一个方面,乘法器706可以是十六比特乘法器。在此类方面,十六比特乘法可被分解成四个八比特乘法,继之以将每个十六比特结果相加。因此,可将权重和激活的八个最高有效位(msb)相乘,可将权重的八个msb与激活的八个最低有效位(lsb)相乘,可将权重的八个lsb与激活的八个msb相乘,可将权重的八个msb与激活的八个lsb相乘,并且可利用前述乘积来执行对应的加法。在一些方面,可针对每个乘积包括指数(例如,二的幂),以便对齐小数点以进行进一步加法。

乘法器706的结果可以是三十二比特的结果。加法器708可累加来自乘法器706的三十二比特结果的局部和。局部和可以是累加自其他激活(例如,通道)的先前迭代的三十七比特的和(32比特结果加上用于增长以避免溢出的五比特)。在一个方面,加法器708可将三十二比特结果和三十七比特局部和分解成两个级联的十六比特加法,继之以基于上进位的五比特加法器(或计数器)。

架构700可包括两个缓冲器710a-b,其中来自加法器708的部分和可被存储。例如,当基于激活选择值714来选择在第一输入702a处接收到的激活时,第一部分和(p0)可被存储在第一缓冲器710a中。因为mac元件可接收针对每个激活的不止一个对应权重,所以架构700可在若干次迭代中向相同的激活应用对应权重,并且局部部分和可针对每次迭代在当前缓冲器(例如,缓冲器710a)中被累加。例如,第一缓冲器710a可存储四个部分和。控制器720可利用组交换控制(bsc)值730来控制缓冲器710a-b中的使用中的缓冲器;即,控制器720可基于bsc值730来协调与psh740的缓冲器同步。

缓冲器710a-b之一中累加的部分和随后被提供给psh740。两个局部值732a-b(b0_sel或b1_sel)之一可被用于例如基于由bsc值730选择的经权重匹配的部分和选择或psh部分和选择来选择要被提供给psh740的缓冲器710a-b之一中的部分和集合中的一个部分和。控制器720可控制两个局部值732a-b之一(例如,使用经权重匹配的部分和选择或psh部分和选择),使得部分和ps0、ps1、ps2、ps3中的仅一个部分和在该部分和可用(例如,未被修改)且包含有效数据的情况下被提供给psh740。两个局部值732a-b中的每个局部值可根据用于经压缩稀疏权重向量集716中的每个权重与激活选择值714相结合的控制tcm条目来形成。

psh740可接收经累加部分和。psh740可将接收到的经累加部分和与偏置值和/或先前部分和组合。附加地,psh740可处置饱和(saturation)以及舍入(rounding)操作,执行断言参数relu(prelu)乘法、缩放,以此类推。psh740可基于经累加的部分和来提供输出(例如,以输出tcm),并且神经网络可基于psh740的输出来进行操作。

图8a-e解说了根据本公开的各个方面的用于基于经压缩稀疏权重向量集来操作神经网络的方法800、820、840、860、880。方法800、820、840、860、880可实践在本公开的各个组件中,包括图1的soc100、图6的mac元件610a-h、和/或图7的架构700。在各个方面,可以略去、转置、和/或同期地执行一个或多个操作。可以用虚线来解说一些潜在可任选的操作。

首先关于图8a,在操作802,可接收稀疏权重向量集。该稀疏权重向量集可包括至少一个零权重元素和至少一个非零权重元素。例如,可在存储器中标识稀疏权重向量集,并且可从存储器中访问所标识的稀疏权重向量集。如以下的图8b可描述接收稀疏权重向量集的一方面。

在图4a-e和5-7的上下文中,控制器720可接收稀疏权重向量集。例如,控制器720可接收稀疏权重向量集420,并且该稀疏权重向量集可包括为非零权重元素的权重并且还可包括一个或多个零权重元素422a-b。在一个方面,稀疏权重向量集420可基于非稀疏权重向量集,诸如权重向量集400。

在操作804,可压缩稀疏权重向量集以产生经压缩稀疏权重向量集。在一个方面,可通过移除该稀疏权重向量集中的至少第一稀疏权重向量中的至少一个零权重元素中的一者或多者以及附加地将至少第一稀疏权重向量与该稀疏权重向量集中的至少第二权重向量组合来压缩该稀疏权重向量集以产生经压缩稀疏权重向量集。在一个方面,压缩该稀疏权重向量集以产生经压缩稀疏权重向量集可至少部分地基于至少第一稀疏权重向量中的至少一个非零权重元素的第一数目以及至少第二稀疏权重向量中的至少一个非零权重元素的第二数目。如以下的图8c可描述压缩稀疏权重向量集的一方面。

在图4a-e和5-7的上下文中,控制器720可通过移除至少第一稀疏权重向量中的至少一个零权重元素中的一者或多者以及将至少第一稀疏权重向量与该稀疏权重向量集中的至少第二稀疏权重向量组合来压缩该稀疏权重向量集以产生经压缩稀疏权重向量集。例如,控制器720可压缩稀疏权重向量集420以产生经压缩稀疏权重向量集。在一个方面,控制器720可通过移除零权重元素422a-b来压缩稀疏权重向量集420。附加地,控制器可将每个稀疏权重向量与另一稀疏权重向量组合。例如,控制器720可确定稀疏权重向量的组合424,和/或控制器720可在要跨两个时钟循环散布mac运算的情况下拆分一个或多个组合以形成附加的组合444a-h。

在一个方面,控制器720可将激活映射到mac元件464a-h。例如,控制器720可将激活406a-h映射到mac元件464a-h,并且针对一个或多个激活406a-h和稀疏权重向量集460中的一个或多个权重的mac运算可被压缩进另一(例如,先前)时钟循环(例如,在mac元件464可用于计算时)。在一些方面,控制器720可例如在局部稀疏度超过阈值时插入一个或多个插入权重468,以便向稀疏权重向量集460添加零权重。

在一个方面,控制器720可通过组合mac元件的映射来产生经压缩稀疏权重向量集480。例如,控制器720可组合到mac元件464a-h的各映射。因此,经压缩稀疏权重向量集480的每一列可发生在单个时钟循环中。在一些方面,控制器720可例如在局部稀疏度超过阈值时插入一个或多个插入权重468,以便向稀疏权重向量集460添加零权重。经压缩稀疏权重向量集480可被存储在存储器(诸如存储器500)中。例如,经压缩稀疏权重向量集480可被线性地映射在存储器500中。

在操作806,可基于该经压缩稀疏权重向量集来操作神经网络。例如,经压缩稀疏权重向量集中的稀疏权重向量的各权重可与对应的激活对齐,并且可基于与对应激活对齐的各权重来评估神经网络的一个或多个节点(例如,在当前层)。如以下的图8d可描述基于经压缩稀疏权重向量集来操作神经网络的一方面。

在图4a-e和5-7的上下文中,控制器720可获得神经网络的输入。可通过神经网络来处理该输入,使得控制器720向输入702a-b提供输入向量。可基于激活选择值714来选择输入向量集中的输入向量的至少一个激活,并且所选激活可与经压缩稀疏权重向量集716的对应权重对齐。可基于与经压缩稀疏权重向量集716的对应权重对齐的所选激活来累加部分和的集合。部分和的集合可被提供给psh740,其可计算针对神经网络的一个或多个节点(例如,神经网络的当前层的节点)的激活,以及为神经网络的一个或多个其他节点(例如,神经网络的下一层的节点)提供那些激活。神经网络可提供输出(例如,在神经网络的输出层),其可基于部分和。

图8b是解说操作802的一方面的方法820。例如,在接收稀疏权重向量集时,可执行操作822和操作824。在操作822,可接收非稀疏权重向量集。非稀疏权重向量集可包括比零权重元素更大数量的非零权重元素,并且在一些方面,非稀疏权重向量集可不包括零权重元素。在图4-ae和5-7的上下文中,控制器720可接收非稀疏权重向量集。例如,控制器720可接收权重向量集400。

在操作824,可生成稀疏权重向量集。例如,可将函数应用于非稀疏权重向量集,以便将非稀疏权重向量集中的至少一个非稀疏权重向量中的至少一个非零权重元素调整为零。根据各个方面,该函数可包括削减函数、微调函数、重新训练函数和/或另一函数中的至少一者,其被配置成标识可被消除而不会不令人满意地降级神经网络的层(例如,输出层)的准确性的一个或多个权重。换言之,可应用函数来标识非稀疏权重向量集中的一个或多个权重,并且可将所标识的一个或多个权重从非零权重元素调整成零权重元素。

在图4a-e和5-7的上下文中,控制器720可应用函数以标识非稀疏权重向量集中的一个或多个非稀疏权重向量中的一个或多个权重,并且通过应用该函数,控制器720可使所标识的一个或多个权重从非零权重元素被调整成零权重元素。例如,控制器720可向权重向量集400应用函数,以便将权重向量集400中的一个或多个权重调整成零权重元素422a-b,这可产生稀疏权重向量集420。

图8c是解说操作804的一方面的方法840。例如,在压缩稀疏权重向量集以产生经压缩稀疏权重向量集时,可执行操作842和操作844。在操作842,可确定针对经组合的至少第一稀疏权重向量和至少第二稀疏权重向量中的每个权重元素执行mac运算的时间。所确定的时间可对应于数个时钟循环。

在图4a-e和5-7的上下文中,控制器720可确定针对经组合的至少第一稀疏权重向量和至少第二稀疏权重向量中的每个权重元素执行mac运算的时间。在一个方面,控制器720可组合稀疏权重向量集420中的各权重向量以形成组合424。例如,控制器720可组合分别包括五个权重和六个权重的第一稀疏权重向量426a和第三稀疏权重向量426c以在与激活一起被映射到mac元件时达到总共十一个时钟循环。控制器720可将每个组合与第一阈值(例如,十一个时钟循环)进行比较,该第一阈值可以是其中可执行针对激活406a-h中的每个激活的mac运算的理论最小时钟循环数。

在操作844,可将所确定的时间与预定义阈值进行比较。例如,可将针对至少第一稀疏权重向量和至少第二稀疏权重向量的第一组合的mac运算的所确定时间与阈值进行比较。如果所确定的时间满足阈值(例如,所确定的时间小于预定义阈值等),则这些组合可以是足够的,并且经压缩稀疏权重向量集可被用于操作神经网络。然而,如果所确定的时间不满足阈值(例如,所确定的时间等于阈值,所确定的时间超过预定义阈值等),则针对稀疏权重向量的一种或多种组合的mac运算可针对激活在两个时钟循环上被拆分。因此,针对一个激活的mac运算可发生在两个时钟循环上。

在图4a-e和5-7的上下文中,控制器720可将所确定的时间与预定义阈值进行比较。例如,控制器720可将第一稀疏权重向量426a和第三稀疏权重向量426c的组合424与预定义阈值进行比较,该预定义阈值是十一个时钟循环的理论最小值。该第一稀疏权重向量426a和第三稀疏权重向量426c的组合424可能不满足预定义阈值(例如,可能不小于十一个时钟循环)。因此,控制器720可拆分针对第一稀疏权重向量426a和第三稀疏权重向量426c的组合424的mac运算,使得针对与第一稀疏权重向量426a和第三稀疏权重向量426c中的各权重相对应的一个或多个激活406a-b、406d、406f-h的mac运算例如在被压缩成经压缩稀疏权重向量集480时发生在两个时钟循环上。

图8d是解说操作806的一方面的方法860。例如,在基于经压缩稀疏权重向量集来操作神经网络时,可执行操作862、操作864、操作866和操作848。在操作862,可接收输入向量集。输入向量集可包括激活集。在图4a-e和5-7的上下文中,控制器720可接收输入向量集。输入向量集可包括激活集,诸如激活406a-h,其可对应于通道。控制器720可在存储器(例如,图1的存储器118)中存储激活。

在操作864,可向经压缩稀疏权重向量集中的至少一个稀疏权重向量选择性地应用接收到的输入向量集中的第一输入向量。在这么做的时候,可计算与经压缩稀疏权重向量集中的至少一个稀疏权重向量相对应的相应部分和。例如,可基于激活选择值(例如,另一节点(诸如神经网络的先前层的节点)的激活值)来在第一输入向量的两个激活之间进行选择。所选激活可与经压缩稀疏权重向量集中的对应权重对齐。此外,与所选激活相对应的零权重元素可被忽略,例如,以便执行稀疏计算。通过向至少一个稀疏权重向量选择性地应用第一输入向量的激活,该经压缩稀疏权重向量集可被使用,而无需首先对该经压缩稀疏权重向量集进行解压缩。

在图4a-e和5-7的上下文中,控制器720可向经压缩稀疏权重向量集716中的至少一个稀疏权重向量选择性地应用第一输入(例如,从输入702a-b之一选择的激活)。例如,控制器720可基于激活选择值714来选择在第一输入702a处接收到的第一激活而不是在第二输入702b处接收到的第二激活。控制器720可将所选第一激活与可从存储器500接收到的经压缩稀疏权重向量集716中的对应权重对齐。此外,控制器720可避免计算针对与激活相对应的零权重元素的部分和以实现稀疏计算。控制器720可通过向乘法器706提供与经压缩稀疏权重向量集716中的对应权重对齐的所选激活来使mac元件计算相应部分和。乘法器706可向加法器708提供乘积,加法器708可将该乘积加到来自具有对应权重的其他激活的局部和中。

如图6所示,每个mac元件610a-h可包括至少两组612a-b,每组具有映射到其上的唯一性权重。控制器720可控制提供给每个mac元件610a-h的激活602a-c。在第一时钟循环中,mac元件610a-h可计算输出604a的第一样本,其可被提供给psh740。在第二时钟循环中,mac元件610a-h可计算输出604a的第二样本,其也可被提供给psh740。控制器720可随后提供下一激活602b-c以用于计算要提供给psh740的附加部分和。

在操作866,累加针对经压缩稀疏权重向量集中的每个稀疏权重向量的相应部分和。例如,可将针对经压缩稀疏权重向量集中的稀疏权重向量的第一部分和与经压缩稀疏权重向量集中的第二稀疏权重向量的第二部分和累加,并且该结果可被存储在存储器中(例如,在组或缓冲器中)。在图4a-e和5-7的上下文中,控制器720可在缓冲器710a-b之一中累加针对经压缩稀疏权重向量集716中的每个稀疏权重向量的相应部分和。在图6中,mac元件610a-h可累加各个组612a-b中针对激活602a-c的部分和。

在操作868,可至少部分地基于所累加的部分和来操作神经网络。例如,部分和可被提供给psh,并且部分和可被传播到神经网络的其他节点(例如,下一层)。在通过神经网络的各层传播部分和时,神经网络可执行该神经网络被配置用于的任务,诸如模式识别或图像分类。在图4a-e和5-7的上下文中,控制器720可使psh740通过神经网络传播部分和,以使该神经网络执行任务。

图8e是解说操作806的一方面的方法880。例如,在基于经压缩稀疏权重向量集来操作神经网络时,可执行操作882。在操作882,经压缩稀疏权重向量集中的稀疏权重向量可保持被压缩,并且可基于该经压缩稀疏权重向量集来操作神经网络。例如,经压缩权重向量集中的各权重可被重新排序,以匹配来自先前层的各激活的次序。经压缩权重向量集中的各权重可被先验地重新排序。在图4a-e和5-7的上下文中,控制器720可避免解压缩以使神经网络在未对经压缩稀疏权重向量集716进行解压缩的情况下操作。例如,可在未对经压缩稀疏权重向量集480进行解压缩的情况下基于该经压缩稀疏权重向量集480来操作神经网络。

图9ab解说了根据本公开的各个方面的用于基于经压缩稀疏权重向量集来操作神经网络的方法900、920。方法900、920可实践在本公开的各个组件中,包括图1的soc100、图6的mac元件610a-h、和/或图7的架构700。在各个方面,可以略去、转置、和/或同期地执行一个或多个操作。可以用虚线来解说一些潜在可任选的操作。

首先关于图9a,在操作902,可接收稀疏权重向量集。该稀疏权重向量集可包括至少一个零权重元素和至少一个非零权重元素。例如,可在存储器中标识稀疏权重向量集,并且可从存储器中访问所标识的稀疏权重向量集。在一个方面,稀疏权重向量集可被压缩。

在图4a-e和5-7的上下文中,控制器720可接收稀疏权重向量集。例如,控制器720可接收稀疏权重向量集420,并且该稀疏权重向量集可包括不为零的权重并且还可包括一个或多个零权重元素422a-b。在一个方面,稀疏权重向量集420可基于非稀疏权重向量集,诸如权重向量集400。在一个方面,稀疏权重向量集420可被压缩,例如,使得经压缩稀疏权重向量集480被使用。

在操作904,可接收输入向量集。输入向量的每个输入可对应于稀疏权重向量集中的稀疏权重向量中的至少一个权重。输入向量集可包括激活集。在图4a-e和5-7的上下文中,控制器720可接收输入向量集。输入向量集可包括激活集,诸如激活406a-h(例如,通道)。稀疏权重向量集420中的每个权重可对应于激活406a-h中的不同一者。控制器720可在存储器(例如,图1的存储器118)中存储输入向量集。

在操作906,可基于该稀疏权重向量集来执行稀疏计算。在各方面,可通过避免使用稀疏权重向量集中的至少一个零权重元素进行的一个或多个计算来执行稀疏计算。此外,稀疏计算可产生一个或多个部分和。例如,对于非零权重,激活可被选择以及乘以权重,该乘积可与来自先前迭代的局部和相加,并且该局部和可在组或缓冲器中被累加。如以下的图9b可描述基于稀疏权重向量集来执行稀疏计算的一方面。

在图4a-e和5-7的上下文中,控制器720可从输入702a-b中选择激活。乘法器706可对所选激活和与所选激活相对应的稀疏权重向量中的权重执行乘法运算。该乘积可被提供给加法器708,其可将该乘积与先前的输出相加以产生部分和。然而,控制器720可控制对乘法器706的输入,使得乘法器706不对零权重元素和相应的激活执行计算。

在操作908,可至少部分地基于该一个或多个部分和来操作神经网络。例如,通过稀疏计算产生的部分和可被提供给psh,并且该psh可将这些部分和传播到神经网络的其他节点(例如,神经网络的下一层)。在这么做的时候,神经网络可执行任务,诸如模式识别或图像分类。在各个方面,稀疏权重向量集可被压缩,并且该经压缩稀疏权重向量集可在操作神经网络时保持被压缩。在图4a-e和5-7的上下文中,控制器720可使psh740通过神经网络传播部分和,以使该神经网络执行任务。

图9b是解说操作906的一方面的方法920。例如,在基于稀疏权重向量集来执行稀疏计算时,可执行操作922和操作924。在操作922,可将对第一输入向量的输入的选择控制成选择与该稀疏权重向量中的至少一个非零权重元素相对应的输入。例如,可从存储器中获取与非零权重元素相对应的输入。在图4a-e和5-7的上下文中,控制器720可控制输入702a-b,使得针对其经压缩权重向量集716中的权重不为零的输入被选择。

在操作924,不选择第一输入向量中与该稀疏权重向量中的至少一个零权重元素相对应的输入。例如,可以不从存储器中获取与零权重元素相对应的输入。因此,不必要的存储器访问(例如,读取)和/或计算(例如,mac运算)可被避免,从而减少资源消耗和开销。在图4a-e和5-7的上下文中,控制器720可避免选择与稀疏权重向量中的零权重元素相对应的输入702a-b。例如,控制器720可在一个或多个激活406a-h对应于稀疏权重向量集420中的零权重元素422a-b时避免为mac运算选择该一个或多个激活406a-h。

在一种配置中,一种设备可被配置成用于基于经压缩权重向量集来操作神经网络。该设备可被配置成接收稀疏权重向量集,其中该稀疏权重向量集中的至少第一稀疏权重向量包括至少一个零权重元素和至少一个非零权重元素。该设备可被配置成通过移除该稀疏权重向量集中的至少第一稀疏权重向量中的至少一个零权重元素中的一者或多者以及将至少第一稀疏权重向量与该稀疏权重向量集中的至少第二稀疏权重向量组合来压缩该稀疏权重向量集以产生经压缩稀疏权重向量集。该设备可被配置成基于经压缩稀疏权重向量集来操作神经网络。

进一步,该设备可包括用于接收稀疏权重向量集的装置,并且该稀疏权重向量集中的至少第一稀疏权重向量包括至少一个零权重元素和至少一个非零权重元素。用于接收稀疏权重向量集的装置可以是被配置成执行所叙述功能的通用处理器102、与通用处理器102相关联的程序存储器、存储器块118、局部处理单元202、和/或路由连接处理单元216。在另一配置中,前述装置可包括被配置成执行由前述装置叙述的功能的至少一个组件或设备中的任一者,诸如mac元件610a-h、控制器720、或另一组件。在另一配置中,要由前述装置执行的算法可关于方法800和/或820来描述。

该设备可包括用于压缩稀疏权重向量集以产生经压缩稀疏权重向量集的装置。用于压缩稀疏权重向量集以产生经压缩稀疏权重向量集的装置可被配置成移除该稀疏权重向量集中的至少第一稀疏权重向量中的至少一个零权重元素中的一者或多者以及被配置成将至少第一稀疏权重向量与该稀疏权重向量集中的至少第二稀疏权重向量组合。用于压缩稀疏权重向量集以产生经压缩稀疏权重向量集的装置可以是被配置成执行所叙述功能的通用处理器102、与通用处理器102相关联的程序存储器、存储器块118、局部处理单元202、和/或路由连接处理单元216。在另一配置中,前述装置可包括被配置成执行由前述装置叙述的功能的至少一个组件或设备中的任一者,诸如控制器720、或另一组件。在另一配置中,要由前述装置执行的算法可关于方法800、840来描述。

该设备可包括用于基于经压缩稀疏权重向量集来操作神经网络的装置。用于操作神经网络的装置可以是被配置成执行所叙述功能的通用处理器102、与通用处理器102相关联的程序存储器、存储器块118、局部处理单元202、和/或路由连接处理单元216。在另一配置中,前述装置可包括被配置成执行由前述装置叙述的功能的至少一个组件或设备中的任一者,诸如存储器500、mac元件610a-h、乘法器706、加法器708、缓冲器710a-b、控制器720、psh740或另一组件。在另一配置中,要由前述装置执行的算法可关于方法800、860、880来描述。

在一种配置中,一种设备可被配置成用于基于一个或多个部分和来操作神经网络。该设备可被配置成接收稀疏权重向量集,并且每个稀疏权重向量可包括至少一个零权重元素和至少一个非零权重元素。该设备可被配置成通过避免使用该稀疏权重向量集中的每个稀疏权重向量中的至少一个零权重元素执行一个或多个计算来基于该稀疏权重向量集执行稀疏计算,并且该稀疏计算的执行产生一个或多个部分和。该设备可被配置成至少部分地基于该一个或多个部分和来操作神经网络。

进一步,该设备可包括用于接收稀疏权重向量集的装置,并且每个稀疏权重向量包括至少一个零权重元素和至少一个非零权重元素。用于接收稀疏权重向量集的装置可以是被配置成执行所叙述功能的通用处理器102、与通用处理器102相关联的程序存储器、存储器块118、局部处理单元202、和/或路由连接处理单元216。在另一配置中,前述装置可包括被配置成执行由前述装置叙述的功能的至少一个组件或设备中的任一者,诸如mac元件610a-h、控制器720、或另一组件。在另一配置中,要由前述装置执行的算法可关于方法900来描述。

该设备可包括用于接收输入向量集的装置,并且该输入向量集中的第一输入向量中的每个输入可对应于稀疏权重向量集中的稀疏权重向量中的权重元素。用于接收输入向量集的装置可以是被配置成执行所叙述功能的通用处理器102、与通用处理器102相关联的程序存储器、存储器块118、局部处理单元202、和/或路由连接处理单元216。在另一配置中,前述装置可包括被配置成执行由前述装置叙述的功能的至少一个组件或设备中的任一者,诸如mac元件610a-h、输入702a-b、乘法器706、加法器708、控制器720或另一组件。在另一配置中,要由前述装置执行的算法可关于方法900来描述。

该设备可包括用于基于稀疏权重向量集来执行稀疏计算的装置。用于基于稀疏权重向量集来执行稀疏计算的装置可被配置成避免使用该稀疏权重向量集中的每个稀疏权重向量中的至少一个零权重元素来执行一个或多个计算。用于基于稀疏权重向量集来执行稀疏计算的装置可被配置成产生一个或多个部分和。用于基于稀疏权重向量集来执行稀疏计算的装置可以是被配置成执行所叙述功能的通用处理器102、与通用处理器102相关联的程序存储器、存储器块118、局部处理单元202、和/或路由连接处理单元216。在另一配置中,前述装置可包括被配置成执行由前述装置叙述的功能的至少一个组件或设备中的任一者,诸如mac元件610a-h、乘法器706、加法器708、缓冲器710a-b、控制器720或另一组件。在另一配置中,要由前述装置执行的算法可关于方法900、920来描述。

该设备可包括用于至少部分地基于该一个或多个部分和来操作神经网络的装置。用于操作神经网络的装置可以是被配置成执行所叙述功能的通用处理器102、与通用处理器102相关联的程序存储器、存储器块118、局部处理单元202、和/或路由连接处理单元216。在另一配置中,前述装置可包括被配置成执行由前述装置叙述的功能的至少一个组件或设备中的任一者,诸如mac元件610a-h、控制器720、psh740、或另一组件。在另一配置中,要由前述装置执行的算法可关于方法900来描述。

根据本公开的某些方面,每个局部处理单元202可被配置成基于模型的期望的一个或多个功能特征来确定模型的参数,并且在所确定的参数被进一步适配、调谐和更新时向所期望的功能特征发展该一个或多个功能特征。

在一些方面,方法800、820、840、860、800和/或方法900、920可由soc100(图1)或系统200(图2)来执行。即,举例而言但不作为限定,方法800、820、840、860、800和/或方法900、920的每个元素可由soc100或系统200、或者一个或多个处理器(例如,cpu102和局部处理单元202)和/或其中所包括的其他组件来执行。

以上所描述的方法的各种操作可由能够执行相应功能的任何合适的装置来执行。这些装置可包括各种硬件和/或(诸)软件组件和/或(诸)模块,包括但不限于电路、专用集成电路(asic)、或处理器。一般而言,在附图中有解说的操作的场合,那些操作可具有带相似编号的相应配对装置加功能组件。

如本文中所使用的,术语“确定”涵盖各种各样的动作。例如,“确定”可包括演算、计算、处理、推导、研究、查找(例如,在表、数据库或其他数据结构中查找)、查明、及类似动作。另外,“确定”可包括接收(例如接收信息)、访问(例如访问存储器中的数据)、及类似动作。此外,“确定”可包括解析、选择、选取、确立及类似动作。

如本文所使用的,术语“接收”可包括接收(例如,接收信息)、获得(例如,获得存储器中的数据)及诸如此类。例如,“接收”可在一个系统内被执行。

如本文中所使用的,引述一列项目“中的至少一者”的短语是指这些项目的任何组合,包括单个成员。作为示例,“a、b或c中的至少一个”旨在涵盖:a、b、c、a-b、a-c、b-c、以及a-b-c。

结合本公开所描述的各种解说性逻辑框、模块、以及电路可用设计成执行本文中所描述的功能的通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列信号(fpga)或其他可编程逻辑器件(pld)、分立的门或晶体管逻辑、分立的硬件组件或其任何组合来实现或执行。通用处理器可以是微处理器,但在替换方案中,处理器可以是任何市售的处理器、控制器、微控制器、或状态机。处理器还可以被实现为计算设备的组合,例如,dsp与微处理器的组合、多个微处理器、与dsp核心协同的一个或多个微处理器、或任何其他此类配置。

结合本公开所描述的方法或算法的步骤可直接在硬件中、在由处理器执行的软件模块中、或在这两者的组合中实施。软件模块可驻留在本领域所知的任何形式的存储介质中。可使用的存储介质的一些示例包括随机存取存储器(ram)、只读存储器(rom)、闪存、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、寄存器、硬盘、可移动盘、cd-rom,等等。软件模块可包括单条指令、或许多条指令,且可分布在若干不同的代码段上,分布在不同的程序间以及跨多个存储介质分布。存储介质可被耦合到处理器以使得该处理器能该存储介质读取信息以及向该存储介质写入信息。替换地,存储介质可被整合到处理器。

本文所公开的方法包括用于达成所描述的方法的一个或多个步骤或动作。这些方法步骤和/或动作可以彼此互换而不会脱离权利要求的范围。换言之,除非指定了步骤或动作的特定次序,否则具体步骤和/或动作的次序和/或使用可以改动而不会脱离权利要求的范围。

所描述的功能可在硬件、软件、固件或其任何组合中实现。如果以硬件实现,则示例硬件配置可包括设备中的处理系统。处理系统可以用总线架构来实现。取决于处理系统的具体应用和整体设计约束,总线可包括任何数目的互连总线和桥接器。总线可将包括处理器、机器可读介质、以及总线接口的各种电路链接在一起。总线接口可用于尤其将网络适配器等经由总线连接至处理系统。网络适配器可用于实现信号处理功能。对于某些方面,用户接口(例如,按键板、显示器、鼠标、操纵杆,等等)也可以被连接到总线。总线还可以链接各种其他电路,诸如定时源、外围设备、稳压器、功率管理电路以及类似电路,它们在本领域中是众所周知的,因此将不再进一步描述。

处理器可负责管理总线和一般处理,包括对存储在机器可读介质上的软件的执行。处理器可用一个或多个通用和/或专用处理器来实现。示例包括微处理器、微控制器、dsp处理器、以及其他能执行软件的电路系统。软件应当被宽泛地解释成意指指令、数据、或其任何组合,无论是被称作软件、固件、中间件、微代码、硬件描述语言、或其他。作为示例,机器可读介质可包括随机存取存储器(ram)、闪存存储器、只读存储器(rom)、可编程只读存储器(prom)、可擦式可编程只读存储器(eprom)、电可擦式可编程只读存储器(eeprom)、寄存器、磁盘、光盘、硬驱动器、或者任何其他合适的存储介质、或其任何组合。机器可读介质可被实施在计算机程序产品中。该计算机程序产品可包括包装材料。

在硬件实现中,机器可读介质可以是处理系统中与处理器分开的一部分。然而,如本领域技术人员将容易领会的,机器可读介质或其任何部分可在处理系统外部。作为示例,机器可读介质可包括传输线、由数据调制的载波、和/或与设备分开的计算机产品,所有这些都可由处理器通过总线接口来访问。替换地或补充地,机器可读介质或其任何部分可被集成到处理器中,诸如高速缓存和/或通用寄存器文件可能就是这种情形。虽然所讨论的各种组件可被描述为具有特定位置,诸如局部组件,但它们也可按各种方式来配置,诸如某些组件被配置成分布式计算系统的一部分。

处理系统可被配置为通用处理系统,该通用处理系统具有一个或多个提供处理器功能性的微处理器、以及提供机器可读介质中的至少一部分的外部存储器,它们都通过外部总线架构与其他支持电路系统链接在一起。替换地,该处理系统可包括一个或多个神经元形态处理器以用于实现本文中所描述的神经元模型和神经系统模型。作为另一替换方案,处理系统可以用带有集成在单块芯片中的处理器、总线接口、用户接口、支持电路系统、和至少一部分机器可读介质的专用集成电路(asic)来实现,或者用一个或多个现场可编程门阵列(fpga)、可编程逻辑器件(pld)、控制器、状态机、门控逻辑、分立硬件组件、或者任何其他合适的电路系统、或者能执行本公开通篇所描述的各种功能性的电路的任何组合来实现。取决于具体应用和加诸于整体系统上的总设计约束,本领域技术人员将认识到如何最佳地实现关于处理系统所描述的功能性。

机器可读介质可包括数个软件模块。这些软件模块包括当由处理器执行时使处理系统执行各种功能的指令。这些软件模块可包括传送模块和接收模块。每个软件模块可以驻留在单个存储设备中或者跨多个存储设备分布。作为示例,当触发事件发生时,可以从硬驱动器中将软件模块加载到ram中。在软件模块执行期间,处理器可以将一些指令加载到高速缓存中以提高访问速度。可随后将一个或多个高速缓存行加载到通用寄存器文件中以供处理器执行。在以下述及软件模块的功能性时,将理解此类功能性是在处理器执行来自该软件模块的指令时由该处理器来实现的。此外,应领会,本公开的各方面产生对处理器、计算机、机器或实现此类方面的其它系统的机能的改进。

如果以软件实现,则各功能可作为一条或多条指令或代码存储在计算机可读介质上或藉其进行传送。计算机可读介质包括计算机存储介质和通信介质两者,这些介质包括促成计算机程序从一地向另一地转移的任何介质。存储介质可以是能被计算机访问的任何可用介质。作为示例而非限定,此类计算机可读介质可包括ram、rom、eeprom、cd-rom或其他光盘存储、磁盘存储或其他磁存储设备、或能用于携带或存储指令或数据结构形式的期望程序代码且能被计算机访问的任何其他介质。另外,任何连接也被正当地称为计算机可读介质。例如,如果软件是使用同轴电缆、光纤电缆、双绞线、数字订户线(dsl)、或无线技术(诸如红外(ir)、无线电、以及微波)从web网站、服务器、或其他远程源传送而来,则该同轴电缆、光纤电缆、双绞线、dsl或无线技术(诸如红外、无线电、以及微波)就被包括在介质的定义之中。如本文中所使用的盘(disk)和碟(disc)包括压缩碟(cd)、激光碟、光碟、数字多用碟(dvd)、软盘、和碟,其中盘(disk)常常磁性地再现数据,而碟(disc)用激光来光学地再现数据。因此,在一些方面,计算机可读介质可包括非瞬态计算机可读介质(例如,有形介质)。另外,对于其他方面,计算机可读介质可包括瞬态计算机可读介质(例如,信号)。以上组合应当也被包括在计算机可读介质的范围内。

因此,某些方面可包括用于执行本文中给出的操作的计算机程序产品。例如,此类计算机程序产品可包括其上存储(和/或编码)有指令的计算机可读介质,这些指令能由一个或多个处理器执行以执行本文中所描述的操作。对于某些方面,该计算机程序产品可包括包装材料。

此外,应当领会,用于执行本文中所描述的方法和技术的模块和/或其他恰适装置可由用户终端和/或基站在适用的场合下载和/或以其他方式获得。例如,此类设备能被耦合到服务器以促成用于执行本文中所描述的方法的装置的转移。替换地,本文中所描述的各种方法能经由存储装置(例如,ram、rom、诸如压缩碟(cd)或软盘之类的物理存储介质等)来提供,以使得一旦将该存储装置耦合到或提供给用户终端和/或基站,该设备就能获得各种方法。此外,可利用适于向设备提供本文中所描述的方法和技术的任何其他合适的技术。

将理解,权利要求并不被限于以上所解说的精确配置和组件。可在以上所描述的方法和装置的布局、操作和细节上作出各种改动、更换和变形而不会脱离权利要求的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1