模拟人工智能网络推理的逐行卷积神经网络映射的高效瓦片映射的制作方法

文档序号:33155453发布日期:2023-02-03 23:38阅读:45来源:国知局
模拟人工智能网络推理的逐行卷积神经网络映射的高效瓦片映射的制作方法
模拟人工智能网络推理的逐行卷积神经网络映射的高效瓦片映射


背景技术:

1.本发明总体涉及计算技术,更具体地涉及人工神经网络(ann)。特别地,本发明的实施例涉及将卷积神经网络(cnn)映射到交叉点阵列中的交叉点器件,诸如在基于模拟(analog)存储器的硬件中用于在前向推理阶段期间提供来自经训练的cnn的输出。
2.已知诸如通过计算机的字符识别和图像识别的技术问题通过机器学习技术被很好地处理。“机器学习”用于广泛地描述从数据学习的电子系统的主要功能。在机器学习和认知科学中,神经网络是由动物,特别是大脑的生物神经网络所启发的一族统计学习模型。神经网络可以用于估计或近似依赖于大量输入并且通常未知的系统和函数。神经网络使用基于互连“神经元”概念的一类算法。在典型的神经网络中,神经元具有对输入进行操作的给定激活函数。通过确定适当的连接权重(也称为“训练”的过程),神经网络实现了对诸如图像和字符的期望模式的高效识别。通常,这些神经元被分组为“层”,以便使组之间的连接更明显并且组织计算过程。利用这些适当的连接权重,在训练期间网络从未看到过的其它感兴趣的模式也可以被正确地识别,这是被称为“前向推理”的过程。


技术实现要素:

