CN108573304A - 硬件中转置神经网络矩阵 - Google Patents

硬件中转置神经网络矩阵 Download PDF

Info

Publication number
CN108573304A
CN108573304A CN201810196453.4A CN201810196453A CN108573304A CN 108573304 A CN108573304 A CN 108573304A CN 201810196453 A CN201810196453 A CN 201810196453A CN 108573304 A CN108573304 A CN 108573304A
Authority
CN
China
Prior art keywords
matrix
nerves network
network matrix
current
quadrant
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
CN201810196453.4A
Other languages
English (en)
Other versions
CN108573304B (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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Priority to CN202210795051.2A priority Critical patent/CN115271049A/zh
Publication of CN108573304A publication Critical patent/CN108573304A/zh
Application granted granted Critical
Publication of CN108573304B publication Critical patent/CN108573304B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/78Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks
    • 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/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

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

Abstract

本公开涉及在硬件中转置神经网络矩阵的方法、系统和装置,包括编码在计算机存储介质上的计算机程序。在一个方面,一种方法包括以下动作:在具有矩阵计算单元的硬件电路上接收对神经网络执行计算的请求,请求指定要在第一神经网络矩阵上执行的转置操作;以及生成当由硬件电路执行时硬件电路通过执行第一操作转置第一神经网络矩阵的指令,其中第一操作包括重复执行以下第二操作:对于将第一神经网络矩阵划分为一个或多个当前子矩阵的第一神经网络矩阵的当前细分,通过交换每个当前子矩阵的右上象限和左下象限来更新第一神经网络矩阵;以及将每个当前子矩阵细分为相应的新子矩阵来更新当前的细分。

Description

硬件中转置神经网络矩阵
技术领域
本说明书涉及在硬件中转置神经网络矩阵。
背景技术
神经网络是采用一个或多个层来针对接收到的输入生成输出(例 如,分类)的机器学习模型。一些神经网络除了包括输出层之外还包 括一个或多个隐藏层。每个隐藏层的输出被用作网络中的另一层(例 如,网络的下一个隐藏层或输出层)的输入。网络的每层按照一组相 应的参数的当前值从接收到的输入生成输出。
发明内容
总体上,本说明书描述一种计算神经网络推理的专用硬件电路。
本说明书中所描述的主题的一个创新方面可用包括以下步骤的动 作的方法加以具体实现:接收要在具有矩阵计算单元的硬件电路上针 对神经网络执行计算的请求,该请求指定要对与神经网络相关联的第 一神经网络矩阵执行的转置运算;以及生成当由硬件电路执行时使硬 件电路通过执行第一操作来转置第一神经网络矩阵的指令,其中,第 一操作包括重复地执行以下第二操作:对于将第一神经网络矩阵划分 成一个或多个当前子矩阵的第一神经网络矩阵的当前细分,通过使用 矩阵计算单元来交换当前细分中的每个当前子矩阵的右上象限和左下 象限来更新第一神经网络矩阵,以及将当前子矩阵中的每个当前子矩 阵细分成相应的多个新的子矩阵以更新当前细分,相应的多个新的子 矩阵中的每一个是当前子矩阵的相应的象限。
这个方面的其它实施例包括记录在一个或多个计算机存储设备上 的对应的计算机系统、装置和计算机程序,分别被配置成执行方法的 动作。一个或多个计算机的系统可被配置成利用安装在系统上的在操 作中可以使系统执行动作的软件、固件、硬件或其任何组合来执行特 定操作或动作。一个或多个计算机程序可被配置成利用包括当由数据 处理装置执行时使装置执行动作的指令来执行特定操作或动作。
这个方面的实施例可以包括以下可选特征中的一个或多个。在一 些实施方式中,第一操作包括确定第一神经网络矩阵不是i×i矩阵,其 中i是用于硬件电路的矢量长度值;作为响应,通过在执行第二操作的 所有迭代之前对第一神经网络矩阵进行零填充来更新第一神经网络矩 阵以生成i×i矩阵;以及在执行第二操作的所有迭代之后,通过去除在更新期间填充的零来将第一神经网络矩阵转换为其在更新之前的状 况。在一些实施方式中,第一操作还包括获得指示第一神经网络矩阵 的一个或多个值是零值的数据;并且更新第一神经网络矩阵包括防止 矩阵计算单元对包括第一神经网络矩阵的为零值的一个或多个值中的 至少一个的一组值执行任何运算。在一些实施方式中,交换当前子矩 阵的右上象限和每个当前子矩阵的左下象限包括:将第一神经网络矩 阵的每行乘以一个或多个部分单位矩阵以生成一个或多个矢量,一个 或多个矢量其每一个包括其中每个相应的当前子矩阵的右上象限和左 下象限的元素被交换的相应行的部分;对于第一神经网络矩阵的每行, 将与其中每个相应的当前子矩阵的右上象限和左下象限的元素被交换 的第一神经网络矩阵的每个相应行的部分相对应的矢量组合;以及通 过组合每个相应行来生成更新的第一神经网络矩阵。在一些实施方式 中,矩阵计算单元执行矩阵乘法运算作为一系列矢量乘法运算。在一 些实施方式中,第二操作还包括生成第一神经网络矩阵的初始当前细分,其中,初始当前细分包含作为第一神经网络矩阵的初始子矩阵。 在一些实施方式中,第一操作还包括将指令发送到硬件电路。
可实现本说明书中所描述的主题的特定实施例以便实现以下优点 中的一个或多个。即使在硬件电路不能直接地执行矩阵转置运算的情 况下,也可通过专用硬件电路用硬件执行针对矩阵的转置运算。通过 使用专用硬件电路来执行转置运算,即使专用硬件电路不直接地支持 这种处理,也可执行指定转置运算的神经网络运算或其它运算的处理, 而不用将数据传回到主计算机,即,而不用在芯片外执行计算的至少 一部分。这允许在不用修改专用硬件电路的硬件架构的情况下对矩阵 执行转置运算。也就是说,避免了由在芯片外、用软件或两者执行所 述处理的一部分生成的处理延迟。
在下面的附图和描述中阐述了本说明书的主题的一个或多个实施 例的细节。主题的其它特征、方面和优点将根据说明书、附图和权利 要求书变得显而易见。
附图说明
图1示出示例神经网络处理系统。
图2是用于针对神经网络的给定层执行计算的示例方法的流程 图。
图3示出示例神经网络处理系统。
图4示出包括矩阵计算单元的示例架构。
图5示出脉动阵列内部的cell的示例架构。
图6示出矢量计算单元的示例架构。
图7是用于实现在矩阵上指定转置运算的神经网络的示例过程的 流程图。
图8是使用矩阵计算单元来交换子矩阵的右上和左下象限的示例 过程的流程图。
图9是用于对神经网络矩阵执行转置运算的计算的示例。
在各个附图中相同的附图标记和名称指示相同的元件。
具体实施方式
可使用具有多个层的神经网络来计算推理。例如,给定一个输入, 神经网络可计算该输入的推理。神经网络通过经由神经网络的每层处 理输入来计算此推理。每层接收一个输入并且依照用于该层的权重集 来处理输入以生成输出。
因此,为了从接收到的输入计算推理,神经网络接收输入并且通 过神经网络层中的每一个对它进行处理以生成推理,其中来自一个神 经网络层的输出被作为输入提供给下一个神经网络层。神经网络层的 数据输入(例如,神经网络的输入或在顺序上位于该层下面的层到神 经网络层的输出)可被称为对该层的激活输入。
在一些实施方式中,神经网络的层被按序排列。在一些其它实施 方式中,层作为有向图被排列。也就是说,任何特定层可接收多个输 入、多个输出或两者。神经网络的层也可被布置为使得层的输出可作 为前一层的输入被发送回去。
图1示出示例神经网络处理系统100。神经网络处理系统100是 作为可中其中实现在下面所描述的系统、组件和技术的一个或多个位 置中的一个或多个计算机被实现的系统的示例。
神经网络处理系统100是使用专用硬件电路110来执行神经网络 计算的系统。硬件电路110是用于执行神经网络计算的集成电路并且 包括用硬件执行矢量-矩阵乘法的矩阵计算单元120。在下面参考图3 对示例专用硬件电路120进行更详细的描述。
特别地,神经网络处理系统100接收要在专用硬件电路110上实 现神经网络的请求,在专用硬件电路110上实现神经网络,并且,一 旦给定神经网络被实现,就使用专用集成电路110来处理神经网络的 输入以生成神经网络推理。
也就是说,神经网络处理系统100可接收为将用于处理输入的神 经网络指定神经网络架构的请求。该神经网络架构定义神经网络中的 层的数目和配置以及用于具有参数的每层的参数的值。
为了在专用集成电路110上实现神经网络,神经网络处理系统100 包括被作为一个或多个计算机程序实现在一个或多个物理位置中的一 个或多个计算机上的神经网络实现引擎150。
神经网络实现引擎150生成指令,指令当由专用硬件电路110执 行时,使硬件电路110执行由神经网络指定的运算以从接收到的神经 网络输入生成神经网络输出。
一旦指令已经由神经网络实现引擎150生成并被提供给硬件电路 110,神经网络处理系统100就可接收神经网络输入并且可使用神经网 络通过使硬件电路110执行所生成的指令来处理神经网络输入。
一些神经网络在神经网络矩阵(例如,包括用于神经网络的层的 权重值的神经网络矩阵)上指定转置运算。例如,一些神经网络可以 在它们的第一列中比它们在后续列中更密集(即,具有更多的有意义 值)的矩阵上指定转置运算,以加速对此类矩阵的有意义值的处理。 一些神经网络训练算法可能需要转置神经网络矩阵(例如,在反向传 播期间)。一些神经网络可能需要矩阵的转置作为从卷积层转变为全 连接层的一部分,或者反之亦然。
在硬件电路110上执行矩阵运算的主要硬件单元是矩阵计算单元 120,其不能直接地执行矩阵转置运算。因此,集成电路不能直接地对 矩阵执行转置运算。为了实现在矩阵上指定转置运算的神经网络,神 经网络实现引擎150生成指令,指令当在由神经网络对神经网络输入 进行处理处理期间由专用硬件电路110执行时,使硬件电路110使用 矩阵乘法单元120和矢量计算单元140来对矩阵执行矩阵转置运算。 在下面参考图6至图9对这些指令和其它运算进行更详细的描述。
图2是用于使用专用硬件电路来针对神经网络的给定层执行计算 的示例过程200的流程图。为了方便,将相对于具有执行方法200的 一个或多个电路的系统来描述方法200。可针对神经网络的每层执行方 法200以便从接收到的输入计算推理。
系统针对给定层接收权重输入集(步骤202)和激活输入集(步 骤204)。可分别从专用硬件电路的动态存储器和统一缓冲器接收权重 输入集和激活输入集。在一些实施方式中,可从统一缓冲器接收权重 输入集和激活输入集两者。
系统使用专用硬件电路的矩阵乘法单元来从权重输入和激活输入 生成累加值(步骤206)。在一些实施方式中,累加值是权重输入集和 激活输入集的点积。也就是说,对于作为层中的所有权重的子集的一 个权重集,系统可将每个权重输入与每个激活输入相乘并且将这些积 加在一起以形成累加值。系统然后可计算其它权重集与其它激活输入 集的点积。
系统可使用专用硬件电路的矢量计算单元来从累加值生成层输出 (步骤208)。在一些实施方式中,矢量计算单元对累加值应用激活函 数,将在下面参考图5进一步对此进行描述。层的输出可被存储在统 一缓冲器中以用作神经网络中的后续层的输入或者可用于确定推理。 当已经通过神经网络的每层处理了接收到的输入以针对所接收到的输 入生成推理时,系统完成处理神经网络。
图3示出用于执行神经网络计算的示例专用硬件电路300。系统 300包括主机接口302。主机接口302可接收包括用于神经网络计算的 参数的指令。参数可包括下列中的一个或多个:多少层应该被处理、 用于模型的每层的权重输入的对应集合、激活输入(即,将计算推理 的神经网络的输入)的初始集合、每层的对应输入和输出大小、用于 神经网络计算的步幅值以及要处理的层的类型,例如,卷积层或全连 接层。
主机接口302可将指令发送到定序器306,定序器306将指令转 换成控制电路以执行神经网络计算的低电平控制信号。在一些实施方 式中,控制信号调节电路中的数据流,例如,权重输入集和激活输入 集如何流过电路。定序器306可将控制信号发送到统一缓冲器308、矩 阵计算单元312和矢量计算单元314。在一些实施方式中,定序器306 也将控制信号发送到直接存储器存取引擎304和动态存储器310。在一 些实施方式中,定序器306是生成控制信号的处理器。定序器306可 使用控制信号的时序在适当的时间将控制信号发送到电路300的每个 组件。在一些其它实施方式中,主机接口302从外部处理器传入控制 信号。
主机接口302可将权重输入集和初始激活输入集发送到直接存储 器存取引擎304。直接存储器存取引擎304可将激活输入集存储在统一 缓冲器308处。在一些实施方式中,直接存储器存取将权重集存储到 动态存储器310,动态存储器310可以是存储器单元。在一些实施方式 中,动态存储器310位于电路之外。
统一缓冲器308是存储器缓冲器。它可用于存储来自直接存储器 存取引擎304的激活输入集和矢量计算单元314的输出。将在下面参 考图6更详细地描述矢量计算单元314。直接存储器存取引擎304也可 从统一缓冲器308读取矢量计算单元314的输出。
动态存储器310和统一缓冲器308分别可将权重输入集和激活输 入集发送到矩阵计算单元312。在一些实施方式中,矩阵计算单元312 是二维脉动阵列。矩阵计算单元312也可以是一维脉动阵列或可执行 数学运算(例如,乘法和加法)的其它电路。在一些实施方式中,矩 阵计算单元312是通用矩阵处理器。专用硬件电路300可使用矩阵计 算单元312来执行矩阵转置运算。在下面参考图8至图9对使用矩阵 计算单元312来执行矩阵转置运算进行更详细的描述。
矩阵计算单元312可处理权重输入和激活输入并且向矢量计算单 元314提供输出的矢量。在一些实施方式中,矩阵计算单元312将输 出的矢量发送到统一缓冲器308,统一缓冲器308将输出的矢量发送到 矢量计算单元314。矢量计算单元314可处理输出的矢量并将经处理的 输出的矢量存储到统一缓冲器308。处理的输出的矢量可被用作矩阵计 算单元312的激活输入,例如,以用于在神经网络中的后续层中使用。 将在下面分别参考图3和图6更详细地描述矩阵计算单元312和矢量 计算单元314。
图4示出了包括矩阵计算单元的示例架构400。矩阵计算单元是 二维脉动阵列406。阵列406包括多个cell 404。在一些实施方式中, 脉动阵列406的第一维度420对应于cell的列,并且脉动阵列406的 第二维度422对应于cell的行。脉动阵列可以具有比列多的行、比列 多的列或者具有相同数量的列和行。
在所示的示例中,值加载器402向阵列406的行发送激活输入, 并且权重预取器接口408将权重输入发送到阵列406的列。然而,在 一些其他实施方式中,激活输入被传送到阵列406的列和权重输入被 传送到阵列406的行。
值加载器402可以从统一缓冲器,例如图3的统一缓冲器308, 接收激活输入。每个值加载器可以将对应的激活输入发送到阵列406 的不同的最左边的cell。例如,值加载器412可以将激活输入发送到cell 414。
权重预取器接口408可以接收来自存储器单元例如图3的动态存 储器310的权重输入。权重预取器接口408可以将对应的权重输入发 送到阵列406的不同的最上部cell。例如,权重预取器接口408可以将 权重输入发送到cell 414和416。权重预取器接口408进一步能够从存 储器单元例如动态存储器310接收多个权重,并且将多个权重并行地 发送到阵列406的不同的最上部cell。例如,权重预取器接口408可以 同时向cell 414和416发送不同的权重。
在一些实施方式中,主机接口,例如图3的主机接口302,沿一 个维度,例如向右,遍及阵列406移位激活输入,同时沿另一维度, 例如向下,遍及阵列406移位权重输入。例如,在一个时钟周期内,cell 414处的激活输入可以移位到在cell 414的右侧的cell 416中的激活寄 存器。类似地,cell 416处的权重输入可以移位到在cell 414下面的cell 418处的权重寄存器。
在每个时钟周期中,每个cell可以处理给定的权重输入、给定的 激活输入以及来自相邻cell的累积输出以生成累积输出。累积输出也 可以沿着与给定权重输入相同的维度传递到相邻cell。每个cell还可以 处理给定的权重输入和给定的激活输入以生成输出,而不处理来自相 邻cell的累积输出。输出可以沿着与给定的权重输入和输出相同的维 度传递到相邻的cell而不被累积。下面参考图5进一步描述单个cell。
累积输出可以沿着与权重输入相同的列被传递,例如朝向阵列406 中的列的下部传递。在一些实施方式中,在每列的下部,阵列406可 以包括累积器单元410,累积器单元410当使用具有比行更多的激活输 入的层进行计算时存储并累积来自每列的每个累积输出。在一些实施 方式中,每个累积器单元存储多个并行累积。累积器单元410可以累 积每个累积的输出以生成最终的累积值。最终的累积值可以被传送到 矢量计算单元,例如图6的矢量计算单元。在一些其他实施方式中, 当使用具有比行更少的激活输入的层处理层时,累积器单元410将累 积值传递到矢量计算单元而不执行任何累积。
图5示出了例如图4的脉动阵列406的脉动阵列内的cell的示例 架构700。
cell可以包括存储激活输入的激活寄存器506。激活寄存器可以接 收来自左相邻cell,即位于给定cell的左侧的相邻cell,或来自统一缓 冲器的激活输入,这取决于该cell在脉动阵列内的位置。cell可以包括 存储权重输入的权重寄存器502。权重输入可以从上部相邻cell或从权 重预取器接口传递,这取决于该cell在脉动阵列内的位置。cell还可以 包括寄存器中求和504。寄存器中求和504可以存储来自上部相邻cell 的累积值。乘法电路508可以用于将来自权重寄存器502的权重输入 与来自激活寄存器506的激活输入相乘。乘法电路508可以将乘积输 出到求和电路510。
求和电路510可以将所述乘积和来自寄存器504中的和寄存器中 求和504的累积值进行求和以生成新的累积值。求和电路510然后可 以将新的累积值发送到位于下部相邻cell中的另一个寄存器中的另一 个和求和。新的累积值可以用作下部相邻cell中的求和操作数。求和 电路510还可以接收接受来自寄存器504中的和寄存器中求和504的 值,并且将来自寄存器504中的和寄存器中求和504的值发送到下部 相邻cell,而不将来自寄存器504中的和寄存器中求和504的值与来自 乘法电路508的乘积求和。
cell还可以将权重输入和激活输入移位到相邻cell进行处理。例 如,权重路径寄存器512可以将权重输入发送到下部相邻cell中的另 一个权重寄存器。激活寄存器506可以将激活输入发送到右相邻cell 中的另一个激活寄存器。权重输入和激活输入两者因此可以在随后的 时钟周期由阵列中的其他cell重新使用。
在一些实施方式中,cell还包括控制寄存器。控制寄存器可以存储 控制信号,该控制信号确定cell应该将权重输入还是激活输入移位到 相邻cell。在一些实施方式中,移位权重输入或激活输入需要一个或多 个时钟周期。控制信号还可以确定激活输入或权重输入是否被传送到 乘法电路508,或者可以确定乘法电路508是否针对激活和权重输入操作。控制信号还可以例如使用导线传递给一个或多个相邻的cell。
在一些实施方式中,权重被预先移位到权重路径寄存器512中。 权重路径寄存器512可以例如从上部相邻cell接收权重输入,并且基 于控制信号将权重输入传送到权重寄存器502。权重寄存器502可以静 态地存储权重输入,使得随着激活输入例如通过激活寄存器506在多 个时钟周期内传送到cell,权重输入保持在cell内并且不被传送到相邻 cell。因此,权重输入可以例如使用乘法电路508应用于多个激活输入, 并且各个累积值可以被传送到相邻cell。
图6示出了矢量计算单元602的示例架构700。矢量计算单元602 可以从矩阵计算单元例如参照图3描述的矩阵计算单元312或图4的 矩阵计算单元的累积器410接收累积值的矢量。
矢量计算单元602可以在激活单元604处理累积值的矢量。在一 些实施方式中,激活单元包括将非线性函数应用于每个累积值以生成 激活值的电路。例如,非线性函数可以是tanh(x),其中x是累积值。
可选地,矢量计算单元602可以使用池化电路608池化例如激活 值的值。池化电路608可以将聚合函数应用于一个或多个值以生成池 化值。在一些实施方式中,聚合函数是返回值或者值的子集的最大值、 最小值或者平均值的函数。
控制信号610可以例如由图1的定序器306传送,并且可以调节 矢量计算单元602如何处理累积值的矢量。也就是说,控制信号610 可以调节激活值是否被池化、激活值存储在例如统一缓冲器308中的 什么位置、或者可以以其它方式调节激活值的处理。控制信号610还 可以指定激活或池化函数、以及用于处理激活值或池化值的其他参数, 例如步进值。
矢量计算单元602可以将值,例如激活值或池化值,发送到统一 缓冲器,例如图3的统一缓冲器308。在一些实施方式中,池化电路 608接收激活值或池化值并将激活值或池化值存储在统一缓冲器中。
图7是用于实现指定针对矩阵的转置操作的神经网络的示例过程 700的流程图。通常,过程700由包括专用硬件电路(例如,图1的专 用硬件电路110)的一个或多个计算机的系统执行。
系统接收在专用硬件电路上实现神经网络的请求(步骤702)。 特别地,神经网络包括许多神经网络矩阵,并且在神经网络矩阵的第 一神经网络矩阵上指定转置操作。
该系统生成当由专用硬件电路执行时使专用硬件电路转置第一神 经网络矩阵(步骤704)的指令。这些指令使得专用硬件电路通过在每 次迭代期间更新矩阵的当前细分的每个子矩阵来迭代地转置矩阵。更 新当前细分的每个子矩阵包括使用专用硬件电路中的矩阵计算单元交 换当前子矩阵的右上象限和子矩阵的左下象限。下面参照图8更详细地描述在每次迭代期间更新当前细分的子矩阵。
矩阵的细分是将矩阵分成一个或多个子矩阵。在每次迭代中,指 令使专用硬件电路将矩阵分成一个或多个(例如四个)子矩阵以生成 矩阵的当前细分。例如,在第一次迭代中,指令使专用硬件电路110 生成仅包括一个当前子矩阵的初始当前细分。换句话说,第一次迭代 的当前子矩阵包括整个第一神经网络矩阵作为唯一的子矩阵。在每个 随后的迭代中,指令使专用硬件电路通过将当前细分中的每个细分分 成一个或多个(例如四个)细分来生成更新的当前细分。
在一些实施方式中,第一神经网络矩阵是2i*2i矩阵,其中i是非 负整数,并且更新矩阵包括在每次迭代时将第一神经网络矩阵划分为 大小为2j*2j的子矩阵,以及通过不是垂直或水平地与特定子矩阵相邻 而是与特定子矩阵在对角线上相邻的一个对应子矩阵交换每个特定子 矩阵。在其中一些实施方式中,j的值在第一次迭代中是(i-1),并且在 每次迭代中递减。
迭代继续,直到当前细分的子矩阵是第一个神经网络矩阵内的单 个值。此时,由于单个值不能再细分为更多的子矩阵,迭代终止。
在一些实施方式中,系统执行矩阵乘法运算作为对具有最大矢量 长度的矢量的矢量乘法的组合。最大矢量长度是矩阵计算单元一次(即 不将矢量划分为矩阵计算单元的多个输入)可乘以矩阵的矢量的最大 长度。例如,如果矩阵计算单元是一维或二维脉动阵列,则最大矢量 长度等于单元中的列数或单元中的行数。
在那些实施方式中的一些中,系统获得指示零值已被添加到神经 网络矩阵的信息以调整矩阵的维度,使得矩阵可被划分为具有最大矢 量长度的矢量。换句话说,神经网络矩阵已被零填充以适应系统的架 构配置。响应于该信息,系统可以避免执行逐值乘法运算,其涉及被 标识为已经作为零填充的结果而被添加的值,因为这样的操作总是返 回零值。结果,该系统可以减少执行这种矢量乘法所需的逐值乘法运 算的次数。
系统将指令发送到专用硬件电路(步骤706)。
例如,神经网络实施引擎150可以将指令提供给专用硬件电路 110,并且专用硬件电路110可以例如在图3的主机接口302处接收指 令。神经网络实施引擎150还可以提供也可以由主机接口302接收的 用于神经网络计算的其他指令和/或参数。
图8是用于使用专用硬件电路来更新神经网络矩阵的当前细分的 子矩阵的示例过程800的流程图。例如,过程800可以由图1的专用 硬件电路110基于从神经网络实施引擎150接收到的指令执行。专用 硬件电路通过使用专用硬件电路110中的矩阵计算单元交换子矩阵的 右上象限和子矩阵的左下象限,更新当前细分的子矩阵。
专用硬件电路110为神经网络矩阵(802)的每一行创建一个矢量。
专用硬件电路110针对电路110试图生成的交换子矩阵的每个值 获得部分单位矩阵(804)。电路110可以使用相同的部分单位矩阵来 生成交换子矩阵的两个或更多个值。
部分单位矩阵是仅包含“0”和“1”值的矩阵。部分单位矩阵中 的“1”值在策略上被定位使得当乘以包括第一神经网络矩阵的行中的 值的矢量时,乘法的输出保留该矢量的某些值而无效(即,输出“0”) 其他值。
在一些实施方式中,如果包含神经网络矩阵的行的值的矢量具有 维度d,则在乘以该矢量时在结果矢量的j和(j+1)值分别返回该矢量中 的i和(i+1)值的部分单位矩阵是在[i,j]和[i+1和j+1]位置具有1值并且 在其他地方具有0值的d*d矩阵。
专用硬件电路110将神经网络矩阵的每一行乘以一个或多个部分 单位矩阵,以获得来自更新神经网络矩阵所需的行的值,以交换当前 细分中每个子矩阵的右上象限和左下象限(806)。
例如,矢量V1=[A B]可以包括神经网络矩阵的第一行的两个值。 为了提取矢量的第一值,专用硬件电路将V1乘以下面的部分单位矩阵 I1
V1*I1的输出=[A 0]。因此,A的值被保留,而B的值被无效。
专用硬件电路110组合包含更新后的神经网络矩阵的每一行的部 分的矢量以生成该行(908)。例如,V1可能是神经网络矩阵M1的第 一行:
对应于矩阵M1的更新的矩阵S1的第一行将包括V1的第一元素和 矢量V2=[C D]的第一元素,其包括矩阵M1的第二行的值。
换句话说,包含更新矩阵S1的第一行的部分的两个矢量是V1*I1的输出和V2*I1的输出。专用硬件电路110可以组合这两个矢量来生成 交换子矩阵S1的第一行。
专用硬件电路110组合神经网络矩阵的每一行以生成更新的神经 网络矩阵(810)。
因为交换每个子矩阵的右上和左下象限可以使用矩阵乘法单元来 执行(例如,使用一系列矩阵向量乘法和加法,如下面进一步描述的), 所以专用硬件电路110可以在不具有用于直接矩阵转置操作的能力的 情况下在矩阵上执行转置操作。这样,神经网络实施引擎150可以使 用硬件电路110来处理指定矩阵的转置的不兼容层。
图9是用于对神经网络矩阵执行转置操作的计算的示例。可以使 用图7的过程和图3的专用硬件电路300来执行图9的示例。
在图9的部分(a)中,专用硬件电路通过创建包括整个矩阵的子 矩阵来形成4×4矩阵的当前细分。该电路创建包含神经网络矩阵的每 一行的值的矢量。例如,该电路创建包含矩阵的第一行的值的矢量 Input[0]。
图9的部分(b)描绘了四个部分单位矩阵。每个部分单位矩阵具 有由矩阵内的“1”值的位置定义的结构。每个部分单位矩阵的结构被 策略性地设计以从部分(a)中所示的矢量提取某些值同时使这些矢量 中的其他值无效。例如,专用硬件电路使用部分单位矩阵W1来提取矢 量的第一和第二值。
在图9的部分(c)中,专用硬件电路使用部分(a)中描述的矢 量和部分(b)中描述的部分单位矩阵执行四组计算。该电路使用每组 计算来生成一行更新的神经网络矩阵,该矩阵包括部分(a)中描绘的 神经网络矩阵的元素,但是交换每个子矩阵的右上和左下象限。例如, 电路使用第一组计算来生成[A B I J],它是每个子矩阵的右上角和左下 象限交换的神经网络子矩阵的第一行。
图9的部分(d)描绘了通过交换神经网络矩阵中的每个子矩阵的 右上和左下象限来更新部分(a)中描绘的神经网络矩阵的输出。
在部分(e)中,专用硬件电路将部分(d)中描绘的更新后的神 经网络矩阵划分成行。
图9的部分(f)描绘了四个部分单位矩阵。部分(f)中描述的每 个部分单位矩阵的结构被策略性地设计为从部分(d)中示出的矢量提 取某些值同时使这些矢量中的其他值无效。
在部分(g)中,专用硬件电路使用部分(e)中描述的矢量和部 分(f)中描述的部分单位矩阵执行四组计算。当在部分(e)中描绘的 神经网络矩阵上执行时,计算导致对部分(e)中描绘的神经网络矩阵 的更新,以在神经网络矩阵分成四个子矩阵的新细分中交换每个子矩 阵的右上和左下象限。部分(h)所示的新矩阵是部分(a)所示矩阵的 转置矩阵。
在图9的部分(d)-(g)中执行的操作是在图9的部分(a)-(c) 中执行的操作的重复。然而,在部分(g)之后,在部分(e)中描述的 子矩阵构成的新子矩阵是不能再进一步细分为象限的单个值。因此, 这些操作将不再重复。
本说明书中描述的主题和功能操作的实施例可以以数字电子电 路、有形实施的计算机软件或固件、计算机硬件(包括本说明书中公 开的结构及其结构等同物)或以它们的一个或多个的组合来实施。本 说明书中描述的主题的实施例可以被实现为一个或多个计算机程序, 即编码在有形非暂时性程序载体上的计算机程序指令的一个或多个模 块,用于由数据处理装置执行或控制数据处理装置。可选地或附加地, 程序指令可以被编码在人工生成的传播信号上,例如机器生成的电信 号、光信号或电磁信号,其被生成以编码信息以供传输到合适的接收 器设备用于数据装置设备执行。计算机存储介质可以是机器可读存储 设备、机器可读存储基板、随机或串行存取存储设备,或它们中的一 个或多个的组合。
术语“数据处理装置”涵盖用于处理数据的各种装置、设备和机 器,例如包括可编程处理器、计算机或多个处理器或计算机。该装置 可以包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专 用集成电路)。除了硬件之外,该装置还可以包括为所涉及的计算机 程序创建执行环境的代码,例如构成处理器固件、协议栈,数据库管 理系统、操作系统或者其组合的代码,或它们中的一个或多个的组合。
计算机程序(其也可被称为或描述为程序、软件、软件应用、模 块、软件模块、脚本或代码)可以用任何形式的编程语言编写,包括 编译或解释语言,或声明性或过程性语言,并且可以以任何形式进行 部署,包括作为独立程序或作为模块、组件、子例程或适用于计算环 境的其他单元。计算机程序可能但不一定对应于文件系统中的文件。 程序可以存储在保存其他程序或数据的文件的一部分中,例如存储在 标记语言文档中的一个或多个脚本,专用于所讨论的程序的单个文件 中,或者存储在多个协调文件中,例如,存储一个或多个模块、子程 序或部分代码的文件。计算机程序可以部署为在一台计算机或多台计 算机上执行,这些计算机位于一个站点或跨多个站点分布并通过通信 网络互连。
本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机 程序的一个或多个可编程计算机执行,以通过对输入数据进行操作并 生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路(例如, FPGA(现场可编程门阵列)或ASIC(专用集成电路))来执行,并 且装置也可以被实现为专用逻辑电路(例如,FPGA(现场可编程门阵 列)或ASIC(专用集成电路))。
举例来说,适用于执行计算机程序的计算机可以基于通用或专用 微处理器或两者,或任何其他类型的中央处理单元。通常,中央处理 单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算 机的基本元件是用于实行或执行指令的中央处理单元以及用于存储指 令和数据的一个或多个存储器设备。通常,计算机还将包括或可操作 地耦合到一个或多个用于存储数据的大容量存储设备(例如,磁盘, 磁光盘或光盘)以从其接收或向其传输数据,或两者皆有。但是,计 算机不必具有这种设备。而且,计算机可以嵌入到另一个设备中,例 如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏 控制台、全球定位系统(GPS)接收器或便携式存储设备(例如,通用 串行总线(USB)闪存驱动器),仅举几例。
适用于存储计算机程序指令和数据的计算机可读介质包括所有形 式的非易失性存储器、介质和存储设备,例如包括半导体存储设备, 例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁 盘;磁光盘;和CD ROM和DVD-ROM盘。处理器和存储器可以由专 用逻辑电路补充或并入其中。
为了发送以用于与用户的交互,本说明书中描述的主题的实施例 可以在具有显示设备(例如,CRT(阴极射线管)或LCD(液晶显示 器)监视器)的计算机上实现,用于向用户显示信息,以及键盘和指 点设备(例如鼠标或轨迹球),用户可以通过键盘和指点设备将输入 发送到计算机。其他类型的设备也可以用来发送以用于与用户的交互; 例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、 听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包 括声学、语音或触觉输入。另外,计算机可以通过向用户使用的设备 发送文档和从设备接收文档来与用户交互;例如,通过响应于从web 浏览器接收到的请求,将网页发送到用户的客户端设备上的web浏览 器。
本说明书中描述的主题的实施例可以在计算系统中实现,该计算 系统包括后端组件,例如作为数据服务器,或者包括中间件组件(例 如应用服务器),或者包括前端组件例如具有图形用户界面或Web浏 览器的客户端计算机,用户可以通过该图形用户界面或Web浏览器与 本说明书中描述的主题的实现交互,或者一个或多个这样的后端,中 间件或前端组件的任意组合。系统的组件可以通过数字数据通信的任 何形式或介质(例如通信网络)互连。通信网络的示例包括局域网 (“LAN”),和广域网(“WAN”),例如互联网。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远 离并且通常通过通信网络进行交互。客户端和服务器之间的关系是通 过运行在各个计算机上的计算机程序生成的,并且彼此具有客户端-服 务器关系。
虽然本说明书包含许多具体的实现细节,但这些细节不应被解释 为对任何发明或可能要求保护的范围的限制,而应被解释为可能特定 于特定发明的特定实施例的特征的描述。本说明书中在单独实施例的 上下文中描述的某些特征也可以在单个实施例中组合实现。相反地, 在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独地或以任何合适的子组合来实现。此外,尽管上文可以将特征描述为 以某些组合起作用并且甚至最初也如此主张,但是来自所要求保护的 组合的一个或多个特征在一些情况下可以从组合中删除,并且所要求 保护的组合可以针对子组合或子组合的变体。
类似地,尽管在附图中以特定顺序描述了操作,但这不应被理解 为要求以所示的特定顺序或按顺序执行这样的操作,或者执行所有示 出的操作以实现期望的结果。在某些情况下,多任务和并行处理可能 是有利的。此外,上述实施例中的各种系统模块和组件的分离不应该 被理解为在所有实施例中都需要这种分离,并且应该理解,所描述的 程序组件和系统通常可以一起集成在单个软件产品中,或者打包成多 个软件产品。
已经描述了主题的特定实施例。其他实施例在以下权利要求的范 围内。例如,权利要求中引用的动作可以以不同的顺序执行并且仍然 实现期望的结果。作为一个示例,附图中描述的过程不一定需要所示 的特定顺序或顺序,以实现期望的结果。在某些实现中,多任务和并 行处理可能是有利的。

