一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种神经网络计算芯片的权重调整方法及装置与流程

2022-03-14 04:28:32 来源:中国专利 TAG:


1.本技术涉及神经网络计算领域,尤其涉及一种神经网络计算芯片的权重调整方法及装置。


背景技术:

2.神经网络(neural network,nn)作为实现人工智能的重要途径之一,已广泛应用于机器人、语音识别以及图像识别等领域。为提高神经网络的计算效率,业界内通用的做法是为神经网络定制专用的计算芯片,以实现神经网络的高效计算。
3.目前,一种应用于神经网络的芯片是存算一体交叉阵列架构的芯片,其主要原理是利用非易失性存储器件构建该存算一体交叉阵列芯片架构中的计算阵列(例如,crossbar),并将神经网络的权重数据以电导的形式存储在计算阵列的存储单元中。然后,将输入数据转换成电压信号加载到计算阵列上,将该电压信号与计算阵列的存储单元中存储的权重数据进行乘累加运算,从而得到输出结果。
4.但是,由于噪声的影响,写入到交叉阵列的电导值通常会与实际的权重数据存在一定的误差,从而使得交叉阵列芯片的计算精度较低。


技术实现要素:

5.本技术提供一种神经网络计算芯片的权重调整方法及装置,用以提高神经网络计算芯片的计算精度。
6.第一方面,提供一种神经网络计算芯片的权重调整方法,该方法包括:在获取神经网络计算芯片的计算阵列的第一权重后,将第一权重写入到计算阵列的各个存储单元中,然后从计算阵列中读取各个存储单元的权重值,得到第二权重,根据第一部分权重中的每个权重与第二权重中相应的权重的差值,从第一权重中确定差值大于阈值的第一部分权重,最后根据损失函数的损失值更新计算阵列中的该第一部分权重,其中,该损失值是根据训练过程中教师神经网络输出结果的损失值、所述神经网络计算芯片的输出结果的损失值以及所述教师神经网络和所述神经网络计算芯片的输出结果的差值确定的。
7.在上述技术方案中,考虑到由于神经网络计算芯片中的噪声而导致权重写入不准的情况,提出了根据损失函数的损失值更新部分权重的方式,可以减小写入到神经网络计算芯片的权重与实际值的差值,使得神经网络计算芯片的输出结果更接近真实值,可以提高神经网络计算芯片的计算精度。并且,在更新写入计算阵列中的权重的过程中,只需要对部分权重进行更新,减少了更新的数据量,提升了更新速度。
8.在一种可能的设计中,可以首先根据损失函数的损失值确定第一部分权重的调整梯度,然后则根据该调整梯度更新计算阵列中的该第一部分权重。
9.在一种可能的设计中,在根据损失函数的损失值确定第一部分权重的调整梯度时,可以首先根据该损失值确定该第一部分权重的梯度的更新方式,例如,该更新方式包括增大所述梯度或减小所述梯度;然后,再根据确定的更新方式以及预设的步长,确定该第一
部分权重的调整梯度。
10.上述过程是对第一部分权重的调整方式的一种示例的说明,本领域技术人员也可以采用其他调整方式,在此不作限制。
11.在一种可能的设计中,在调整第一部分权重后,还可以对调整后的部分权重的准确性进行验证,可以包括但不限于如下两种方式:
12.第一种方式:
13.根据计算阵列中更新后的权重,更新损失函数的损失值;然后,判断更新后的损失值是否收敛,其中,在更新后的损失值收敛时,停止更新计算阵列的权重;在更新后的损失值不收敛时,根据更新后的损失值调整计算阵列的权重。
14.第二种方式:
15.根据损失值确定教师神经网络的权重的调整梯度;然后,根据教师神经网络的权重的调整梯度更新教师神经网络的权重,并根据教师神经网络中更新后的权重以及计算阵列中更新后的权重,更新损失函数的损失值;判断更新后的损失值是否收敛,其中,在更新后的损失值收敛时,停止更新计算阵列的权重;在更新后的损失值不收敛时,根据更新后的损失值调整计算阵列的权重。
16.这样,可以通过损失函数的损失值,对计算阵列中的权重的准确性进行验证,可以提高写入计算阵列的权重的准确性。
17.在一种可能的设计中,第一权重是根据教师神经网络模型对学生网络模型进行训练,并在学生网络模型的训练结果收敛时得到的,其中,该学生网络模型与计算阵列相匹配。
18.在上述技术方案中,由于学生网络模型是与计算阵列相匹配的,因此,可以提高设置在计算阵列中的权重的准确性。
19.第二方面,提供一种神经网络计算芯片的权重调整装置,该装置包括处理器,用于实现上述第一方面描述的方法。该计算设备还可以包括内存,用于存储程序指令和数据。该内存与该处理器耦合,该处理器可以调用并执行该内存中存储的程序指令,用于实现上述第一方面描述的方法中的任意一种方法。
20.在一种可能的设计中,所述处理器用于:在获取神经网络计算芯片的计算阵列的第一权重后,将所述第一权重写入到所述计算阵列的各个存储单元中;然后,从所述计算阵列中读取所述各个存储单元的权重值,得到第二权重;确定所述第一权重中的第一部分权重,所述第一部分权重中的每个权重与所述第二权重中相应的权重的差值大于阈值;并根据损失函数的损失值更新所述计算阵列中的所述第一部分权重,其中,所述损失值是根据训练过程中教师神经网络输出结果的损失值、所述神经网络计算芯片的输出结果的损失值以及所述教师神经网络和所述神经网络计算芯片的输出结果的差值确定的。
21.第三方面,提供一种神经网络计算芯片的权重调整装置,该装置包括获取模块、输入模块、确定模块以及更新模块,这些模块可以执行上述第一方面任一种设计示例中所执行的相应功能。例如:
22.所述获取模块,用于获取神经网络计算芯片的计算阵列的第一权重;
23.所述输入模块,用于将所述第一权重写入到所述计算阵列的各个存储单元中;
24.所述获取模块,还用于从所述计算阵列中读取所述各个存储单元的权重值,得到
第二权重;
25.所述确定模块,用于确定所述第一权重中的第一部分权重,所述第一部分权重中的每个权重与所述第二权重中相应的权重的差值大于阈值;
26.所述更新模块,用于根据损失函数的损失值更新所述计算阵列中的所述第一部分权重,其中,所述损失值是根据训练过程中教师神经网络输出结果的损失值、所述神经网络计算芯片的输出结果的损失值以及所述教师神经网络和所述神经网络计算芯片的输出结果的差值确定的。
27.第四方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行第一方面中任意一项所述的方法。
28.第五方面,本技术实施例提供一种计算机程序产品,所述计算机程序产品存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行第一方面中任意一项所述的方法。
29.第六方面,本技术提供了一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现第一方面所述的方法。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
30.上述第二方面至第六方面及其实现方式的有益效果可以参考对第一方面的方法及其实现方式的有益效果的描述。
附图说明
31.图1为本技术实施例提供的一种神经网络系统的结构示意图;
32.图2为神经网络在交叉阵列架构上部署的原理图;
33.图3为权重数据的一种示例的示意图;
34.图4为本技术实施例提供的部署在交叉阵列上的权重数据的一种示例的示意图;
35.图5为本技术实施例提供的神经网络计算芯片的权重调整方法的一种示例的示意图;
36.图6为本技术实施例提供的权重调整过程的一种示例的示意图;
37.图7为本技术实施例提供的神经网络计算芯片的权重调整方法的另一种示例的示意图;
38.图8为本技术实施例提供的神经网络计算芯片的权重调整装置的一种示例的结构示意图;
39.图9为本技术实施例提供的神经网络计算芯片的权重调整装置的另一种示例的结构示意图。
具体实施方式
40.为了使本技术实施例的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施例作进一步地详细描述。
41.本技术实施例中“多个”是指两个或两个以上,鉴于此,本技术实施例中也可以将“多个”理解为“至少两个”。“至少一个”,可理解为一个或多个,例如理解为一个、两个或更
多个。例如,包括至少一个,是指包括一个、两个或更多个,而且不限制包括的是哪几个,例如,包括a、b和c中的至少一个,那么包括的可以是a、b、c、a和b、a和c、b和c、或a和b和c。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
42.除非有相反的说明,本技术实施例提及“第一”、“第二”等序数词用于对多个对象进行区分,不用于限定多个对象的顺序、时序、优先级或者重要程度。
43.为方便本领域技术人员理解本技术实施例中的技术方案,首先对本技术所涉及的应用场景进行说明。
44.本技术实施例主要应用在神经网络系统中,神经网络也可以称为人工神经网络(artificial neural network,ann),或者类神经网络,在机器学习和认知科学领域,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。人工神经网络可以包括卷积神经网络(convolutional neural network,cnn)、深度神经网络(deep neural network,dnn)、多层感知器(multilayer perceptron,mlp)等神经网络。
45.请参考图1,为本技术实施例提供的一种神经网络系统的结构示意图。如图1所示,神经网络系统100可以包括主机110以及神经网络电路120。神经网络电路120通过主机接口与主机110连接。主机接口可以包括标准的主机接口以及网络接口(network interface)。例如,主机接口可以包括快捷外设互联标准(peripheral component interconnect express,pcie)接口。如图1所示,神经网络电路120可以通过pcie总线130与主机110连接。因此,数据可以通过pcie总线130输入至神经网络电路120中,并通过pcie总线130接收神经网络电路120处理完成后的数据。并且,主机110也可以通过主机接口监测神经网络电路120的工作状态。
46.主机110可以包括处理器1102以及内存1104。需要说明的是,除了图1所示的器件外,主机110还可以包括通信接口以及作为外存的磁盘等其他器件(图1中未示出),在此不做限制。
47.处理器(processor)1102是主机110的运算核心和控制核心(control unit)。处理器1102中可以包括多个处理器核(core)。处理器1102可以是一块超大规模的集成电路。在处理器1102中安装有操作系统和其他软件程序,从而处理器1102能够实现对内存1104、缓存、磁盘及外设设备(如图1中的神经网络电路)的访问。可以理解的是,在本技术实施例中,处理器1102中的core例如可以是中央处理器(central processing unit,cpu),还可以是其他特定集成电路(application specific integrated circuit,asic)。
48.内存1104是主机110的主存。内存1104通过双倍速率(double data rate,ddr)总线和处理器1102相连。内存1104通常用来存放操作系统中各种正在运行的软件、输入和输出数据以及与外存交换的信息等。为了提高处理器1102的访问速度,内存1104需要具备访问速度快的优点。在传统的计算机系统架构中,通常采用动态随机存取存储器(dynamic random access memory,dram)作为内存1104。处理器1102能够通过内存控制器(图1中未示出)高速访问内存1104,对内存1104中的任意一个存储单元进行读操作和写操作。
49.神经网络电路120是由多个神经网络芯片(chip)1201组成的芯片阵列。在图1中以
to-analog converter,dac)转换为电压信号,输入到crossbar中,从而使得输入数据与cell中配置的权重值实现点乘运算,得到的计算结果以电压的形式从crossbar每一列的输出端(如图4所示的输出端口406)输出,从而得到与输入数据对应的输出结果。
57.由上述过程可知,影响该交叉阵列的计算精度的一个因素是该交叉阵列中的权重数据,因此,准确地将权重数据部署在交叉阵列上尤为重要。但是,由于交叉阵列的工艺特性以及噪声的影响,写入到交叉阵列的电导值通常会与实际的权重数据存在一定的误差,从而使得交叉阵列芯片的计算精度较低。
58.鉴于此,本技术提供一种神经网络计算芯片的权重调整方法,用以提高神经网络计算芯片的计算精度。
59.请参考图5,为该神经网络计算芯片的权重调整方法的一种示例的示意图,该流程图的描述如下:
60.s501、获取神经网络计算芯片的计算阵列的第一权重。
61.在本技术实施例中,第一权重可以理解为写入到计算阵列例如crossbar中的权重数据的理论值,例如,用户需要将神经网络模型1部署在crossbar中,该神经网络模型1可以是任意一个神经网络模型,则首先需要确定crossbar的每个存储单元中存储的权重数据的理论值,当crossbar中每个存储单元存储的权重数据越接近该理论值时,该crossbar的计算结果也就越接近该神经网络模型1的计算结果。为方便说明,下文中将神经网络模型1称为教师神经网络模型。
62.其中,获取第一权重可以包括但不限于如下两种方式:
63.第一种获取方式,教师神经网络模型的大小与crossbar的大小相同:
64.在这种情况下,教师神经网络模型中的每个权重即crossbar的各个存储单元的第一权重。例如,教师神经网络模型的权重为如图3所示的j行k列的权重数据,crossbar中包括j行k列个存储单元,则该j行k列的权重数据可以一一对应写入到crossbar的其中一个存储单元中,则图3所示的权重数据即为crossbar的第一权重。
65.第二种获取方式,教师神经网络模型的大小与crossbar的大小不同:
66.在这种情况下,由于教师神经网络模型的大小与crossbar的大小不同,例如,教师神经网络模型的权重为如图3所示的j行k列的权重数据,crossbar中包括s行p列个存储单元,其中j与s的大小不同,k与p的大小不同,从而无法将教师神经网络中的权重数据一一对应写入到crossbar的每个存储单元中,因此,需要对教师神经网络中的权重数据进行处理,然后才能得到crossbar的第一权重。
67.作为一种示例,可以创建一个与crossbar相匹配的学生网络模型,然后,根据该教师神经网络模型对学生网络模型进行训练,当学生网络模型的训练结果收敛时,该学生网络模型中的权重数据即为crossbar的第一权重。需要说明的是,学生网络模型与crossbar相匹配,可以理解为,学生网络模型的大小与crossbar的大小相同。
68.例如,教师神经网络模型采用vgg-m-1024网络结构,该神经网络模型由5层卷积层,3层全连接层组成,其中各卷积层的通道维度分别为96、256、512,512、512,全连接层的维度分别为4096、1024、10。而crossbar的大小可以比教师神经网络模型小,这样,可以减少crossbar所占用的空间,例如,该crossbar也可以由5层卷积层,3层全连接层组成,其中,卷积层通道维度分别为48、128、256、256、512,全连接层的维度分别为2048、1024、10。学生网
络模型则可以根据crossbar的大小进行设置。
69.在创建该学生网络模型后,则可以使用预设的训练集,根据教师神经网络模型与学生网络模型之间的损失函数,来指导学生网络模型进行学习。作为一种示例,教师神经网络模型与学生网络模型之间的损失函数可以是教师神经网络模型的输出结果与学生网络模型的输出结果之间的交叉熵,当然,也可以是其他损失函数,在本技术实施例中不作限制。当教师神经网络模型与学生网络模型之间的损失函数处于收敛状态时,则确定学生网络模型的输出结果与教师神经网络模型的输出结果相似。学生网络模型在损失函数处于收敛状态时对应的权重数据,即crossbar的第一权重。
70.当然,本领域技术人员也可以采用其他方式获取该第一权重,在此不作限制。
71.s502、将第一权重写入到计算阵列的各个存储单元中。
72.当获取该第一权重后,则将该第一权重中的各个权重数据写入到crossbar中对应的存储单元中。具体写入方式与现有技术中相似,在此不再赘述。
73.s503、从计算阵列中读取各个存储单元的权重值,得到第二权重。
74.在将该第一权重中的各个权重数据写入到crossbar中对应的存储单元的过程中,由于受到噪声的干扰,实际写入到各个存储单元的权重数据与第一权重可能会不相同。例如,将第一权重中的第一个权重数据的权重值为0.20,由于受到crossbar中的噪声干扰,在输入过程中发生了抖动,在这种情况下,写入到crossbar中的第一个存储单元的权重数据可能会变为0.22。因此,在根据第一权重向crossbar中的各个存储单元写入权重数据后,需要从crossbar中读取其各个存储单元中实际存储的权重数据,即第二权重。
75.s504、确定第一权重中的第一部分权重。
76.由步骤s503中可知,实际写入到crossbar的各个存储单元的权重数据与第一权重可能会不相同,当实际写入到crossbar的各个存储单元的权重数据与第一权重的差值过大时,则可能会使得crossbar的输出结果与真实值相差较大,造成crossbar的计算精度低。因此,在得到第二权重后,会将第二权重与第一权重的差值进行比较,从而确定出第一部分权重,在本技术实施例中,第一部分权重中的每个权重与第二权重中相应的权重的差值大于阈值,该阈值可以根据实际使用需求设置,例如,可以为0.2或者0.5等,在此不作限制。
77.例如,以图4所示的crossbar,且学生网络模型与crossbar的大小相同为例,第一权重和第二权重均为4行4列的矩阵,其中,第一权重为矩阵a:
[0078][0079]
第二权重为矩阵b:
[0080][0081]
根据矩阵a和矩阵b中的元素,计算两个矩阵中相同位置的元素之间的差值,例如,两个矩阵中第一行第一列中对应的两个元素的差值为1.2-1=0.2,两个矩阵中第一行第二列中对应的两个元素的差值为2.5-2=0.5,以此类推,计算矩阵中每个位置对应的两个元
素的差值,然后根据计算出来的差值确定第一部分权重。
[0082]
在本技术实施例中,根据计算出来的差值确定第一部分权重,可以包括但不限于如下两种方式:
[0083]
第一种确定方式,当某个位置对应的两个元素的差值大于或等于阈值,则将第一权重中位于该位置的元素确定为第一部分权重。例如,阈值的取值为0.3,由于第一行第二列中对应的两个元素的差值为0.5》0.3,则位于矩阵a中第一行第二列的元素则为第一部分权重。采用相同的方式,最终确定第一权重中所有的第一部分权重。
[0084]
第二种确定方式,可以将矩阵中的某一列中各个元素的差值的总和,作为该列的误差值,然后根据每一列的误差值确定第一部分权重。例如,第一列的误差值为0.2 0.1=0.3,第二列的误差值为0.5 0.5 1=2,第三列的误差值为0.1,第四列的误差值为0.1 0.3=0.4。若阈值的取值为0.5,则由于第二列的误差值为2》0.5,而其他列的误差值均小于0.5,从而确定第一权重对应的矩阵的第二列中的元素为第一部分权重。
[0085]
或者,在这种确定方式下,也可以根据每一列的误差值是否大于或等于阈值,生成一维向量,该一维向量的大小与矩阵的列数相同,每一个元素对应矩阵的某一列,若某一列的误差值大于或等于阈值,则将一维向量中与该列对应的元素的取值设置为1,否则,将元素的取值设置为0。沿用前述示例,可以得到一维向量[0,1,0,0],则第一权重的矩阵中与一维向量中取值为1的列所包括的元素为第一部分权重。
[0086]
s505、根据损失函数的损失值更新计算阵列中的第一部分权重。
[0087]
当确定出第一权重中误差较大的第一部分权重后,则需要对该部分权重进行调整。在本技术实施例中,是根据损失函数的损失值来更新的,损失值是根据训练过程中教师神经网络输出结果的损失值、神经网络计算芯片的输出结果的损失值以及教师神经网络和神经网络计算芯片的输出结果的差值确定的。相应地,该损失函数可以是根据教师神经网络模型的输出结果与真实值的交叉熵,神经网络计算芯片的输出结果与真实值的交叉熵,以及教师神经网络模型的输出结果与神经网络计算芯片的输出结果的交叉熵,这三个交叉熵共同确定的,例如,可以为这三个交叉熵之和,或者也可以是这三个交叉熵的其他运算结果,或者,该损失函数也可以不采用交叉熵,例如,可以为条件熵或者相对熵等,在此不作限制。其中,教师神经网络模型的输出结果与真实值的交叉熵可以使得教师神经网络模型的输出结果与真实值趋近,教师神经网络模型的输出结果与神经网络计算芯片的输出结果的交叉熵可以使得神经网络计算芯片的输出结果与教师神经网络模型的输出结果趋近;神经网络计算芯片的输出结果与真实值的交叉熵可以使得神经网络计算芯片的输出结果与真实值趋近,从而根据上述三个交叉熵确定的损失函数,可以使得神经网络计算芯片的输出结果更加趋近真实值,可以保证神经网络计算芯片的计算精度。
[0088]
作为一种示例,在本技术实施例中,根据损失函数的损失值更新所述计算阵列中的所述第一部分权重,包括如下两个步骤:首先,根据损失函数的损失值确定该第一部分权重的调整梯度,然后再根据确定的调整梯度更新该第一部分权重。调整梯度可以理解为对权重的调整程度或者调整大小,具体来讲,确定该调整梯度时,首先根据损失函数的损失值确定该调整梯度的更新方式,该更新方式例如是增大该调整梯度还是减小该调整梯度。然后,根据确定的更新方式以及预设的步长,确定该调整梯度的具体取值。
[0089]
下面,针对步骤s504中确定第一部分权重的两种不同的方式,分别对更新第一部
分权重的过程进行说明。
[0090]
第一种更新方式,对应步骤s504中第一部分权重的第一种确定方式:
[0091]
当根据矩阵的同一位置对应的两个元素的差值确定出第一部分权重包括矩阵a的第一行第二列的元素、第二行第二列的元素、第三行第二列的元素以及第四行第四列的元素后,则可以根据前述损失函数的损失值对该四个元素的权重数据进行调整。例如,可以设置一个损失函数阈值,若计算得到的损失值大于或等于该损失函数阈值,则确定需要增大调整梯度,否则确定需要减小调整梯度;当然,也可以是若计算得到的损失值大于或等于该损失函数阈值,则确定需要减小调整梯度,否则确定需要增大调整梯度,在此不作限制。然后,根据预设的步长确定出该调整梯度的具体取值。作为一种示例,假设前述损失函数的损失值为6,预设的损失函数阈值为4,以及预设的步长为0.2,则由于损失函数的损失值6》4,确定需要增大调整梯度。在首次调整梯度时,可以认为起始梯度为0,当然也可以默认为其他值,在此以起始梯度为0为例,从而确定出调整梯度的取值为0.2,即需要在第一部分权重的权重数据上增加0.2,从而得到调整后的第一部分权重的权重数据分别为:第一行第二列的元素更新为2.2、第二行第二列的元素更新为6.2、第三行第二列的元素更新为11.2以及第四行第四列的元素更新为16.2。
[0092]
第二种更新方式,对应步骤s504中第一部分权重的第二种确定方式:
[0093]
当根据矩阵中的某一列中各个元素的差值的总和,确定矩阵a的第二列中的元素为第一部分权重后,则可以根据前述损失函数的损失值对第二列中元素的权重数据进行调整。为便于计算,在下文中以前述一维向量来表示第一部分权重和其他权重的关系,即一维向量[0,1,0,0]。请参考图6,为权重调整过程的示意图。如图6所示,首先计算出损失函数的损失值,然后根据损失值确定出调整梯度,其中,根据损失值确定调整梯度的过程与第一种更新方式中相似,在此不再赘述。在确定出调整梯度后,则根据调整梯度和初始梯度(例如梯度1),确定出调整后的梯度(例如梯度2),例如,确定出的调整梯度为0.2,则可以得到与一维向量[0,1,0,0]大小相同的梯度更新向量[0.2,0.2,0.2,0.2],将一维向量[0,1,0,0]和梯度更新向量[0.2,0.2,0.2,0.2]相乘,则可以得到调整后的梯度向量为[0,0.2,0,0],该梯度向量可以理解为,只将第一权重中的第二列元素增加0.2,而其他列的元素不更新,最后则根据调整后的梯度向量对矩阵a中的元素进行处理,从而得到更新后的权重。
[0094]
需要说明的是,本技术实施例中,当确定出第一部分权重后,可以只调整第一部分权重,而不调整除第一部分权重之外的其他权重,上述示例就是以这种情况为例进行的说明,采用这种调整方式,可以有针对性的对误差较大的部分权重进行重写,而不用调整其他写入准确的权重,可以减少权重重写的时间,提高权重重写的效率。或者,也可以同步调整所有的第一权重,其他权重的调整方式与第一部分权重的调整方式相似,在此不再赘述。
[0095]
在上述对权重进行更新的过程中,考虑到由于神经网络计算芯片中的噪声而导致权重写入不准的情况,提出了根据损失函数的损失值更新权重的方式,可以减小写入到神经网络计算芯片的权重与实际值的差值,使得神经网络计算芯片的输出结果更接近真实值,可以提高神经网络计算芯片的计算精度。并且,在更新写入计算阵列中的权重的过程中,只需要对部分权重进行更新,减少了更新的数据量,提升了更新速度。
[0096]
为了进一步确保写入计算阵列中的权重的准确性,继续参考图5,本技术实施例中的方法还可以包括如下步骤:
[0097]
s506、根据计算阵列中更新后的权重,更新损失函数的损失值。
[0098]
当更新计算阵列的第一部分权重后,前述损失函数的损失值也会发生变化,因此,可以根据计算阵列中更新后的权重,重新计算损失值。
[0099]
s507、判断更新后的损失值是否收敛。
[0100]
s508、在更新后的损失值收敛时,停止更新计算阵列的权重。
[0101]
若更新后的损失值收敛,则说明神经网络计算芯片的输出结果与教师神经网络模型的输出结果的差值已经较小,且该差值不影响神经网络计算芯片的计算准确性,在这种情况下,则说明部署在计算阵列中的权重与教师神经网络模型中的权重是一致的,从而可以停止对计算阵列的权重的更新过程。
[0102]
s509、在更新后的损失值不收敛时,根据更新后的损失值调整计算阵列的权重。
[0103]
若更新后的损失值不收敛,则说明神经网络计算芯片的输出结果与教师神经网络模型的输出结果的差值仍然较大,在这种情况下,则说明部署在计算阵列中的权重与教师神经网络模型中的权重是不准确的,从而需要继续调整计算阵列的权重,具体调整方式与前述内容相似,直至在某次调整权重之后得到的更新的损失值收敛为止。
[0104]
这样,可以通过损失函数的损失值,对计算阵列中的权重的准确性进行验证,可以提高写入计算阵列的权重的准确性。
[0105]
需要说明的是,步骤s506~步骤s509为可选步骤,即不是必须要执行的,因此,在图5中用虚线表示。
[0106]
在图5所示的实施例中,是根据调整梯度对第一权重进行的更新,也就是说,是在保持教师神经网络模型的权重不发生变化的情况下,对计算阵列中的权重进行的更新。在其他实施例中,也可以同时更新教师神经网络模型的权重。下面请参考图7,为神经网络计算芯片的权重调整方法的另一种示例的示意图,该流程图的描述如下:
[0107]
s701、获取神经网络计算芯片的计算阵列的第一权重。
[0108]
s702、将第一权重写入到计算阵列的各个存储单元中。
[0109]
s703、从计算阵列中读取各个存储单元的权重值,得到第二权重。
[0110]
s704、确定第一权重中的第一部分权重。
[0111]
s705、根据损失函数的损失值更新计算阵列中的第一部分权重。
[0112]
步骤s701~步骤s705与步骤s501~步骤s505相似,在此不再赘述。
[0113]
s706、根据所述损失值确定所述教师神经网络模型的权重的调整梯度。
[0114]
在本技术实施例中,确定教师神经网络模型的权重的调整梯度,与前述确定第一部分权重的调整梯度相似,即首先根据损失函数的损失值以及预设的损失函数阈值,确定调整梯度的更新方式,然后根据该更新方式以及预设的步长,确定出更新后的调整梯度。需要说明的是,用于确定教师神经网络模型的调整梯度的损失函数阈值可以与步骤s504中的损失函数阈值相同,例如,均为4,当然,也可以不相同,例如,用于确定教师神经网络模型的调整梯度的损失函数阈值大于步骤s504中的损失函数阈值;同样的道理,用于确定教师神经网络模型的调整梯度的预设的步长可以与步骤s504中预设的步长相同,也可以不相同,在此不作限制。
[0115]
s707、根据教师神经网络的权重的调整梯度更新教师神经网络的权重。
[0116]
在确定教师神经网络的权重的调整梯度后,则可以根据该调整梯度更新教师神经
网络的权重。具体来讲,可以根据该调整梯度更新教师神经网络的每一个权重,例如,当确定出调整梯度的取值为0.2,则在教师神经网络中的当前的每一个权重的基础上增加0.2,从而得到更新后的权重。或者,为了减少更新的权重的数量,提高权重更新的效率,也可以只对教师神经网络中的部分权重进行更新,例如,可以首先确定教师神经网络中与第一部分权重相关联的部分权重,然后,根据该调整梯度更新教师神经网络中的该部分权重。例如,第一部分权重为矩阵a中的第二列的元素,可以通过实验确定出教师神经网络的权重矩阵中的第一列和第二列是与矩阵a的第二列的元素相关联的,从而可以只更新教师神经网络的权重矩阵中的第一列元素和第二列元素即可。
[0117]
需要说明的是,本技术实施例中不限制步骤s705与步骤s706~步骤s707之间的执行顺序,例如,可以先执行步骤s705再执行步骤s706~步骤s707,或者也可以先执行步骤s706~步骤s707再执行步骤s705,或者,也可以同时执行步骤s705与步骤s706~步骤s707。在图7中以先执行步骤s705再执行步骤s706~步骤s707为例进行说明。
[0118]
s708、根据教师神经网络中更新后的权重以及计算阵列中更新后的权重,更新损失函数的损失值。
[0119]
当更新计算阵列的第一部分权重以及教师神经网络的权重后,前述损失函数的损失值也会发生变化,因此,可以根据计算阵列中更新后的权重以及教师神经网络中更新后的权重,重新计算损失值。
[0120]
s709、判断更新后的损失值是否收敛。
[0121]
s710、在更新后的损失值收敛时,停止更新计算阵列的权重。
[0122]
s711、在更新后的损失值不收敛时,根据更新后的损失值调整计算阵列的权重。
[0123]
步骤s709~步骤s711与步骤s507~步骤s509相似,在此不再赘述。
[0124]
需要说明的是,步骤s706~步骤s711为可选步骤,即不是必须要执行的,因此,在图7中用虚线表示。
[0125]
上述本技术提供的实施例中,为了实现上述本技术实施例提供的方法中的各功能,设备可以包括硬件结构和/或软件模块,以硬件结构、软件模块、或硬件结构加软件模块的形式来实现上述各功能。上述各功能中的某个功能以硬件结构、软件模块、还是硬件结构加软件模块的方式来执行,取决于技术方案的特定应用和设计约束条件。
[0126]
图8示出了一种神经网络计算芯片的权重调整装置800的结构示意图。神经网络计算芯片的权重调整装置800可以是硬件结构、软件模块、或硬件结构加软件模块。神经网络计算芯片的权重调整装置800可以由芯片系统实现。本技术实施例中,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
[0127]
神经网络计算芯片的权重调整装置800可以包括获取模块801、输入模块802、确定模块803以及更新模块804。
[0128]
获取模块801可以用于执行图5所示的实施例中的步骤s501和步骤s503,或用于执行图7所示的实施例中的步骤s701和步骤s703,和/或用于支持本文所描述的技术的其它过程。
[0129]
输入模块802可以用于执行图5所示的实施例中的步骤s502,或用于执行图7所示的实施例中的步骤s702,和/或用于支持本文所描述的技术的其它过程。
[0130]
确定模块803可以用于执行图5所示的实施例中的步骤s504,或用于执行图7所示
的实施例中的步骤s704,和/或用于支持本文所描述的技术的其它过程。
[0131]
更新模块804可以用于执行图5所示的实施例中的步骤s505~步骤s509,或用于执行图7所示的实施例中的步骤s705~步骤s711,和/或用于支持本文所描述的技术的其它过程。
[0132]
其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
[0133]
图8所示的实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本技术各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
[0134]
如图9所示为本技术实施例提供的神经网络计算芯片的权重调整装置900,其中,该神经网络计算芯片的权重调整装置900可以为芯片系统。本技术实施例中,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
[0135]
神经网络计算芯片的权重调整装置900包括至少一个处理器920,用于实现或用于支持神经网络计算芯片的权重调整装置900实现本技术实施例提供的方法中存储服务端的功能。示例性地,处理器920可以更新第一权重中的第一部分权重,具体参见方法示例中的详细描述,此处不做赘述。
[0136]
神经网络计算芯片的权重调整装置900还可以包括至少一个存储器930,包括内存,用于存储程序指令和/或数据。存储器930和处理器920耦合。本技术实施例中的耦合是装置、单元或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。处理器920可能和存储器930协同操作。处理器920可能执行存储器930中存储的程序指令。所述至少一个存储器中的至少一个可以包括于处理器中。
[0137]
神经网络计算芯片的权重调整装置900还可以包括接口910,用于通过传输介质使得神经网络计算芯片的权重调整装置900中的各个器件可以进行通信。
[0138]
本技术实施例中不限定上述接口910、处理器920以及存储器930之间的具体连接介质。本技术实施例在图9中以存储器930、处理器920以及接口910之间通过总线940连接,总线在图9中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0139]
在本技术实施例中,处理器920可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
[0140]
在本技术实施例中,存储器930可以是非易失性存储器,比如硬盘(hard disk drive,hdd)或固态硬盘(solid-state drive,ssd)等,还可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,ram)。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本技术实施例中的存储器还可以是电路或者其它任意能够实现存储功能的装置,
用于存储程序指令和/或数据。
[0141]
本技术实施例中还提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行图5或图7所示的实施例中设备执行的方法。
[0142]
本技术实施例中还提供一种计算机程序产品,包括指令,当其在计算机上运行时,使得计算机执行图5或图7所示的实施例中设备执行的方法。
[0143]
本技术实施例提供了一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现前述方法中神经网络计算芯片的权重调整装置的功能。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
[0144]
本技术实施例提供的方法中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、用户设备或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,简称dsl)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机可以存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digital video disc,简称dvd))、或者半导体介质(例如,ssd)等。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献