3.根据本发明的一个或多个实施例,描述了一种用于使用交叉点阵列实现卷积神经网络(cnn)的计算机实现的方法。该方法包括配置实现cnn中的卷积层的交叉点阵列。通过将卷积层的一个或多个卷积核存储在交叉点阵列的一个或多个交叉点器件中来执行配置。该方法还包括通过将一组操作迭代预定次数来经由交叉点阵列执行cnn的计算。该一组操作包括将与卷积层的输入数据的向量的子部分对应的电压脉冲传输给交叉点阵列。该一组操作还包括输出表示在交叉点阵列中的一个或多个交叉点器件处执行乘法运算的电流,该电流基于由交叉点器件存储的权重值和来自输入数据的电压脉冲。该一组操作还包括由一组积分器基于来自交叉点器件的输出电流来累加电荷。该方法还包括由该一组积分器在迭代预定次数之后输出累加的电荷,该累加的电荷表示输入数据的向量与一个或多个卷积核的乘加(mutiply-add)结果。
4.在本发明的一个或多个实施例中,输出一组积分器中的累加的电荷包括池化(pooling)累加的电荷。在本发明的一个或多个实施例中,输入数据的每个向量的子部分与该一组积分器相关联。
5.在本发明的一个或多个实施例中,交叉点阵列包括多个交叉点阵列,其中输入数据的向量的第一子部分被发送给第一交叉点阵列,输入数据的向量的第二子部分被发送给第二交叉点阵列。在本发明的一个或多个实施例中,通过一组积分器累加电荷包括又第一交叉点阵列的一组积分器累加由第二交叉点阵列的一组积分器累加的电荷。
6.在本发明的一个或多个实施例中,交叉点器件被布置成实现cnn的给定层的卷积核的一个或多个列,并且其中输入数据的向量表示从输入数据一次一行地呈现的对cnn的给定层的神经元激励。由来自一组积分器的积分器累加的电荷表示根据cnn的给定层的输
出激励,该输出激励仅在所述卷积核的所有行被积分之后被转换和被传输。
7.在本发明的一个或多个实施例中,交叉点器件被布置成实现cnn的给定层的卷积核的一个或多个行,并且其中输入数据表示一次一列地呈现的对cnn的所述层的神经元激励。来自积分器组的积分器累加的电荷表示根据cnn的给定层的输出激励,该输出激励仅在所述卷积核的所有列被积分之后被转换和被传输。
8.根据本发明的一个或多个实施例,描述了一种用于执行经训练的卷积神经网络(cnn)的计算的电子电路。该电子电路包括交叉点阵列和输出电路,该输出电路又包括一个或多个积分器。该方法还包括提供交叉点阵列,以及提供输出电路。该方法还包括通过将卷积层的一个或多个卷积核存储在交叉点阵列的一个或多个交叉点器件中来配置与cnn中的卷积层对应的交叉点阵列。该方法还包括将一组操作迭代预定次数。使用上述方法来执行cnn的训练。
9.根据本发明的一个或多个实施例,描述了一种包括电阻式存储器元件阵列的电子电路。该阵列提供电流输出向量,该电流输出向量等于(i)对编码模拟输入值向量的阵列的电压输入向量与(ii)阵列内的模拟电阻权重矩阵之间的模拟向量矩阵积。该电子电路还包括累加导线和电路,其聚集来自电阻式存储器元件的专用子集的电流。该电子电路还包括积分电容器,该积分电容器中的每个积分电容器是电可切换的,以便在单个积分步骤期间聚集来自多个累加导线中的一个累加导线的电流。该电子电路还包括数据输出电路系统,以允许来自积分电容器的子集的、在多个积分步骤上累加的积分电荷适当地被转换并且作为模拟持续时间或者作为使用二进制数字的数字表示而被传输,其中,电阻式存储器元件被布置为实现卷积神经网络的给定层的突触权重内核的向量。
10.根据本发明的一个或多个实施例,一种方法使用电子电路来执行在多个积分步骤上的累加,该方法实现了跨所述权重内核的多个部分向量的乘法-累加运算。该累加包括由交叉点阵列的电阻式存储元件通过将一组操作迭代预定次数来执行计算。该一组操作包括将模拟输入值的每个向量分区成多个部分向量。该一组操作还包括在模拟存储器中累加与多个部分向量中的每个部分向量对应的部分输出激励。该一组操作还包括通过将部分输出激励路由到累加积分电荷的积分电容器来组合部分输出激励。此外,累加还包括传输积分电容器上的积分电荷,该积分电荷表示输出激励。
11.在本发明的一个或多个实施例中,在传输积分电荷之前,积分电容器上的积分电荷局部地被池化。在本发明的一个或多个实施例中,该电阻式存储器元件是非易失性存储器装置。在本发明的一个或多个实施例中,电阻式存储器元件的子集对应于阵列的一个或多个列。在本发明的一个或多个实施例中,电阻式存储器元件的子集对应于阵列的一个或多个行。
12.在本发明的一个或多个实施例中,交叉点器件被布置成实现卷积神经网络的给定层的卷积核的一行或多行,并且其中输入数据表示一次一列地呈现的对卷积神经网络的所述层的神经元激励。
13.在本发明的一个或多个实施例中,交叉点器件被布置成实现卷积神经网络的给定层的卷积核的一个或多个列,并且其中输入数据的向量表示从输入数据一次一行地呈现的对卷积神经网络的给定层的神经元激励。
14.应当理解,本技术解决方案在应用中不限于在以下描述中阐述的或在附图中示出
的组件的构造和布置的细节。除了所描述的实施例之外,技术解决方案能够以各种方式实践和执行。而且,应当理解,这里所使用的措辞和术语以及摘要是为了描述的目的,而不应当被认为是限制。因此,本领域技术人员将理解,本公开所基于的概念可以容易地用作设计用于执行当前描述的技术解决方案的多个目的其他结构、方法和系统的基础。
附图说明
15.参考以下附图和描述将更好地理解贯穿本文件描述的示例。图中的组件不一定是按比例的。此外,在附图中,相同的附图标记在不同的视图中表示对应的部件。
16.图1描绘了数学神经元的输入和输出连接的简化图解;
17.图2描绘了图1中所示的数学神经元的简化模型;
18.图3描绘了结合了图2所示的数学神经元模型的ann的简化模型;
19.图4示出了解释样本输入图的代表性cnn的简化框图;
20.图5示出了使用包括输入图和卷积核的训练数据来训练的cnn中的示例卷积层;
21.图6描绘了根据本发明的一个或多个实施例的使用交叉点阵列执行矩阵-矩阵乘法的系统;
22.图7描绘了根据本说明书的执行前向矩阵乘法、反向矩阵乘法和权重更新的二维(2d)交叉开关系统;
23.图8描绘了根据本发明的一个或多个实施例的交叉点阵列的展开视图;
24.图9描绘了交叉开关系统中的典型输出电路系统;
25.图10描绘了使用交叉点阵列执行前向推理操作的现有操作;
26.图11描绘了根据本发明的一个或多个实施例使用部分累加执行前向推理操作,其中部分累加是基于时间分区的;
27.图12描绘了根据本发明的一个或多个实施例的使用跨多个交叉点阵列的部分累加执行前向推理操作;以及
28.图13描述了根据本发明的一个或多个实施例的使用部分累加执行前向推理操作,其中部分累加是基于空间分区的。
具体实施方式
29.本文描述的技术解决方案促进以比现有技术更有效的方式使用卷积神经网络的深度学习技术的实现。深度学习技术广泛地用于基于机器的模式识别问题,诸如图像和语音识别。深度学习固有地利用大规模训练数据集(其通过使用大数据而增强)的可用性和计算能力(其预期根据摩尔定律增长)。
30.本发明的实施例在实现模拟人工智能系统(例如使用交叉点阵列的人工神经网络(ann))时,促进卷积神经网络(cnn)到模拟阵列的高效工作负载映射。现有技术描述了cnn推理工作负载的权重的“逐行”映射,使得通过cnn的每个层的激活被高效使用和流线化以限制存储要求。然而,现有技术存在技术挑战,因为利用这种“逐行”映射技术的模拟阵列区域利用率低,并且影响这样的技术的可扩展性。例如,映射大的cnn(诸如resnet-50)可能需要大量模拟阵列来实现cnn,这可能使得实现是低效的、笨拙的和交叉禁止的。
31.本发明的实施例通过提供灵活的阵列间路由方案来解决在ann,特别是cnn的实现
期间的这种技术挑战,该方案促进用于逐行映射技术的cnn层的紧凑映射。本发明的一个或多个实施例对照使用其中不流线化或重新使用激活的一般映射技术的现有逐行映射技术来基准测试所需的模拟阵列(瓦片)的数目。因此,本发明的实施例促进了阵列利用,其对于大范围的cnn是可比较的,同时保留了流线化激活用于逐行映射的优点。
32.预先理解,尽管在生物神经网络的上下文中描述了一个或多个实施例,其中特别强调对大脑结构和功能进行建模,但是本文所陈述的教导的实现不限于对特定环境进行建模。相反,本发明的实施例能够对任何类型的环境建模,包括例如天气模式、从互联网收集的任意数据等,只要对环境的各种输入可被转变成向量。
33.ann通常被实现为互连处理器元件的所谓“神经形态”系统,该互连处理器元件充当仿真的“神经元”并且以电子信号的形式在彼此之间交换“消息”。类似于在生物神经元之间承载消息的突触神经递质连接的所谓“可塑性”,ann中在仿真神经元之间承载电子消息的连接具有对应于给定连接的强度或弱度的数值权重。权重可以基于经验来调整和调谐,使得ann适应于输入并且能够学习。例如,用于手写识别的ann由一组输入神经元定义,该组输入神经元可以由输入图像的像素激活。在由网络设计者确定的函数加权和变换之后,这些输入神经元的激活然后被传递给其它下游神经元,其通常被称为“隐藏”神经元。重复该过程直到输出神经元被激活为止。激活的输出神经元确定哪个字符被读取。
34.交叉开关阵列,也称为交叉点阵列、交叉线阵列或电阻式处理单元(rpu)阵列,是用于形成各种电子电路和器件的高密度、低成本电路架构,包括ann架构、神经形态微芯片和超高密度非易失性存储器。基本的交叉点阵列配置包括一组导电行线和形成为与该一组导电行线交叉的一组导电列线。两组导线之间的交叉处由所谓的交叉点器件分开,交叉点器件可以由薄膜材料形成。
35.交叉点器件实际上用作神经元之间的ann加权连接。纳米级二端子器件,例如具有“理想”导电状态切换特性的忆阻器,通常被用作交叉点器件,以便以高能量效率模仿突触可塑性。理想忆阻器材料的导电状态(例如,电阻)可以通过控制在行线和列线的个体线之间施加的电压来改变。可以通过改变忆阻器材料在交叉处的导电状态以实现高导电状态或低导电状态来存储数字数据。忆阻器材料还可以被编程为通过选择性地设置材料的导电状态来保持两个或更多个不同的导电状态。忆阻器材料的导电状态可以通过跨材料施加电压并测量通过目标交叉点器件的电流来读取。
36.为了限制功耗,ann芯片架构的交叉点器件通常被设计为利用离线学习技术,其中一旦已经解析了初始训练阶段,目标函数的近似就不改变。离线学习允许交叉开关型ann架构的交叉点器件被简化,使得它们消耗非常少的功率。
37.提供能够以低功耗、高计算吞吐量和低时延实现先前训练的ann网络的钱箱推理的简单交叉点器件将改进总体ann性能并且允许更广泛的ann应用。
38.尽管本发明针对电子系统,但是为了便于参考和解释,使用诸如神经元、可塑性和突触之类的神经术语来描述所描述的电子系统的各个方面。应当理解,对于本文对电子系统的任何讨论或说明,神经术语或神经简写符号的使用都是为了便于引用,并且旨在涵盖所描述的神经功能或神经组件的神经形态、(多个)ann等效物。
39.ann,也称为神经形态系统或突触系统,是可以估计或近似其它功能或系统的计算系统,包括例如生物神经系统、人脑和诸如图像识别、语音识别等的类似脑的功能。ann结合
了来自各种学科的知识,包括神经生理学、认知科学/心理学、物理学(统计力学)、控制理论、计算机科学、人工智能、统计学/数学、模式识别、计算机视觉、并行处理和硬件(例如数字/模拟/vlsi/光学)。
40.代替于利用操纵零和一的传统数字模型,ann创建基本上是正在被估计或近似的核心系统功能的功能等效物的处理元件之间的连接。例如,作为电子神经形态机器的中心组件的计算机芯片试图提供与哺乳动物脑类似的形式、功能和架构。尽管计算机芯片使用与常规计算机芯片相同的基本晶体管组件,但是其晶体管被配置成模仿神经元及其突触连接的行为。计算机芯片使用仅超过一百万个仿真“神经元”的网络来处理信息,这些仿真“神经元”使用类似于生物神经元之间的突触通信的电尖峰来彼此通信。这种计算机芯片的架构包括读取存储器(即,仿真的“突触”)并执行简单操作的处理器(即,模拟的“神经元”)的配置。这些处理器之间的通信(通路)通常位于不同的核心中,并且由片上网络路由器来执行。
41.作为背景,现在将参考图1、图2和图3提供典型ann如何操作的一般描述。如本文先前所述,典型的ann是由人脑启发的数学模型,其包括称为神经元的约十亿个相互连接的细胞。图1描绘了具有将其连接到上游输入112、114、下游输出116和下游“其他”神经元118的通路104、106、108、110的数学神经元102的简化图,其被配置和布置为如图所示。每个数学神经元102通过通路104、106、108、110发送和接收电脉冲。这些电脉冲的性质以及它们在生物神经元(未示出)中如何被处理主要负责总体脑功能。模仿这种功能是从网络中组织的数学神经元102构造的数学ann的意图。正如生物神经元之间的通路连接可以强或弱一样,数学神经元之间的通路也可以强或弱。当给定神经元接收输入脉冲时,神经元根据神经元的功能处理输入,并将功能的结果发送到下游输出和/或下游“其他”神经元。
42.图2中,数学神经元102被建模为具有数学函数f(x)的节点202,该函数f(x)由图2所示的等式描述,节点202从输入212、214获得电信号,将每个输入212、214乘以其各自的连接通路204、206的强度,获得输入的和,将该和传递通过函数f(x),并且生成结果216,该结果可以是最终输出或到另一节点的输入,或者两者。在本说明书中,星号(*)用于表示乘法,其可以是矩阵乘法。例如,矩阵乘法可以用于执行输入数据与一个或多个卷积核之间的卷积运算以生成输出图。微弱输入信号乘以很小的连接强度数,因此微弱输入信号对功能的影响很低。类似地,强输入信号乘以较高的连接强度数,因此强输入信号对功能的影响较大。函数f(x)是设计选择,并且各种函数可以被使用。f(x)的典型设计选择是双曲正切函数,其取先前和的函数并输出负一和正一之间的数。f(x)的备选设计选择是线性整流函数(relu),即输出匹配正输入的输入而在其它情况下为零的函数。
43.图3描绘了被组织为加权有向图的简化ann模型300,其中人工神经元是节点(例如,302、308、316),并且其中加权有向边(例如m1到m20)连接节点。ann模型300被组织为使得节点302、304、306是输入层节点,节点308、310、312、314是隐藏层节点,而节点316、318是输出层节点。每个节点通过连接通路连接到相邻层中的每个节点,连接通路在图3中被描绘为具有连接强度m1到m20的有向箭头。虽然只示出了一个输入层、一个隐藏层和一个输出层,但是实际上,可以提供多个输入层、隐藏层和输出层。
44.在这种模仿人脑功能的尝试中,ann 300的每个输入层节点302、304、306直接从源(未示出)接收输入x1、x2、x3,而没有连接强度调整和没有节点求和。因此,y1=f(x1)、y2=
f(x2)和y3=f(x3),如图3底部列出的等式所示。每个隐藏层节点308、310、312、314根据与相关连接通路相关联的连接强度从所有输入层节点302、304、306接收其输入。因此,在隐藏层节点308中,y4=f(m1*y1+m5*y2+m9*y3),其中*表示乘法。在一个或多个实例中,乘法可以是用于执行卷积运算的矩阵乘法。针对隐藏层节点310、312、314和输出层节点316、318执行类似的连接强度乘法和节点求和,如由定义图3的底部处描绘的定义函数y5到y9的等式所示。
45.ann模型300一次处理一个数据记录,并且它通过将记录的初始任意分类与记录的已知实际分类进行比较来“学习”。使用被称为“反向传播”(即,“错误的反向传播”)的训练方法,来自第一记录的初始分类的错误被反馈到网络中,并且被用于第二次修改网络的加权连接,并且该反馈过程继续若干迭代。在ann的训练阶段,每个记录的正确分类是已知的,并且因此输出节点可以被分配“正确”值,例如,用于与正确分类对应的节点的节点值“1”(或0.9),以及用于其它节点的节点值“0”(或0.1)。因此,可以将网络的输出节点的计算值与这些“正确”值进行比较,并计算每个节点的误差项(即,“差量”规则)。然后,这些误差项被用于调整隐藏层中的权重,以便在下一次迭代中,输出值将更接近“正确”值。
46.存在许多类型的神经网络,但是最广泛的两个类别是前馈和反馈/递归网络。ann模型300是具有输入、输出和隐藏层的非递归前馈网络,信号仅可在一个方向上行进。输入数据被传递到执行计算的处理元件层上。每个处理元件基于其输入的加权和进行其计算。新的计算值然后变成馈送下一层的新输入值。这个过程继续,直到它已经通过所有层并且确定输出。有时使用阈值传递函数来量化输出层中神经元的输出。
47.反馈/递归网络包括反馈路径,这意味着信号可以使用环路在两个方向上传播。允许节点之间的所有可能连接。由于在这种类型的网络中存在环路,因此在某些操作下,它可以变成连续变化直到它达到平衡状态的非线性动态系统。反馈网络经常用于关联存储器和优化问题,其中网络寻找互连因素的最佳布置。
48.前馈和递归ann架构中的机器学习的速度和效率取决于ann交叉点阵列的交叉点器件有多么有效地执行典型机器学习算法的核心操作。尽管机器学习的精确定义难以公式化,但ann上下文中的学习过程可被视为更新交叉点器件连接权重以使得网络可有效地执行特定任务的问题。交叉点器件通常从可用的训练模式中学习必要的连接权重。通过迭代地更新网络中的权重,性能随时间而提高。ann不是遵循由人类专家指定的一组规则,而是从代表性示例的给定集合中“学习”底层规则(如输入-输出关系)。因此,学习算法通常可以被定义为学习规则被用于更新和/或调整相关权重的过程。
49.这三种主要的学习算法范式是监督的、无监督的和混合的。在监督学习或具有“教师”的学习中,为网络提供每个输入模式的正确答案(输出)。确定权重以允许网络产生尽可能接近已知正确答案的答案。强化学习是监督学习的变型,其中网络仅提供有关于网络输出的正确性的评判,而不是正确的回答本身。相反,无监督学习或没有教师的学习不需要与训练数据集中的每个输入模式相关联的正确答案。它探索数据中的底层结构或数据中的模式之间的相关性,并根据这些相关性将模式组织成类别。混合学习组合了监督学习和非监督学习。部分权重通常通过监督学习来确定,而其它部分权重通过非监督学习来获得。ann和学习规则的附加细节在anil k.jain、jianchang mao和k.m.mohiuddin的artificial neural networks:a tutorial,ieee,1996年3月中描述,其全部描述通过引用并入本文。
50.除了训练ann的应用之外,已经训练的网络的转发推理包括应用,范围从在ann上构建的基于云的服务的实现到智能电话、物联网(iot)和需要极低功率操作的其他电池受限的应用。通常,虽然训练是要求高吞吐量的应用(以便从许多训练示例中学习),但是前向推理是要求快速时延的应用(使得任何给定的新测试示例可以尽可能快地被分类、被识别或以其他方式被处理)。
51.在cnn中,内核对重叠区域进行卷积,诸如在视野中的那些重叠区域,并且因此强调在特征检测中空间位置的重要性。计算cnn的卷积层通常涵盖神经网络训练和推理中的超过90%的计算时间。将cnn映射到模拟阵列中并确保在执行卷积层的数学运算时所使用的电力的高效使用,同时具有最少的无关数据移动或计算是技术挑战。技术挑战包括映射cnn以用于推理以及维持这样的映射的可扩展性,使得甚至可以实现诸如resnet-50之类的大的cnn。虽然使用逐行映射的现有解决方案假设阵列间路由电路系统上的某些限制,但是本发明的一个或多个实施例促进数据的灵活阵列间路由,其使得能够针对逐行技术将cnn层紧凑映射到交叉点阵列。
52.由本发明的实施例实现的技术解决方案通过提供对于大范围的cnn网络非常可比较的阵列利用,同时保留了用于逐行映射的流线型激活的优点,来解决这样的技术问题。
53.图4示出了cnn的简化框图。在所描绘的示例中,cnn被用于解释样本输入图400,并且在该特定示例中使用手写字母“w”作为输入图。然而,应当理解,其他类型的输入图是可能的,并且本文描述的技术解决方案也适用于执行其他操作的cnn,诸如其他类型的特征检测。在所示的示例中,输入图100被用于创建输入层410或“层1”的一组值,例如,层1可以通过将样本输入图400的像素直接映射到层1中的特定神经元来生成,使得该神经元取决于该像素是否表现出特定属性而示出1或0。下面参考卷积神经网络来讨论向神经元分配值的另一示例方法。取决于神经网络的变化以及它要解决的问题,网络的每层可以具有不同数目的神经元,并且这些神经元可以与输入数据的特定质量相关或不相关。
54.参考图4,层1 410中的神经元连接到下一层,层2 420中的神经元,如前所述(见图3)。图4中的神经元如参照图1所描述的。因此,层2 420中的神经元从层1 410中的神经元中的每个神经元接收输入值。然后,对输入值求和,并将该和与偏值进行比较。如果该值超过针对特定神经元的偏置,则该神经元保持一个值,该值可以用作对下一层神经元中的神经元的输入。该计算继续通过包括至少一个fc层450的cnn的各个层430-450,直到其抵达最终层460,在图4中被称为“输出”。在一些cnn网络中,来自较早层的“残差”可以与较迟层的结果组合,跳过其间的层。在用于字符识别的cnn的示例中,层中的每个值被分配给特定字符。当设计用于分类任务时,网络被配置成以仅具有一个神经元中的一个大的正值的输出层结束,这随后表明网络已经计算出哪个字符是最可能的手写输入字符。在其他场景中,网络可能已经被设计成使得输出神经元值可以用于估计概率(似然性)、置信度或其他感兴趣的度量。
55.cnn中的每一层的数据值通常使用矩阵(或在一些示例中是张量)来表示,并且计算作为矩阵计算来执行。矩阵的索引(和/或大小)在层与层之间以及网络与网络之间变化,如图4所示,不同的实现不同地定向矩阵或不同地将矩阵映射到计算机存储器。参考图4,在所示的示例cnn中,每个级别是神经元值的张量,如神经网络的每个层的矩阵维度所示。在cnn的输入处,示例可以是多个输入“平面”,每个输入“平面”是二维图像。例如,可能存在源
于全色图像的红色平面、绿色平面和蓝色平面。更深入cnn,层可以采取许多“平面”形式的中间数据,并且为下一层产生大量输出平面。在一个层上的输入张量中的值乘以连接强度,其在被称为滤波器的变换张量中。该矩阵乘法根据连接强度缩放前一层中的每个值,然后对这些贡献的合计总和进行求和。这种基本运算被称为乘加运算。然后,可以将偏置矩阵加到所得到的乘积矩阵,以考虑到下一级中的每个神经元的阈值。此外,将激活函数应用于每个结果值,并且将结果值置于要应用于下一层的输出张量中。在一个示例中,激活函数可以是线性整流函数,sigmoid或tanh()。因此,如图4所示,每个层之间的连接,以及因此整个网络之间的连接,可以表示为一系列矩阵。训练cnn包括找到用于这些矩阵的适当值。
56.尽管完全连接的神经网络在被适当训练时能够识别输入模式,诸如笔记或家庭宠物的照片等,但是它们不表现出移位不变性。为了使网络识别猫的须,必须提供猫图像,其中须位于图像内的多个不同2-d位置。每个不同的图像位置将导致与这样的全连接网络中的不同权重交互的神经元值。相反,在cnn中,连接强度是卷积核。卷积运算引入了移位不变性。因此,由于多个图像被呈现有具有触须的猫,所以只要触须的比例、颜色和旋转从一个图像到另一个图像不变,图像内的2-d位置就不再重要。因此,在训练期间,类似特征的所有示例一起工作以帮助学习该特征,而与2-d图像内的特征位置无关。在训练之后,单个或小得多的滤波器组足以识别这样的图像特征,允许许多滤波器的组(也就是cnn层)然后识别对于区别图像有用的许多不同特征(狗与猫,或甚至代表不同猫品种的细微差别)。
57.图5示出使用包括输入图510和卷积核520的训练数据训练的cnn中的示例卷积层500。为了简单起见,图5没有示出偏置矩阵525。输入图510(也称为输入平面)可以包括多个输入模式,例如,d个输入图。每个输入图是大小n
×
m的矩阵。因此,在这种情况下,输入神经元的总数是n
×m×
d。如图所示,输入图与大小为k
×
k的f个卷积核520进行卷积,以产生对应的输出图530。每个输出图可以具有维度n'
×
m'。在输入图是大小为n的方阵的情况下,输出图的大小为n-k+1
×
n-k+1。每个卷积是涉及d个输入图的3d卷积。cnn可以包括多个这样的层,其中来自前一层的输出图530被用作用于后续层的输入图510。反向传播算法可以用于学习滤波器的k
×k×d×
f个权重值。
58.例如,输入图510与每个滤波器组卷积以生成对应的输出图。例如,在cnn被训练以标识手写的情况下,输入图510与包括表示竖直线的卷积核的滤波器组组合。所得到的输出图标识出存在于输入图510中的竖值线。此外,另一滤波器组可以包括表示对角线的卷积核,诸如向上和向右。由输入图510与第二滤波器组的卷积产生的输出图标识包含对角线的训练数据的样本。两个输出图示出字符的不同信息,同时保持像素相邻性。这可以引起更高效的字符识别。
59.图6描述了系统600,其中根据本发明的一个或多个实施例,使用控制器610来控制交叉点阵列700,以执行(多个)矩阵-矩阵乘法以及其它运算。例如,控制器610发送要与交叉点阵列700相乘的输入数据510。在一个或多个示例中,控制器610存储权重值,例如来自交叉点阵列700中的卷积核520,并且发送输入向量。在一个或多个示例中,控制器610和交叉点阵列700以有线或无线方式或其组合耦合。控制器610还向交叉点阵列700发送指令/命令,以启动cnn中的一个或多个层的操作。控制器610还可在接收到计算已被执行的通知之后从交叉点阵列700读取输出数据530。控制器610可以是处理单元或计算系统,诸如服务器、台式计算机、平板计算机、电话等。控制器610可以包括存储器设备,该存储器设备具有
存储在其中的计算机可执行指令,该指令当由控制器执行时引起矩阵-矩阵计算。
60.现在转到本说明书的概述,一个或多个实施例针对交叉点阵列,该交叉点阵列在交叉开关导线的每个交叉处具有交叉点器件,该交叉点阵列用于实现cnn。交叉点器件的示例是两端可编程电阻式交叉点部件,在此称为电阻式处理单元(rpu),其提供本地数据存储功能和本地数据处理功能。在执行数据处理时,每个交叉点器件所表示的加权贡献被贡献给在数据的存储位置处执行的大规模并行乘法-累加运算。这消除了将相关数据移入和移出处理器和单独的存储元件的需要。因此,实现具有所描述的交叉点器件的机器学习cnn架构使得能够实现促进训练cnn的在线机器学习能力,以及后续使用经训练的cnn模型来执行推理。所描述的交叉点器件和所得的cnn架构改进了总体cnn性能,并且使得能够实现更宽范围的实际cnn应用。
61.所描述的交叉点器件可被实现为两端电阻式交叉点器件。例如,所描述的交叉点器件可以利用电阻随机存取存储器(rram)、相变存储器(pcm)、可编程金属化单元(pmc)存储器、非线性忆阻器系统、或者提供宽范围的随时间充分稳定的模拟可调谐非易失性电阻式存储器状态的任何其他器件来实现。
62.图7描述了根据本说明书执行前向推理的二维(2d)交叉开关系统700。交叉开关系统700可以用于实现简单的矩阵乘法、反向矩阵乘法,以及甚至根据反向传播算法的原位权重更新。交叉开关系统700包括交叉点阵列705、输入电路系统710和输出电路系统720以及其它组件。输入电路系统710和输出电路系统720可以一起被称为外围电路系统,交叉开关系统700在一个或多个示例中可以是计算机芯片。
63.图8示出了根据一个或多个实施例的交叉点阵列705的展开图。交叉点阵列705由一组导电行线802、804、806和与该组导电行线802、804、806交叉的一组导电列线808、810、812、814形成。该组行线和该组列线之间的交叉处被交叉点器件分开,交叉点器件在图8中被示出为电阻式元件,每个电阻式元件具有其自己的可调节/可更新的电阻权重,分别表示为σ
11
、σ
21
、σ
31
、σ
41
、σ
12
、σ
22
、σ
32
、σ
42
、σ
13
、σ
23
、σ
33
和σ
43
。为了便于说明,在图8中仅用附图标记来标记一个交叉点器件820,在前向矩阵乘法中,可以通过在交叉点器件上施加电压并测量通过交叉点器件的电流来读取交叉点器件的导电状态(即,所存储的权重)。
64.输入电压v1、v2、v3分别被施加到行线802、804、806。每个列线808、810、812、814使用积分器,诸如电容器,对由每个交叉点器件沿着特定列线产生的电流i1、i2、i3、i4求和。例如,如图8所示,由列线814产生的电流i4由方程i4=v1σ
41
+v2σ
42
+v3σ
43
给出。因此,阵列705通过将存储在交叉点器件中的值乘以行线输入来计算前向矩阵乘法,行线输入由电压v1、v2、v3定义。
65.参考图7,在一个或多个示例中,输入电路系统710至少包括支持电路系统712、共享电路系统714和行电路系统716。行电路系统包括与每个行线802、804和806相关联的硬件组件。输入电路系统710支持向交叉点阵列705提供输入电压。
66.图9描绘了典型的输出电路系统720。输出电路系统包括对应于列线808、8120、812和814的积分器908、910、912和914。在一个或多个例子中,积分器908、910、912和914是电容器。沿着每个列线的输出电流在积分器中被累加,并传递给cnn的下一层。如前所述,积分器的这种布置使得fc层的计算非常高效。然而,对于卷积运算,使用积分器的这种布置导致在数据传输、存储、组织和随后的数据传输方面的显著的额外开销。这种操作需要额外的资
源,例如时间、功率和额外的电路面积,从而使得整个系统效率低。
67.图10描述了使用交叉点阵列执行前向推理操作的现有操作。如图10所示,所有输入平面510的一个图像行(512、514和516)同时作为对交叉开关系统700的交叉点阵列705的阵列行(802、804和806)的一列输入而呈现。在每个交叉点处的交叉点器件820包含来自滤波器525的权重元素,每个权重元素导致阵列行激励xi和存储的权重w
ij
之间按照欧姆定律相乘(电压乘以电导等于电流)。所有这些读取电流贡献的积分沿着每个阵列列被求,并且被存储在阵列列(808、810、812和814)的对应积分器(908、910、912和914)中。计算可以被表达列#1(808)上的电流i1被存储在电容器c1上,i2被存储在电容器c2上,i3被存储在电容器c2上,以此类推。在使用这样的交叉点阵列705的现有技术解决方案中,电容器(908、910、912和914)上的积分电荷被视为乘加的输出,并且被转换为数字或脉冲持续时间以供运送给下一个阵列705。
68.以这种方式,在每个时间步(即,由阵列705执行的每个计算),跨所有输入平面510的值被积分,从而产生针对所有输出平面530的输出。
69.此外,来自卷积层i的每个输出必须与来自其他卷积层的输出组合作为池化的一部分。来自其的输出将被池化的其它卷积层取决于滤波器内核520中的元素的数目。附加地或备选地,来自层i的每个输出必须被定位在针对卷积层i+1的输入平面510中的不同点处。出于池的目的对输出值的这种组织还可能需要额外的计算资源,诸如读写访问、功率等。
70.因此,在现有系统中,在时间步1,系统700将结果积分到电容器908、910、912和914中,但是不立即将结果发送给下一层。这是因为系统700必须将读取电流从若干不同列导引到积分电容器908、910、912和914上。系统700在随后的时间步执行对来自其它列的结果的这种操纵。以相同的方式,系统700采用k个时间步来计算每第k个输出行。因此,使用逐行映射的现有技术导致每个输出行花费k个时间步来生成。
71.图10描述了根据现有技术在前向推理期间由阵列705执行的操作。在图10中,描述了时间步1、2和3。在每个时间步中,输入被映射到交叉点阵列705中的行。在每个时间步,积分器(908、910、912和914)中的每个积分器从k*p个乘加项接收贡献,其中p是输入平面510的数目。在k个这样的时间步之后,积分器的总电荷包含全部的k*k*p项,并且准备好被输出到下一个卷积层。除了在前k个或最后k个时间步期间之外,在每个积分步之后,来自输出电路720的每第k个积分器达到此状态,并且因此准备好生成卷积层输出的一个图像行(512-a、514-a及516-a)的所有输出像素。所有其它第j个积分器在它们各自的积分相位中具有不同的相位,这取决于j的值。
72.例如,如图10所示,在前向传播的时间步1,每个输入平面512-a、514-a、516-a的第一行被输入到卷积层。如图所示,交叉点阵列705的交叉点器件820加载有滤波器520。具体地,滤波器内核522-a和522-b被加载到交叉点器件820中以执行与第一输入平面516-a的第一行的卷积。类似地,来自第二组滤波器内核520的滤波器内核524-a和524-b与第二输入平面514-a的第一行卷积,等等。输出控制器1110将相应卷积的结果从输出电路系统720转发给一个或多个积分器(908、910、912、914)。
73.输出控制器1110可以是输出电路系统720的一部分或者是与输出电路系统720耦合的外部控制器。输出控制器1110将乘加运算的输出从阵列705中的每个列引导到输出电路系统720中的特定积分器。在一个或多个示例中,输出控制器1110接收模式信号,该模式
信号提供在每个时间步对针对每个列的积分器的选择。备选地,向输出控制器1110提供模式信号,该模式信号指示对针对每个列的积分器的选择,直到所有卷积层被执行为止。在一个或多个示例中,模式信号可以是指示每个列的选定积分器的位模式。
74.在图10的示例中,在时间步1,来自列808和列814的输出分别被存储在积分器908和912中。在时间步#2中,来自输入平面510的第二行512-b、514-b和516-b被用作对交叉点阵列705的输入。交叉点器件820仍然如在时间步#1(图10)中一样加载有内核滤波器520。在时间步2中,输出控制器1110选择相同的积分器908和912用于列810和816的输出(与时间步1不同的列)。因此,在这种情况下,积分器908和912(以及其它积分器)在不同的时间步中接收来自不同列的输出。
75.在时间步3中,以与前两个时间步类似的方式,来自输入平面510的第三行512-c、514-c和516-c被用作交叉点阵列705的输入。在时间步3中,输出控制器1110选择相同的积分器908和912用于列812和列818(与时间步1、2不同的列)的输出。因此,在这种情况下,积分器908和912(以及其它积分器)在不同的时间步中接收来自不同列的输出。以这种方式,通常,在k个时间步之后,输出平面530中的整个行被计算。
76.应当注意,虽然上面仅描述了来自输出平面530中的第一输出行的前两个条目(a和b)的计算,但是以类似的方式,输出平面530的其它部分由交叉点阵列705的其它部分并行计算。此外,如图10所示,交叉点阵列705可以使用其它积分器(910、914、916和918)在每个时间步对其它输出行(c和d)进行累加。
77.因此,作为输出控制器1110引导交叉点阵列705的输出的结果,所有输入是在所有输入平面上完整且连续的图像行的形式。此外,在任何输出可用的前k个时间步之后,即从第k+1个时间步开始,在每个时间步产生所有输出平面上的完整且连续的图像行。因此,由这样的操作产生的输出图530可以被流水线化到随后的卷积层,而没有神经元激励的任何中间存储。因为可以在数据到达时对数据递增地执行诸如求和、平均和最大值之类的池化操作,所以任何池化操作仅需要足以用于输出图像行的临时存储。当每组神经元激励到达时,存储并更新这些中间结果,直到r乘r的池化操作完成,此时,中间结果的缓冲器实际上是池化层的输出。
78.如前所述,现有技术的技术挑战在于,实现cnn所需的交叉点阵列的数目可能在诸如图像之类的输入数据集的数目上增加,或者随着所实现的网络的类型而增加。本发明的实施例通过减少贯穿cnn深度的权重副本的数目来促进逐行映射。因此,本发明的实施例促进了负载均衡以解决cnn权重重用因子的改变。此外,本发明的实施例使用从输入电路710到并通过交叉点阵列705以及到输出电路720的灵活数据路由,以更紧凑的权重映射促进了逐行映射。
79.在本发明的一个或多个实施例中,本文描述的技术解决方案通过促进与部分行输入的逐行卷积来解决现有技术解决方案的此类技术挑战,其中输入数据在时间上被分区。在本发明的其它一些实施例中,利用部分行输入来促进逐行卷积,其中输入数据在空间中被分区(交叉点阵列)。
80.图11示出了根据本发明的一个或多个实施例的与部分行输入的逐行卷积映射,其中输入数据在时间上被分区。这里,来自不同输入行分段的部分和被存储在单独的电容器组上。在所描绘的示例中,来自第一行的输入数据的第一子集1210被映射到第一组电容器
(或积分器)1230;并且来自第一行的输入数据的第二子集1220被映射到第二组电容器1240。对于这种映射,使用以下公式来确定分区:l=d*(输入图像宽度/n+k-步幅)。这里,n是用于帮助将交叉点阵列705重用于前向推理的计算的电容器的副本数目。n可以基于图像宽度预先确定。例如,n可以随着图像大小的减小而增大,以减少权重副本的数目,从而保持重用因子相同。在卷积神经网络(cnn)中,在输入图像上卷积权重内核,即,相同的权重被与输入图像的不同部分重用多次以生成输出。权重被重用的次数被称为重用因子。
81.此外,步幅是定义在第一行的子集内存在多少重叠的预定参数。重叠=(k-步幅),其中k是内核维度。在所示的示例中,两组电容器1230和1240可以重用被存储在交叉点阵列705中的权重。为了重用工作,输入数据被映射为具有要由交叉点器件820计算的逐行卷积。对于这种映射,所计算的l是输入到交叉点阵列705的输入数据元素的数目,其中每个顺序的数据元素来自顺序的输入平面。例如,在所描绘的具有d=3个输入平面和l=15个输入平面、k=3、步幅=1和n=2的示例场景中,l1=d1(1,1)、l2=d2(1,1)、l3=d3(1,1)。这里,符号d1(1,1)指的是来自d1中的第一行和第一列的元素。以相同的方式,l4=d1(1,2),l5=d2(1,2),和l6=d3(1,2)。交叉点阵列705被配置有来自内核520的权重的n=2个副本,这些副本彼此移位d*步幅个行(或列)。
82.一旦数据元素如本文所述被输入,交叉点器件820执行存储器内计算以确定所存储的权重与数据元素的乘积的部分和。以模拟方式在存储器内执行计算。将所得到的部分和存储在组1230、1240中的电容器中。
83.如果权重的副本的数目减少,则电容器组2130、2140中的每个组中的电容器的数目增加。在本发明的一个或多个实施例中,为了提高输出电路720中的电容器区域的效率,部分和被发送给目的地电容器(下一层交叉点阵列705的输入侧)。即使重叠导致冗余计算,通过重用实现的交叉点阵列705的效率的提高也引起实现cnn所需的交叉点阵列705的数目减少。
84.图12描绘了根据本发明的一个或多个实施例的具有完全或部分行输入的逐行卷积映射,其中输入数据在时间上被分区。所描述的映射方案通过使用跨多个交叉点阵列705的多个重用的副本权重,促进了甚至更紧凑的映射。在本发明的一个或多个实施例中,输出图像通道的数目为f,并且输入图像通道的数目为d。在此,每个权重组具有跨(输入图像宽度*d)维的具有(d*步幅)的移位量的步幅。在每组这样的(输出图像宽度)权重副本之后,下一组被配置为没有任何移位(d*步幅)。在每个组内使用该移位以分离该组中的权重的副本。一组这样的权重副本可以跨越分离的交叉点阵列705a和705b。例如,在图12所示的例子中,组1280具有存储在第一交叉点阵列705a中的两个权重副本1282和1284,和存储在第二交叉点阵列705b中的第三权重副本1286。
85.应当理解,在本发明的一个或多个实施例中,附图和本文所述的示例中的维度可以变化。此外,交叉点阵列705的数目在本发明的一个或多个实施例中也可与本文所述的示例中不同。
86.图13示出了根据本发明的一个或多个实施例的具有部分行输入的另一逐行卷积映射,其中输入数据在空间上被分区。这里,单个电容器组1320用于基于存储在交叉点阵列705中的内核权重来计算结果部分和。输入数据元素被划分,使得单个行的子集被发送给实现给定cnn层的单独的交叉点阵列705。在电容器1320上累加的电荷表示部分和,该电荷被
发送给实现cnn的下一层的系统700的输入电路710。
87.输入电路710组合部分和,并且为用于下一层的存储在分离的交叉点阵列705中的权重组织这样的输入数据。例如,输入电路710将对应于输入数据元素1310的输出输送给与对应于输入数据元素1320的输出相同的下一层中的内核权重。
88.可以看出,当(图像大小)*(#输入通道)与内核权重的大小(内核大小*#输入通道)相比较大时,如上所述由输入电路710提供的灵活路由促进与现有解决方案相比更紧凑地映射不同输出通道的权重。在输入到下一层期间用于存储和重新排序来自一个层的输出的成本低于现有的逐行映射技术。因此,本发明的一个或多个实施例促进配置灵活的信号路由方案,以改进现有逐行映射技术的可缩放性。在本发明的一个或多个实施例中,cnn可以根据每个网络的特定操作细节来微调。例如,cnn内核大小或cnn内核的数目可被调整以进一步优化到模拟交叉点阵列上的映射。
89.应当注意,这里的图中所示的矩阵的维度仅是示例,并且在一个或多个示例中,可以使用不同的维度。此外,应当注意,在前向推理操作期间,cnn已经被训练,并且,不管用于训练cnn的技术如何本发明的实施例都是适用的。
90.以这种方式,本发明的实施例促进用于经训练的cnn的前向推理的逐行映射,其中,可以以紧凑的方式执行映射以重用交叉点阵列和支持电路系统,从而促进任何规模的cnn的实现。
91.在本发明的一个或多个实施例中,所描述的技术方案由电子电路实现,该电子电路包括电阻式存储元件的交叉点阵列。该阵列提供了等于以下的电流输出向量:(i)对模拟输入值向量进行编码的阵列的电压输入向量与(ii)阵列内的模拟电阻权重矩阵之间的模拟向量矩阵积。电子电路700还包括支持电路系统712、722、以及输入电路系统710和输出电路系统720,它们一起包括聚集来自电阻式存储器元件的专用子集的电流的累加导线和电路。支持电路系统722包括积分电容器,这些积分电容器中的每个积分电容器都是电可切换的,以便在单个积分步骤期间聚集来自累加导线之一的电流。输出电路系统720将来自积分电容器的子集的积分电荷适当地转换并作为模拟持续时间或作为使用二进制数字的数字表示来传输,该积分电荷在预定数目的积分步骤上被累加。电阻式存储器元件被布置成实现卷积神经网络的给定层的突触权重内核的列(行)。
92.在预定数目的积分步骤上的累加实现跨所述权重内核的多个部分行(列)的乘加运算,因为对卷积神经网络的所述层的输入神经元激励在积分的每次迭代被呈现一行(列)。在本发明的一个或多个实施例中,总是一次一个完整行(列)地呈现第一层的输入神经元激励,而输入神经元激励的后续层可以被分区成多个部分行(列)并且部分地被存储在局部模拟存储器(例如,电容器)中,以便在多个积分周期上在交叉点阵列中被处理。
93.仅在所述权重内核的所有行(列)被完全积分之后,表示完全和/或部分输出激励的积分电荷才被适当地转换和传输。来自多个交叉开关阵列的部分和被灵活地路由以在积分电容器之一中组合,后续被转换为完全输出激励,并且然后在所有部分和被完全积分之后被传输。积分电容器上的积分电荷表示输出激励,其被适当地转换。此外,仅在所有相关的权重内核被完全积分之后,适当被池化的结果(例如,所述输出激励的最大值、总和或平均值)被局部计算,然后被传输。
94.本技术方案可以是任何可能的技术细节集成水平的系统、方法和/或计算机程序
产品。计算机程序产品可以包括其上具有计算机可读程序指令的一个或多个计算机可读存储介质,该计算机可读程序指令用于使处理器执行本技术方案的各方面。
95.计算机可读存储介质可以是能够保持和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式光盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、诸如上面记录有指令的打孔卡或凹槽中的凸起结构的机械编码装置,以及上述的任何适当组合。如本文所使用的计算机可读存储介质不应被解释为暂态信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤线缆的光脉冲)、或者通过导线传输的电信号。
96.本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络,例如互联网、局域网、广域网和/或无线网络,下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
97.用于执行本技术方案的操作的计算机可读程序指令可以是汇编指令、指令集架构(isa)指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据,或者以包括面向对象的编程语言(例如smalltalk、c++等)和过程编程语言(例如“c”编程语言或类似的编程语言)的一种或多种编程语言的任何组合编写的源代码或目标代码。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(lan)或广域网(wan),或者可以连接到外部计算机(例如,使用互联网服务提供方通过互联网)。在一些实施例中,包括例如可编程逻辑电路系统、现场可编程门阵列(fpga)或可编程逻辑阵列(pla)的电子电路系统可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路系统个性化,以便执行本技术方案的方面。
98.本技术解决方案的各方面在此参考根据本技术方案的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图来描述。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
99.这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以被存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的方面的指令。
100.计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。
101.附图中的流程图和框图示出了根据本技术方案的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这方面,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现(多个)指定逻辑功能的一个或多个可执行指令。在一些备选实现中,框中所注明的功能可以不按图中所注明的次序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
102.第二动作可以被称为“响应于”第一动作,而与第二动作是直接还是间接地由第一动作引起无关。第二动作可以在比第一动作实质上更晚的时间发生,并且仍然响应于第一动作。类似地,即使在第一动作和第二动作之间发生中间动作,并且即使中间动作中的一个或多个直接导致第二动作被执行,第二动作也可以被称为响应于第一动作。例如,如果第一动作设置了标志、并且每当设置了标志时第三动作稍后发起第二动作,则第二动作可以响应于第一动作。
103.为了阐明使用并由此向公众提供通知,短语“《a》、《b》、