Claims (20)

1.一种方法,包括:
接收用于在具有矩阵计算单元的硬件电路上执行用于神经网络的计算的请求,所述请求指定要对与所述神经网络相关联的第一神经网络矩阵执行的转置操作;以及
生成指令,所述指令当由所述硬件电路执行时使得所述硬件电路通过执行第一操作来转置所述第一神经网络矩阵,其中,所述第一操作包括重复地执行以下第二操作:
对于将所述第一神经网络矩阵划分成一个或多个当前子矩阵的所述第一神经网络矩阵的当前细分:
使用所述矩阵计算单元,通过交换在所述当前细分中的每个当前子矩阵的右上象限和左下象限来更新所述第一神经网络矩阵,以及
将所述当前细分中的每个当前子矩阵细分成相应的多个新子矩阵以更新所述当前细分,所述相应的多个新子矩阵的每一个是所述当前子矩阵的相应象限。
2.根据权利要求1所述的方法,所述第一操作还包括:
确定所述第一神经网络矩阵不是i×i矩阵,其中i是所述硬件电路的矢量长度值;
作为响应,通过在执行所述第二操作的所有迭代之前零填充所述第一神经网络矩阵,更新所述第一神经网络矩阵以生成i×i矩阵;以及
在执行所述第二操作的所有迭代之后,通过去除在所述更新期间填充的零,将所述第一神经网络矩阵转换为其在所述更新之前的状况。
3.根据权利要求1所述的方法,其中:
所述第一操作还包括获得指示所述第一神经网络矩阵的一个或多个值是零值的数据;以及
更新所述第一神经网络矩阵包括防止所述矩阵计算单元对一组值执行任何操作,所述一组值包括是零值的所述第一神经网络矩阵的所述一个或多个值中的至少一个值。
4.根据权利要求1所述的方法,其中,交换所述当前子矩阵的右上象限和每个当前子矩阵的左下象限包括:
将所述第一神经网络矩阵的每一行乘以一个或多个部分单位矩阵以生成一个或多个矢量,所述一个或多个矢量的每一个包括每个相应的当前子矩阵的右上象限和左下象限的元素被交换的相应行的部分;
对于所述第一神经网络矩阵的每一行,将与每个相应的当前子矩阵的右上象限和左下象限的元素被交换的所述第一神经网络矩阵的每个相应行的部分相对应的矢量进行组合;以及
通过组合每个相应行来生成更新的第一神经网络矩阵。
5.根据权利要求1所述的方法,其中,所述矩阵计算单元将矩阵乘法运算执行为一系列矢量乘法运算。
6.根据权利要求1所述的方法,其中,所述第二操作还包括生成所述第一神经网络矩阵的初始当前细分,其中,所述初始当前细分包含是所述第一神经网络矩阵的初始子矩阵。
7.根据权利要求1所述的方法,其中,所述第一操作还包括将所述指令传输到所述硬件电路。
8.一种包括一个或多个计算机和一个或多个存储设备的系统,所述存储设备存储指令,所述指令在由所述一个或多个计算机执行时可操作以使所述一个或多个计算机执行操作,所述操作包括:
接收用于在具有矩阵计算单元的硬件电路上执行用于神经网络的计算的请求,所述请求指定要对与所述神经网络相关联的第一神经网络矩阵执行的转置操作;以及
生成指令,所述指令当由所述硬件电路执行时使得所述硬件电路通过执行第一操作来转置所述第一神经网络矩阵,其中,所述第一操作包括重复地执行以下第二操作:
对于将所述第一神经网络矩阵划分成一个或多个当前子矩阵的所述第一神经网络矩阵的当前细分:
使用所述矩阵计算单元,通过交换在所述当前细分中的每个当前子矩阵的右上象限和左下象限来更新所述第一神经网络矩阵,以及
将所述当前细分中的每个当前子矩阵细分成相应的多个新子矩阵以更新所述当前细分,所述相应的多个新子矩阵的每一个是所述当前子矩阵的相应象限。
9.根据权利要求8所述的系统,所述第一操作还包括:
确定所述第一神经网络矩阵不是i×i矩阵,其中i是用于所述硬件电路的矢量长度值;
作为响应,通过在执行所述第二操作的所有迭代之前零填充所述第一神经网络矩阵,更新所述第一神经网络矩阵以生成i×i矩阵;以及
在执行所述第二操作的所有迭代之后,通过去除在所述更新期间填充的零,将所述第一神经网络矩阵转换为其在所述更新之前的状况。
10.根据权利要求8所述的系统,其中:
所述第一操作还包括获得指示所述第一神经网络矩阵的一个或多个值是零值的数据;以及
更新所述第一神经网络矩阵包括防止所述矩阵计算单元对一组值执行任何操作,所述一组值包括是零值的所述第一神经网络矩阵的所述一个或多个值中的至少一个值。
11.根据权利要求8所述的系统,其中,交换所述当前子矩阵的右上象限和每个当前子矩阵的左下象限包括:
将所述第一神经网络矩阵的每一行乘以一个或多个部分单位矩阵以生成一个或多个矢量,所述一个或多个矢量的每一个包括每个相应的当前子矩阵的右上象限和左下象限的元素被交换的相应行的部分;
对于所述第一神经网络矩阵的每一行,将与每个相应的当前子矩阵的右上象限和左下象限的元素被交换的所述第一神经网络矩阵的每个相应行的部分相对应的矢量进行组合;以及
通过组合每个相应行来生成更新的第一神经网络矩阵。
12.根据权利要求8所述的系统,其中,所述矩阵计算单元将矩阵乘法运算执行为一系列矢量乘法运算。
13.根据权利要求8所述的系统,其中,所述第二操作还包括生成所述第一神经网络矩阵的初始当前细分,其中,所述初始当前细分包含作为所述第一神经网络矩阵的初始子矩阵。
14.根据权利要求8所述的系统,其中,所述第一操作还包括将所述指令传输到所述硬件电路。
15.一种编码有指令的计算机可读存储介质,所述指令在由一个或多个计算机执行时使所述一个或多个计算机执行操作,所述操作包括:
接收用于在具有矩阵计算单元的硬件电路上执行用于神经网络的计算的请求,所述请求指定要对与所述神经网络相关联的第一神经网络矩阵执行的转置操作;以及
生成指令,所述指令当由所述硬件电路执行时使得所述硬件电路通过执行第一操作来转置所述第一神经网络矩阵,其中,所述第一操作包括重复地执行以下第二操作:
对于将所述第一神经网络矩阵划分成一个或多个当前子矩阵的所述第一神经网络矩阵的当前细分:
使用所述矩阵计算单元,通过交换在所述当前细分中的每个当前子矩阵的右上象限和左下象限来更新所述第一神经网络矩阵,以及
将所述当前细分中的每个当前子矩阵细分成相应的多个新子矩阵以更新所述当前细分,所述相应的多个新子矩阵的每一个是所述当前子矩阵的相应象限。
16.根据权利要求15所述的计算机可读存储介质,所述第一操作还包括:
确定所述第一神经网络矩阵不是i×i矩阵,其中i是用于所述硬件电路的矢量长度值;
作为响应,通过在执行所述第二操作的所有迭代之前零填充所述第一神经网络矩阵,更新所述第一神经网络矩阵以生成i×i矩阵;以及
在执行所述第二操作的所有迭代之后,通过去除在所述更新期间填充的零,将所述第一神经网络矩阵转换为其在所述更新之前的状况。
17.根据权利要求15所述的计算机可读存储介质,其中:
所述第一操作还包括获得指示所述第一神经网络矩阵的一个或多个值是零值的数据;以及
更新所述第一神经网络矩阵包括防止所述矩阵计算单元对一组值执行任何操作,所述一组值包括是零值的所述第一神经网络矩阵的所述一个或多个值中的至少一个值。
18.根据权利要求15所述的计算机可读存储介质,其中,交换所述当前子矩阵的右上象限和每个当前子矩阵的左下象限包括:
将所述第一神经网络矩阵的每一行乘以一个或多个部分单位矩阵以生成一个或多个矢量,所述一个或多个矢量的每一个包括每个相应的当前子矩阵的右上象限和左下象限的元素被交换的相应行的部分;
对于所述第一神经网络矩阵的每一行,将与每个相应的当前子矩阵的右上象限和左下象限的元素被交换的所述第一神经网络矩阵的每个相应行的部分相对应的矢量进行组合;以及
通过组合每个相应行来生成更新的第一神经网络矩阵。
19.根据权利要求15所述的计算机可读存储介质,其中,所述矩阵计算单元将矩阵乘法运算执行为一系列矢量乘法运算。
20.根据权利要求15所述的计算机可读存储介质,其中,所述第二操作还包括生成所述第一神经网络矩阵的初始当前细分,其中,所述初始当前细分包含作为所述第一神经网络矩阵的初始子矩阵。
CN201810196453.4A 2017-03-09 2018-03-09 硬件中转置神经网络矩阵 Active CN108573304B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210795051.2A CN115271049A (zh) 2017-03-09 2018-03-09 硬件中转置神经网络矩阵

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/455,024 US10909447B2 (en) 2017-03-09 2017-03-09 Transposing neural network matrices in hardware
US15/455,024 2017-03-09

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202210795051.2A Division CN115271049A (zh) 2017-03-09 2018-03-09 硬件中转置神经网络矩阵

Publications (2)

Publication Number Publication Date
CN108573304A true CN108573304A (zh) 2018-09-25
CN108573304B CN108573304B (zh) 2022-07-26

Family

ID=61768515

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202210795051.2A Pending CN115271049A (zh) 2017-03-09 2018-03-09 硬件中转置神经网络矩阵
CN201810196453.4A Active CN108573304B (zh) 2017-03-09 2018-03-09 硬件中转置神经网络矩阵

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202210795051.2A Pending CN115271049A (zh) 2017-03-09 2018-03-09 硬件中转置神经网络矩阵

Country Status (8)

Country Link
US (2) US10909447B2 (zh)
EP (2) EP3373210B1 (zh)
CN (2) CN115271049A (zh)
DE (2) DE102018105457A1 (zh)
DK (1) DK3373210T3 (zh)
GB (1) GB2562572A (zh)
TW (2) TWI765168B (zh)
WO (1) WO2018165514A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109919321A (zh) * 2019-02-01 2019-06-21 京微齐力(北京)科技有限公司 单元具有本地累加功能的人工智能模块及系统芯片
CN110210615A (zh) * 2019-07-08 2019-09-06 深圳芯英科技有限公司 一种用于执行神经网络计算的脉动阵列系统
CN111914831A (zh) * 2019-05-10 2020-11-10 杭州海康威视数字技术股份有限公司 目标检测方法、装置及存储介质
CN113508402A (zh) * 2019-03-01 2021-10-15 微软技术许可有限责任公司 从量化的固件神经网络层得出一致的软件神经网络层
CN113626769A (zh) * 2021-10-12 2021-11-09 中国人民解放军国防科技大学 面向向量处理器的低位宽数据矩阵向量化转置方法及系统
CN114258538A (zh) * 2019-08-16 2022-03-29 谷歌有限责任公司 片上操作的显式调度
CN116057914A (zh) * 2019-08-22 2023-05-02 谷歌有限责任公司 初始化片上操作

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10402628B2 (en) * 2016-10-10 2019-09-03 Gyrfalcon Technology Inc. Image classification systems based on CNN based IC and light-weight classifier
US10795836B2 (en) 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
JP6907700B2 (ja) * 2017-05-23 2021-07-21 富士通株式会社 情報処理装置、マルチスレッド行列演算方法、およびマルチスレッド行列演算プログラム
US20180350351A1 (en) * 2017-05-31 2018-12-06 Intel Corporation Feature extraction using neural network accelerator
US11507429B2 (en) * 2017-09-14 2022-11-22 Electronics And Telecommunications Research Institute Neural network accelerator including bidirectional processing element array
US11494582B2 (en) 2018-02-08 2022-11-08 Western Digital Technologies, Inc. Configurable neural network engine of tensor arrays and memory cells
US11164072B2 (en) 2018-02-08 2021-11-02 Western Digital Technologies, Inc. Convolution engines for systolic neural network processor
US10990650B1 (en) * 2018-03-22 2021-04-27 Amazon Technologies, Inc. Reducing computations for data including padding
US10621489B2 (en) 2018-03-30 2020-04-14 International Business Machines Corporation Massively parallel neural inference computing elements
US11315020B2 (en) * 2018-09-24 2022-04-26 International Business Machines Corporation Optimized partitioning of multi-layer networks in core-based neurosynaptic architectures
CN111199275B (zh) * 2018-11-20 2023-04-28 上海登临科技有限公司 用于神经网络的片上系统
US11783176B2 (en) 2019-03-25 2023-10-10 Western Digital Technologies, Inc. Enhanced storage device memory architecture for machine learning
US10929058B2 (en) 2019-03-25 2021-02-23 Western Digital Technologies, Inc. Enhanced memory device architecture for machine learning
US10990397B2 (en) 2019-03-30 2021-04-27 Intel Corporation Apparatuses, methods, and systems for transpose instructions of a matrix operations accelerator
US11620358B2 (en) * 2019-05-14 2023-04-04 Intel Corporation Technologies for performing macro operations in memory
CN112149049A (zh) * 2019-06-26 2020-12-29 北京百度网讯科技有限公司 用于变换矩阵的装置和方法、数据处理系统
US10884707B1 (en) * 2019-06-27 2021-01-05 Amazon Technologies, Inc. Transpose operations using processing element array
US20220092382A1 (en) * 2020-09-23 2022-03-24 The Governing Council Of The University Of Toronto Quantization for neural network computation
US11748251B2 (en) 2021-01-08 2023-09-05 Microsoft Technology Licensing, Llc Storing tensors in memory based on depth
TWI766777B (zh) * 2021-07-27 2022-06-01 鴻海精密工業股份有限公司 神經網路劃分的方法、電子設備及存儲介質
TWI808000B (zh) * 2022-09-20 2023-07-01 創鑫智慧股份有限公司 矩陣裝置及其操作方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5073752A (en) * 1990-04-19 1991-12-17 Picker International, Inc. Discrete fourier transform imaging
US5644517A (en) * 1992-10-22 1997-07-01 International Business Machines Corporation Method for performing matrix transposition on a mesh multiprocessor architecture having multiple processor with concurrent execution of the multiple processors
US6877020B1 (en) * 2001-12-31 2005-04-05 Apple Computer, Inc. Method and apparatus for matrix transposition
US20080292197A1 (en) * 2007-04-26 2008-11-27 Canon Kabushiki Kaisha Image encoding apparatus and control method thereof
CN102437858A (zh) * 2011-08-31 2012-05-02 北京理工大学 一种卷积码编码器结构的改进方法
CN105068546A (zh) * 2015-07-31 2015-11-18 哈尔滨工业大学 一种卫星编队相对轨道自适应神经网络构形包含控制方法
CN105913117A (zh) * 2016-04-04 2016-08-31 北京工业大学 一种计算机智能识别的相关神经网络方法
CN106022468A (zh) * 2016-05-17 2016-10-12 成都启英泰伦科技有限公司 人工神经网络处理器集成电路及该集成电路的设计方法
CN106021188A (zh) * 2016-05-11 2016-10-12 广州广电运通金融电子股份有限公司 浮点矩阵求逆的并行硬件架构和并行计算方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020146160A1 (en) * 2001-01-19 2002-10-10 Parker Mary F. Method and apparatus for generating two-dimensional images of cervical tissue from three-dimensional hyperspectral cubes
US7564933B2 (en) * 2004-11-30 2009-07-21 The Regents Of The University Of California Method and system for near optimal iterative detection of the 2-dimensional ISI channel
US20060190517A1 (en) * 2005-02-02 2006-08-24 Guerrero Miguel A Techniques for transposition of a matrix arranged in a memory as multiple items per word
US7395251B2 (en) * 2005-07-01 2008-07-01 International Business Machines Corporation Neural networks for prediction and control
US8812285B2 (en) * 2010-08-31 2014-08-19 The Regents Of The University Of California Designing digital processors using a flexibility metric
EP3035249B1 (en) 2014-12-19 2019-11-27 Intel Corporation Method and apparatus for distributed and cooperative computation in artificial neural networks
US10083395B2 (en) 2015-05-21 2018-09-25 Google Llc Batch processing in a neural network processor
US10438117B1 (en) 2015-05-21 2019-10-08 Google Llc Computing convolutions using a neural network processor
US10192162B2 (en) 2015-05-21 2019-01-29 Google Llc Vector computation unit in a neural network processor
US10049322B2 (en) 2015-05-21 2018-08-14 Google Llc Prefetching weights for use in a neural network processor
US9805303B2 (en) 2015-05-21 2017-10-31 Google Inc. Rotating data for neural network computations
US9747546B2 (en) 2015-05-21 2017-08-29 Google Inc. Neural network processor
US10325006B2 (en) * 2015-09-29 2019-06-18 International Business Machines Corporation Scalable architecture for analog matrix operations with resistive devices

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5073752A (en) * 1990-04-19 1991-12-17 Picker International, Inc. Discrete fourier transform imaging
US5644517A (en) * 1992-10-22 1997-07-01 International Business Machines Corporation Method for performing matrix transposition on a mesh multiprocessor architecture having multiple processor with concurrent execution of the multiple processors
US6877020B1 (en) * 2001-12-31 2005-04-05 Apple Computer, Inc. Method and apparatus for matrix transposition
US20080292197A1 (en) * 2007-04-26 2008-11-27 Canon Kabushiki Kaisha Image encoding apparatus and control method thereof
CN102437858A (zh) * 2011-08-31 2012-05-02 北京理工大学 一种卷积码编码器结构的改进方法
CN105068546A (zh) * 2015-07-31 2015-11-18 哈尔滨工业大学 一种卫星编队相对轨道自适应神经网络构形包含控制方法
CN105913117A (zh) * 2016-04-04 2016-08-31 北京工业大学 一种计算机智能识别的相关神经网络方法
CN106021188A (zh) * 2016-05-11 2016-10-12 广州广电运通金融电子股份有限公司 浮点矩阵求逆的并行硬件架构和并行计算方法
CN106022468A (zh) * 2016-05-17 2016-10-12 成都启英泰伦科技有限公司 人工神经网络处理器集成电路及该集成电路的设计方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109919321A (zh) * 2019-02-01 2019-06-21 京微齐力(北京)科技有限公司 单元具有本地累加功能的人工智能模块及系统芯片
CN113508402A (zh) * 2019-03-01 2021-10-15 微软技术许可有限责任公司 从量化的固件神经网络层得出一致的软件神经网络层
CN111914831A (zh) * 2019-05-10 2020-11-10 杭州海康威视数字技术股份有限公司 目标检测方法、装置及存储介质
CN111914831B (zh) * 2019-05-10 2023-06-02 杭州海康威视数字技术股份有限公司 目标检测方法、装置及存储介质
CN110210615A (zh) * 2019-07-08 2019-09-06 深圳芯英科技有限公司 一种用于执行神经网络计算的脉动阵列系统
CN114258538A (zh) * 2019-08-16 2022-03-29 谷歌有限责任公司 片上操作的显式调度
CN114258538B (zh) * 2019-08-16 2024-04-12 谷歌有限责任公司 片上操作的显式调度
CN116057914A (zh) * 2019-08-22 2023-05-02 谷歌有限责任公司 初始化片上操作
CN113626769A (zh) * 2021-10-12 2021-11-09 中国人民解放军国防科技大学 面向向量处理器的低位宽数据矩阵向量化转置方法及系统