以及《n》中的至少一个”或“《a》、《b》、

和《n》中的至少一个或其组合”或“《a》、《b》、

和/或《n》”应以最广泛的意义解释,代替上文或下文的任何其它隐含的定义,除非明确相反地声明,否则意指选自包括a、b、

和n的组的一个或多个元素。换而言之,短语意指单独任一个元素或者该一个元素与其他元素中的一个或多个元素,其也可以包括未列出的附加元素或者与附加元素组合。
104.还将理解,执行指令的本文中例示的任何模块、单元、组件、服务器、计算机、终端或设备可以包括或以其他方式访问计算机可读介质,诸如存储介质、计算机存储介质或数据存储设备(可移除和/或不可移除),诸如例如磁盘、光盘或磁带。计算机存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。这样的计算机存储介质可以是设备的一部分或者对设备可访问或可连接。本文描述的任何应用或模块可以使用计算机可读/可执行指令来实现,这些指令可以由这样的计算机可读介质存储或以其他方式保存。
105.本文已经出于说明的目的呈现了对技术特征的各种实施例的描述,但其并非旨在是穷举的或限于所公开的实施例。在不背离所描述的实施例的范围的情况下,许多修改和变化对于本领域的普通技术人员将是明显的。选择本文所使用的术语以最好地解释实施例的原理、对市场上存在的实际应用或技术的改进,或使本领域的其他普通技术人员能够理解本文所公开的实施例。
106.在本文描述的本发明的优选实施例中,提供了一种电子电路,该电子电路包括:电阻式存储器元件的阵列,该阵列提供电流输出向量,该等于(i)编码模拟输入值向量的对该阵列的电压输入向量与(ii)该阵列内的模拟电阻权重矩阵之间的模拟向量矩阵积;积分电容器,该积分电容器中的每个积分电容器是可电切换的,以便在单个积分步骤期间聚集来
自多个累加导线中的一个累加导线的电流;累加导线和电路,其通过将部分输出激励路由到累加积分电荷的积分电容器来聚集来自该电阻式存储器元件的专用子集的电流;以及数据输出电路系统,其允许来自积分电容器的子集的、在多个积分步骤上被累加的积分电荷适当地被转换并且作为模拟持续时间或者作为使用二进制数字的数字表示被传输,其中电阻式存储器元件被布置为实现卷积神经网络的给定层的突触权重内核的向量。电阻存储元件优选是非易失性存储设备。该电阻式存储器元件的子集可以与该阵列的一个或多个列对应。该电阻式存储器元件的子集可以与阵列的一个或多个行对应。在本文所述的本发明的实施例中,提供了一种使用本段中上文所述的电路来执行经训练的卷积神经网络(cnn)的计算的方法,该方法包括:通过将一组操作迭代预定次数,由交叉点阵列的电阻式存储器元件执行计算,该一组操作包括:将模拟输入值的每个向量分区成多个部分向量;在模拟存储器中累加与多个部分向量中的每个部分向量对应的部分输出激励;以及通过将部分输出激励路由到累加积分电荷的积分电容器来组合部分输出激励;传输多个积分电容器上的表示多个输出激励的积分电荷。在传输积分电荷之前,多个积分电容器上的积分电荷优选地被局部池化。交叉点器件可被布置成实现卷积神经网络的给定层的卷积核的一个或多个行,并且其中,输入数据表示对卷积神经网络的所述层的神经元激励,一次一列地呈现。交叉点器件可以被布置成实现卷积神经网络的给定层的卷积核的一个或多个列,并且其中,输入数据的向量表示从输入数据一次一行地呈现的对卷积神经网络的给定层的神经元激励。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1