Also Published As

Publication number Publication date
CN108573304B (zh) 2022-07-26
TW201945983A (zh) 2019-12-01
WO2018165514A1 (en) 2018-09-13
DE202018101330U1 (de) 2018-06-18
GB201803806D0 (en) 2018-04-25
EP3761235B1 (en) 2024-05-01
TWI765168B (zh) 2022-05-21
US20210224641A1 (en) 2021-07-22
US10909447B2 (en) 2021-02-02
US11704547B2 (en) 2023-07-18
US20180260690A1 (en) 2018-09-13
EP3373210B1 (en) 2020-06-17
GB2562572A (en) 2018-11-21
TW201837792A (zh) 2018-10-16
DK3373210T3 (da) 2020-08-17
DE102018105457A1 (de) 2018-09-13
EP3373210A1 (en) 2018-09-12
CN115271049A (zh) 2022-11-01
TWI671688B (zh) 2019-09-11
EP3761235A1 (en) 2021-01-06

Similar Documents

Publication Publication Date Title
CN108573304A (zh) 硬件中转置神经网络矩阵
CN108073983B (zh) 在硬件中执行核心跨越
CN108615072B (zh) 在硬件中执行平均池化
CN110457069B (zh) 访问多维张量中的数据
CN107454965B (zh) 神经网络处理器中的批处理
KR102127524B1 (ko) 신경망 프로세서의 벡터 컴퓨테이션 유닛
CN107209872A (zh) 强化学习系统的分布式训练
US20240152740A1 (en) Transposing neural network matrices in hardware

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1261292

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant