CN109670586B - 运算方法、装置及相关产品 - Google Patents

运算方法、装置及相关产品 Download PDF

Info

Publication number
CN109670586B
CN109670586B CN201811634962.7A CN201811634962A CN109670586B CN 109670586 B CN109670586 B CN 109670586B CN 201811634962 A CN201811634962 A CN 201811634962A CN 109670586 B CN109670586 B CN 109670586B
Authority
CN
China
Prior art keywords
processor
network
input data
result
operator
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.)
Active
Application number
CN201811634962.7A
Other languages
English (en)
Other versions
CN109670586A (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.)
Cambricon Technologies Corp Ltd
Original Assignee
Beijing Zhongke Cambrian Technology Co Ltd
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 Beijing Zhongke Cambrian Technology Co Ltd filed Critical Beijing Zhongke Cambrian Technology Co Ltd
Priority to CN201811634962.7A priority Critical patent/CN109670586B/zh
Publication of CN109670586A publication Critical patent/CN109670586A/zh
Application granted granted Critical
Publication of CN109670586B publication Critical patent/CN109670586B/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
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

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

Abstract

本公开涉及一种运算方法、装置及相关产品,所述产品包括控制模块,所述控制模块包括:指令缓存单元、指令处理单元和存储队列单元;所述指令缓存单元,用于存储所述人工神经网络运算关联的计算指令;所述指令处理单元,用于对所述计算指令解析得到多个运算指令;所述存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。通过以上方法,本公开可以提高相关产品在进行神经网络模型的运算时的运算效率。

Description

运算方法、装置及相关产品
技术领域
本公开涉及信息处理技术领域,尤其涉及一种运算方法、装置及相关产品。
背景技术
在人工智能技术领域,神经网络算法是最近非常流行的一种机器学习算法,在各种领域中都取得了非常好的效果,比如图像识别,语音识别,自然语言处理等。随着神经网络算法的发展,算法的复杂度也越来越高,为了提高识别度,模型的规模也在逐渐增大。用GPU和CPU处理起这些大规模的模型,要花费大量的计算时间,并且耗电量很大。在这种情况下,新的人工智能处理器被提出以提高神经网络模型的运算速度,节约运算时间,降低功耗。然而,当前对新的人工智能处理器的算法支持却远远不够。
发明内容
有鉴于此,本公开提出了一种测试方法及装置,可以验证算子的实现的正确性,从而确保第一网络的运算结果的准确性。
根据本公开的一方面,提供了一种测试方法,所述方法应用于第一处理器,所述方法用于测试第一网络中的第一算子,所述第一算子属于所述第一网络的后端部分,所述第一网络还包括前端部分;
所述方法包括:
从第一网络的前端部分的输出结果中获取第一算子的第一输入数据;其中,所述输出结果为基于第一网络的前端部分对第二输入数据进行运算得到的结果,所述第一输入数据是对第二输入数据中全部或部分数据进行标记的标记参数;
基于所述第一算子对所述第一输入数据进行处理,得到处理结果;
比较所述处理结果和运算结果完成对所述第一算子的测试;
其中,所述运算结果为第二处理器基于所述第一网络对第二输入数据进行运算得到的结果。
在一种可能的实现方式中,所述方法还包括:
读取第一网络的网络信息;
根据第二输入数据以及所述网络信息,针对第一网络进行前向传播计算;
截取所述第一网络的前端部分的所述输出结果。
在一种可能的实现方式中,所述第一算子为检测算子,所述处理结果为检测结果。
在一种可能的实现方式中,所述第二输入数据包括图像数据,所述第一输入数据包括候选框、候选框的位置和候选框的置信值。
在一种可能的实现方式中,所述第一网络为SSD网络。
在一种可能的实现方式中,比较所述处理结果和运算结果完成对所述第一算子的测试,包括:
若所述处理结果和所述运算结果满足测试条件,则所述第一算子的实现是正确的。
在一种可能的实现方式中,所述第一处理器和第二处理器为人工智能处理器或者通用处理器,且所述第一处理器不同于所述第二处理器。
在一种可能的实现方式中,所述第一处理器为人工智能处理器,所述第二处理器为通用处理器。
根据本公开的另一方面,提供了一种测试装置,所述装置应用于第一处理器,所述装置用于测试第一网络中的第一算子,所述第一算子属于所述第一网络的后端部分,所述第一网络还包括前端部分;
所述装置包括:
获取单元,用于从第一网络的前端部分的输出结果中获取第一算子的第一输入数据;其中,所述输出结果为基于第一网络的前端部分对第二输入数据进行运算得到的结果,所述第一输入数据是对第二输入数据中全部或部分数据进行标记的标记参数;
处理单元,用于基于所述第一算子对所述第一输入数据进行处理,得到处理结果;
比较单元,用于比较所述处理结果和运算结果完成对所述第一算子的测试;
其中,所述运算结果为第二处理器基于所述第一网络对第二输入数据进行运算得到的结果。
在一种可能的实现方式中,所述装置还包括:
读取单元,用于读取第一网络的网络信息;
运算单元,用于根据第二输入数据以及所述网络信息,针对所述第一网络进行前向传播计算;
截取单元,用于截取所述第一网络的前端部分的输出结果。
在一种可能的实现方式中,所述第一算子为检测算子,所述处理结果为检测结果。
在一种可能的实现方式中,所述第二输入数据包括图像数据,所述第一输入数据包括候选框、候选框的位置和候选框的置信值。
在一种可能的实现方式中,所述第一网络为SSD网络。
在一种可能的实现方式中,所述比较单元包括:
判断子单元,用于若所述处理结果和所述运算结果满足测试条件,则所述第一算子的实现是正确的。
在一种可能的实现方式中,所述第一处理器和第二处理器为人工智能处理器或者通用处理器,且所述第一处理器不同于所述第二处理器。
在一种可能的实现方式中,所述第一处理器为人工智能处理器,所述第二处理器为通用处理器。
根据本公开的另一方面,提供了一种人工智能处理装置,所述装置用于测试第一网络中的第一算子,所述第一算子属于所述第一网络的后端部分,所述第一网络还包括前端部分;
所述装置包括第一处理器和第二处理器,所述第一处理器连接到所述第二处理器,
所述第一处理器用于从第一网络的前端部分的输出结果中获取第一算子的第一输入数据,基于所述第一算子对所述第一输入数据进行处理,得到处理结果;其中,所述输出结果为基于第一网络的前端部分对第二输入数据进行计算得到的结果,所述第一输入数据是对第二输入数据中全部或部分数据进行标记的标记参数;
所述第二处理器用于基于第一网络对第二输入数据进行计算,得到运算结果;
所述第二处理器用于将所述运算结果发送给所述第一处理器;
所述第一处理器用于比较所述处理结果和运算结果完成对所述第一算子的测试。
在一种可能的实现方式中,所述第一算子为检测算子,所述处理结果为检测结果。
在一种可能的实现方式中,所述第一处理器和第二处理器为人工智能处理器或者通用处理器,且所述第一处理器不同于所述第二处理器。
在一种可能的实现方式中,所述第一处理器为人工智能处理器,所述第二处理器为通用处理器。
在一种可能的实现方式中,所述第二输入数据包括图像数据,所述第一输入数据包括候选框、候选框的位置和候选框的置信值。
根据本公开的另一方面,提供了一种计算机设备,包括存储器、处理器,所述存储器上存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如上所述方法的步骤。
根据本公开的另一方面,提供了一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上所述方法的步骤。
通过将相同的输入数据(第二输入数据)分别输入到第一处理器上的第一网络和第二处理器上的第一网络。第二处理器基于第一网络对第二输入数据进行运算得到运算结果。而对于第一处理器,通过获取作为中间结果的前端部分的输出结果中的第一输入数据,并基于第一算子对第一输入数据进行处理得到处理结果。第一处理器通过比较处理结果和利用第二处理器得到的运算结果完成对第一算子的测试。根据本公开上述实施方式的测试方法及装置,可以验证第一算子的实现的正确性,从而确保第一网络的运算结果的准确性。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开一实施例的测试方法的流程图。
图2示出根据本公开一实施例的测试方法的流程图。
图3示出根据本公开一实施例的测试装置的框图。
图4示出根据本公开一实施例的测试装置的框图。
图5示出根据本公开一实施例的人工智能处理装置的框图。
图6是根据一示例性实施例示出的一种第一处理器的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
在神经网络模型中,模型中的算子需要对具有实际物理意义的数据进行处理时,处理结果的正确性很重要。因此,这些算子实现的正确性非常重要。具有实际物理意义的数据可以是指神经网络模型在处理过程中对输入数据标注了物理意义的数据,比如说,以输入数据为图像数据为例,标注了物理意义的数据可以是指对图像中的目标进行标注的候选框、候选框的位置和置信值等;以输入数据为音频数据为例,标注了物理意义的数据可以是指标注的音频数据中一些音频片段的时间等。
举例来说,在用于进行目标检测、跟踪、识别等包括后端部分的检测算子的神经网络模型中,神经网络模型的前端部分对输入数据进行计算得到的输出结果作为神经网络的后端部分的输入,输入数据可以是图像数据或视频数据等,前端部分可以用于分类、目标识别、跟踪、检测等特征提取,得到的输出结果中包含对图像或者视频数据中的目标进行标注的候选框、候选框的位置和置信值等数据,将这些数据作为检测算子的输入数据,检测算子进行检测获得目标位置等信息。因此,检测算子的实现的正确性对最终的检测结果非常重要。
例如,SSD(Single Shot MultiBox Detector)网络是一种非常有效的单阶段检测网络,常用于进行目标检测,在视频和图像检测领域获得了大规模的应用。SSD网络通常包括前端部分的用于分类的网络和后端部分的检测算子,后端部分的检测算子将用于分类的网络计算得到的图像特征feature map通过default box框以及非极大值抑制(Non-Maximum Suppression,NMS)得到最终的检测结果。
为了验证神经网络模型的后端部分的算子的正确性,本公开提供了一种测试方法、测试装置以及相关产品。
图1示出根据本公开一实施例的测试方法的流程图。该测试方法可以应用于第一处理器,所述方法用于测试第一网络中的第一算子,所述第一算子属于所述第一网络的后端部分,所述第一网络还包括前端部分。
本公开提供的测试方法可以包括:
步骤S11,从第一网络的前端部分的输出结果中获取第一算子的第一输入数据;其中,所述输出结果为基于第一网络的前端部分对第二输入数据进行运算得到的结果,所述第一输入数据是对第二输入数据中全部或部分数据进行标记的标记参数;
步骤S12,基于所述第一算子对所述第一输入数据进行处理,得到处理结果;
步骤S13,比较所述处理结果和运算结果完成对所述检测算子的测试。
其中,所述运算结果为第二处理器基于所述第一网络对第二输入数据进行运算得到的结果。
也就是说,通过将相同的输入数据(第二输入数据)分别输入到第一处理器上的第一网络和第二处理器上的第一网络。第二处理器基于第一网络对第二输入数据进行运算得到运算结果。而对于第一处理器,通过获取作为中间结果的前端部分的输出结果中的第一输入数据,并基于第一算子对第一输入数据进行处理得到处理结果。第一处理器通过比较处理结果和利用第二处理器得到的运算结果完成对第一算子的测试。根据本公开上述实施方式的测试方法,可以验证第一算子的实现的正确性,从而确保第一网络的运算结果的准确性。
在一种可能的实现方式中,第一处理器和第二处理器可以是用于执行人工智能运算的人工智能处理器,人工智能运算可包括机器学习运算,类脑运算等。其中,机器学习运算包括神经网络运算、k-means运算、支持向量机运算等。该人工智能处理器可例如包括NPU(Neural-Network Processing Unit,神经网络处理单元)、DSP(Digital Signal Process,数字信号处理单元)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)芯片中的一种或组合。或者,第一处理器和第二处理器可以是通用处理器,例如中央处理单元CPU、图形处理单元GPU等。或者,第一处理器和第二处理器中的一者为人工智能处理器,另外一者为通用处理器。其中,第一处理器不同于第二处理器,本公开对第一处理器和第二处理器的具体类型不作限定。
在一种可能的实现方式中,第一网络可以是SSD网络,第二输入数据可以包括图像数据,或者也可以包括视频数据、音频数据等,本公开对此不作限定。SSD网络的前端部分可以用于分类和检测框等特征提取,以SSD网络为例,第一网络的前端部分的输出结果可以是第一处理器通过SSD网络的分类网络对输入的图像数据进行计算得到的多种不同尺寸的feature map。
如上所述,对于SSD网络,第一算子可以为检测算子(detection算子)。第一输入数据可以是检测算子的bottom层需要的数据,例如第一输入数据可以包括候选框、候选框的位置和候选框的置信值等具有实际物理意义的数据。从第一网络的前端部分的输出结果中获取检测算子的第一输入数据的具体方式可以采用相关现有技术,例如采用default box框对输出结果进行计算得到第一输入数据,本公开对此不作限定。
需要说明的是,尽管以SSD网络和检测算子对本公开的测试方法进行了说明,但是本公开不限于此,本公开的测试方法还可以推广到其他神经网络模型中,或者对其他需要具有物理意义的输入数据的算子的测试,等等。
在本实施方式中,为了正确的实现对检测算子的验证,对第一处理器中的第一网络和第二处理器中的第二网络输入相同的第二输入数据。
在一种可能的实现方式中,可以将第一输入数据中不同类型的数据存储在对应的文件中,比如将候选框存储在第一文件中、将候选框的位置存储在第二文件以及将候选框的置信值存储在第三文件中。
对于步骤S12,可以通过将第一输入数据赋值给第一算子,基于第一算子对第一输入数据进行处理,得到处理结果。对于检测算子,基于检测算子对第一输入数据进行检测,可以得到检测结果。例如,将文件中保存的bottom层需要的第一输入数据赋值给检测算子的bottom,由检测算子进行检测得到检测结果。
在一种可能的实现方式中,以SSD网络为例,运算结果可以为第二处理器通过SSD网络对输入的图像数据进行目标检测得到的检测结果。
在一种可能的实现方式中,运算结果可以是预先被存储在第一处理器中的存储单元中的,或者,也可以是第一处理器和第二处理器通过有线或无线的方式相连接,第二处理器在获得上述运算结果后,将所述运算结果发送给了第一处理器。本公开对此不作限定。
对于步骤S13,在一种可能的实现方式中,若所述处理结果和所述运算结果满足测试条件,则所述第一算子的实现是正确的。其中,测试条件可以为,处理结果与运算结果相同,或者处理结果与运算结果之间的误差值满足应的阈值条件,该阈值条件可以是一个范围值。本公开对测试条件的具体内容不作限定。
举例来说,对于检测算子,若检测结果和运算结果满足测试条件,则检测算子的实现是正确的,其中,测试条件可以为检测结果与运算结果相同,或者检测结果与运算结果之间的误差值满足阈值条件等。
另外,若所述处理结果和所述运算结果不满足所述测试条件,那么有可能第一算子的实现是不正确的,管理员可以进一步通过其他手段排查网络中的问题。
图2示出根据本公开一实施例的测试方法的流程图。如图2所示,所述方法还可以包括:
步骤S14,读取第一网络的网络信息;
步骤S15,根据第二输入数据以及所述网络信息,针对第一网络进行前向传播计算;
步骤S16,截取所述第一网络的前端部分的所述输出结果。
其中,第一网络的网络信息可以包括第一网络的网络结构、权值数据等。在一种可能的实现方式中,第一处理器可以通过读取prototxt文件获得第一网络的网络信息。
第一处理器可以将第二输入数据作为第一网络的输入数据,基于第一网络对第二输入数据进行前向传播计算。
在一种可能的实现方式中,以SSD网络为例,第一处理器可以截取前端部分的网络计算得到的feature map作为所述输出结果。
通过截取第一网络的中间结果,获得对输入数据进行标记的标记参数(第一输入数据),利用第一输入数据对第一网络中的后端部分的算子进行测试,可有效验证算子的正确性。该方法具有通用性可以推广到需要具有物理意义的输入数据的算子的测试。
图3示出根据本公开一实施例的测试装置的框图。该测试装置可以应用于第一处理器,所述装置用于测试第一网络中的第一算子,所述第一算子属于所述第一网络的后端部分,所述第一网络还包括前端部分。
所述装置可以包括:
获取单元31,用于从第一网络的前端部分的输出结果中获取第一算子的第一输入数据;其中,所述输出结果为基于第一网络的前端部分对第二输入数据进行运算得到的结果,所述第一输入数据是对第二输入数据中全部或部分数据进行标记的标记参数;
处理单元32,用于基于所述第一算子对所述第一输入数据进行处理,得到处理结果;
比较单元33,用于比较所述处理结果和运算结果完成对所述第一算子的测试。
其中,所述运算结果为第二处理器基于所述第一网络对第二输入数据进行运算得到的结果。
在一种可能的实现方式中,所述第一算子为检测算子,所述处理结果为检测结果。
在一种可能的实现方式中,所述第二输入数据包括图像数据,所述第一输入数据包括候选框、候选框的位置和候选框的置信值。
通过将相同的输入数据(第二输入数据)分别输入到第一处理器上的第一网络和第二处理器上的第一网络。第二处理器基于第一网络对第二输入数据进行运算得到运算结果。而对于第一处理器,通过获取作为中间结果的前端部分的输出结果中的第一输入数据,并基于第一算子对第一输入数据进行处理得到处理结果。第一处理器通过比较处理结果和利用第二处理器得到的运算结果完成对第一算子的测试。根据本公开上述实施方式的测试装置,可以验证第一算子的实现的正确性,从而确保最终的运算结果的准确性。
图4示出根据本公开一实施例的测试装置的框图。如图4所示,在一种可能的实现方式中,所述装置还包括:
读取单元34,用于读取第一网络的网络信息;
运算单元35,用于根据第二输入数据以及所述网络信息,针对所述第一网络进行前向传播计算;
截取单元36,用于截取所述第一网络的前端部分的输出结果。
在一种可能的实现方式中,所述比较单元33包括:
判断子单元331,用于若所述处理结果和所述运算结果满足测试条件,则所述第一算子的实现是正确的。
在一种可能的实现方式中,所述第一网络为SSD网络。
在一种可能的实现方式中,所述第一处理器和第二处理器为人工智能处理器或者通用处理器,且所述第一处理器不同于所述第二处理器。
在一种可能的实现方式中,所述第一处理器为人工智能处理器,所述第二处理器为通用处理器。
图5示出根据本公开一实施例的人工智能处理装置的框图。如图5所示,所述装置包括第一处理器41和第二处理器42,所述第一处理器41连接到所述第二处理器42,所述装置用于测试第一网络中的第一算子,所述第一算子属于所述第一网络的后端部分,所述第一网络还包括前端部分。
所述第一处理器41用于从第一网络的前端部分的输出结果中获取第一算子的第一输入数据,基于所述第一算子对所述第一输入数据进行处理,得到处理结果;其中,所述输出结果为基于第一网络的前端部分对第二输入数据进行计算得到的结果,所述第一输入数据是对第二输入数据中全部或部分数据进行标记的标记参数;
所述第二处理器42用于基于第一网络对第二输入数据进行计算,得到运算结果;
所述第二处理器42还用于将所述运算结果发送给所述第一处理器;
所述第一处理器41还用于比较所述处理结果和运算结果完成对所述第一算子的测试。
在一种可能的实现方式中,所述第一算子为检测算子,所述处理结果为检测结果。
在一种可能的实现方式中,所述第二输入数据包括图像数据,所述第一输入数据包括候选框、候选框的位置和候选框的置信值。或者,所述第二输入数据也可以包括视频数据等,本公开对此不作限定。在一种可能的实现方式中,第一处理器41和第二处理器42可以是用于执行人工智能运算的人工智能处理器,人工智能运算可包括机器学习运算,类脑运算等。其中,机器学习运算包括神经网络运算、k-means运算、支持向量机运算等。该人工智能处理器可例如包括NPU(Neural-Network Processing Unit,神经网络处理单元)、DSP(Digital Signal Process,数字信号处理单元)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)芯片中的一种或组合。或者,第一处理器和第二处理器可以是在通用处理器,例如中央处理单元CPU、图形处理单元GPU等;或者,第一处理器41和第二处理器42中的一者为人工智能处理器,另外一者为通用处理器。其中,第一处理器41不同于第二处理器42,本公开对第一处理器41和第二处理器42的具体类型不作限定。
在本实施方式中,为了正确的实现对第一算子的验证,对第一处理器中的第一网络和第二处理器中的第二网络输入相同的第二输入数据。
应用示例
为了更清楚的对本公开的测试方法和装置进行说明,下面以SSD网络为例对完整的过程进行介绍。
在本示例中,可以预先在GTest框架中设计GTest测试对SSD网络中的detection算子进行测试。第一处理器(人工智能处理器)可以运行GTest测试,读取SSD网络的网络信息,然后,根据第二输入数据以及所述网络信息,针对SSD网络进行前向传播计算,截取所述SSD网络的前端部分的网络的输出结果。从输出结果中获取detection算子需要的bottom输入层的第一输入数据,第一输入数据可以包括候选框、候选框的位置和候选框的置信值等,将第一输入数据中不同类型的数据存储在对应的文件中。将文件中相应的输入数据赋给相应的detection算子的bottom,得到检测结果。
另外,还可将第二输入数据作为第二处理器CPU上的SSD网络的输入数据,CPU通过SSD网络对第二输入数据进行运算得到运算结果,该运算结果可以预先被存储在MLU的存储单元中,或者由CPU发送给人工智能处理器。
人工智能处理器可以比较检测结果和运算结果完成对所述检测算子的测试:若检测结果和所述运算结果满足测试条件,则所述检测算子的实现是正确的;所述检测结果和所述运算结果不满足所述测试条件,那么有可能检测算子的实现是不正确的。
需要说明的是,上述示例仅仅是以SSD网络进行的举例说明,不以任何方式限制本公开,本公开的测试方法和装置还可以应用于其他的神经网络模型的测试。
图6是根据一示例性实施例示出的一种第一处理器的框图。
参阅图6,该第一处理器用于执行机器学习计算,该第一处理器包括:控制器单元141和运算单元142,其中,控制器单元141与运算单元142连接,该运算单元142包括:一个主处理电路和多个从处理电路;
控制器单元141,用于获取输入数据以及计算指令。
在一种可选方案中,一个主处理电路和多个从处理电路可以为树型结构、H型结构或者脉冲阵列机结构,本公开对主处理电路和从处理电路之前的连接方式不作限定。
在一种可选方案中,具体的,获取输入数据以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。
上述计算指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
控制器单元141,还用于解析该计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给所述主处理电路;
主处理电路101,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据以及运算指令;
多个从处理电路102,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
主处理电路101,用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。
本申请提供的技术方案将运算单元设置成一主多从结构,对于正向运算的计算指令,其可以将依据正向运算的计算指令将数据进行拆分,这样通过多个从处理电路即能够对计算量较大的部分进行并行运算,从而提高运算速度,节省运算时间,进而降低功耗。
可选的,上述机器学习计算具体可以包括:人工神经网络运算,上述输入数据具体可以包括:输入神经元数据和权值数据。上述计算结果具体可以为:人工神经网络运算的结果即输出神经元数据。
对于神经网络中的运算可以为神经网络中的一层的运算,对于多层神经网络,其实现过程是,在正向运算中,当上一层人工神经网络执行完成之后,下一层的运算指令会将运算单元中计算出的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值;在反向运算中,当上一层人工神经网络的反向运算执行完成后,下一层运算指令会将运算单元中计算出的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。
上述机器学习计算还可以包括支持向量机运算,k-近邻(k-nn)运算,k-均值(k-means)运算,主成分分析运算等等。为了描述的方便,下面以人工神经网络运算为例来说明机器学习计算的具体方案。
对于人工神经网络运算,如果该人工神经网络运算具有多层运算,多层运算的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络正向运算下层中的神经元即为输入神经元,处于网络正向运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有L层,K=1,2,...,L-1,对于第K层和第K+1层来说,我们将第K层称为输入层,其中的神经元为所述输入神经元,第K+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。
可选的,上述第二处理器还可以包括:该存储单元140和直接内存访问单元50,存储单元140可以包括:寄存器、缓存中的一个或任意组合,具体的,所述缓存,用于存储所述计算指令;所述寄存器,用于存储所述输入数据和标量;所述缓存为高速暂存缓存。直接内存访问单元50用于从存储单元10读取或存储数据。
可选的,该控制器单元包括:指令存储单元410、指令处理单元411和存储队列单元413;
指令存储单元410,用于存储所述人工神经网络运算关联的计算指令;
所述指令处理单元411,用于对所述计算指令解析得到多个运算指令;
存储队列单元413,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
举例说明,在一个可选的技术方案中,主运算处理电路也可以包括一个控制器单元,该控制器单元可以包括主指令处理单元,具体用于将指令译码成微指令。当然在另一种可选方案中,从运算处理电路也可以包括另一个控制器单元,该另一个控制器单元包括从指令处理单元,具体用于接收并处理微指令。上述微指令可以为指令的下一级指令,该微指令可以通过对指令的拆分或解码后获得,能被进一步解码为各部件、各单元或各处理电路的控制信号。
在一种可选方案中,该计算指令的结构可以如下表所示。
操作码 寄存器或立即数 寄存器/立即数
上表中的省略号表示可以包括多个寄存器或立即数。
在另一种可选方案中,该计算指令可以包括:一个或多个操作域以及一个操作码。该计算指令可以包括神经网络运算指令。以神经网络运算指令为例,如表1所示,其中,寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以为操作域。其中,每个寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以是一个或者多个寄存器的号码。
上述寄存器可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据,该数据具体可以为n维数据,n为大于等于1的整数,例如,n=1时,为1维数据,即向量,如n=2时,为2维数据,即矩阵,如n=3或3以上时,为多维张量。
可选的,该控制器单元还可以包括:
所述依赖关系处理单元412,用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (23)

1.一种测试方法,其特征在于,所述方法应用于第一处理器,所述方法用于测试第一网络中的第一算子,所述第一算子属于所述第一网络的后端部分,所述第一网络还包括前端部分,所述第一网络为神经网络;
所述方法包括:
从第一网络的前端部分的输出结果中获取第一算子的第一输入数据;其中,所述输出结果为基于第一网络的前端部分对第二输入数据进行运算得到的结果,所述第一输入数据是对第二输入数据中全部或部分数据进行标记的标记参数;
基于所述第一算子对所述第一输入数据进行处理,得到处理结果;
比较所述处理结果和运算结果完成对所述第一算子的测试;
其中,所述运算结果为第二处理器基于所述第一网络对第二输入数据进行运算得到的结果,所述第一处理器不同于所述第二处理器。
2.根据权利要求1所述的方法,其特征在于,所述第一算子为检测算子,所述处理结果为检测结果。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
读取第一网络的网络信息;
根据第二输入数据以及所述网络信息,针对第一网络进行前向传播计算;
截取所述第一网络的前端部分的所述输出结果。
4.根据权利要求1或2所述的方法,其特征在于,所述第二输入数据包括图像数据,所述第一输入数据包括候选框、候选框的位置和候选框的置信值。
5.根据权利要求1或2所述的方法,其特征在于,所述第一网络为SSD网络。
6.根据权利要求1所述的方法,其特征在于,比较所述处理结果和运算结果完成对所述第一算子的测试,包括:
若所述处理结果和所述运算结果满足测试条件,则所述第一算子的实现是正确的。
7.根据权利要求1所述的方法,其特征在于,所述第一处理器和第二处理器为人工智能处理器或者通用处理器。
8.根据权利要求7所述的方法,其特征在于,所述第一处理器为人工智能处理器,所述第二处理器为通用处理器。
9.一种测试装置,其特征在于,所述装置应用于第一处理器,所述装置用于测试第一网络中的第一算子,所述第一算子属于所述第一网络的后端部分,所述第一网络还包括前端部分,所述第一网络为神经网络;
所述装置包括:
获取单元,用于从第一网络的前端部分的输出结果中获取第一算子的第一输入数据;其中,所述输出结果为基于第一网络的前端部分对第二输入数据进行运算得到的结果,所述第一输入数据是对第二输入数据中全部或部分数据进行标记的标记参数;
处理单元,用于基于所述第一算子对所述第一输入数据进行处理,得到处理结果;
比较单元,用于比较所述处理结果和运算结果完成对所述第一算子的测试;
其中,所述运算结果为第二处理器基于所述第一网络对第二输入数据进行运算得到的结果,所述第一处理器不同于所述第二处理器。
10.根据权利要求9所述的装置,其特征在于,所述第一算子为检测算子,所述处理结果为检测结果。
11.根据权利要求9或10所述的装置,其特征在于,所述装置还包括:
读取单元,用于读取第一网络的网络信息;
运算单元,用于根据第二输入数据以及所述网络信息,针对所述第一网络进行前向传播计算;
截取单元,用于截取所述第一网络的前端部分的输出结果。
12.根据权利要求9或10所述的装置,其特征在于,所述第二输入数据包括图像数据,所述第一输入数据包括候选框、候选框的位置和候选框的置信值。
13.根据权利要求9或10所述的装置,其特征在于,所述第一网络为SSD网络。
14.根据权利要求9所述的装置,其特征在于,所述比较单元包括:
判断子单元,用于若所述处理结果和所述运算结果满足测试条件,则所述第一算子的实现是正确的。
15.根据权利要求9所述的装置,其特征在于,所述第一处理器和第二处理器为人工智能处理器或者通用处理器。
16.根据权利要求15所述的装置,其特征在于,所述第一处理器为人工智能处理器,所述第二处理器为通用处理器。
17.一种人工智能处理装置,其特征在于,所述装置用于测试第一网络中的第一算子,所述第一算子属于所述第一网络的后端部分,所述第一网络还包括前端部分,所述第一网络为神经网络;
所述装置包括第一处理器和第二处理器,所述第一处理器连接到所述第二处理器,所述第一处理器不同于所述第二处理器;
所述第一处理器用于从第一网络的前端部分的输出结果中获取第一算子的第一输入数据,基于所述第一算子对所述第一输入数据进行处理,得到处理结果;其中,所述输出结果为基于第一网络的前端部分对第二输入数据进行计算得到的结果,所述第一输入数据是对第二输入数据中全部或部分数据进行标记的标记参数;
所述第二处理器用于基于第一网络对第二输入数据进行计算,得到运算结果;
所述第二处理器用于将所述运算结果发送给所述第一处理器;
所述第一处理器用于比较所述处理结果和运算结果完成对所述第一算子的测试。
18.根据权利要求17所述的装置,其特征在于,所述第一算子为检测算子,所述处理结果为检测结果。
19.根据权利要求17或18所述的装置,其特征在于,
所述第一处理器和第二处理器为人工智能处理器或者通用处理器。
20.根据权利要求17或18所述的装置,其特征在于,
所述第一处理器为人工智能处理器,所述第二处理器为通用处理器。
21.根据权利要求17或18所述的装置,其特征在于,所述第二输入数据包括图像数据,所述第一输入数据包括候选框、候选框的位置和候选框的置信值。
22.一种计算机设备,包括存储器、处理器,所述存储器上存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述方法的步骤。
23.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述方法的步骤。
CN201811634962.7A 2018-12-29 2018-12-29 运算方法、装置及相关产品 Active CN109670586B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811634962.7A CN109670586B (zh) 2018-12-29 2018-12-29 运算方法、装置及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811634962.7A CN109670586B (zh) 2018-12-29 2018-12-29 运算方法、装置及相关产品

Publications (2)

Publication Number Publication Date
CN109670586A CN109670586A (zh) 2019-04-23
CN109670586B true CN109670586B (zh) 2019-11-12

Family

ID=66146920

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811634962.7A Active CN109670586B (zh) 2018-12-29 2018-12-29 运算方法、装置及相关产品

Country Status (1)

Country Link
CN (1) CN109670586B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111949317B (zh) * 2019-05-17 2023-04-07 上海寒武纪信息科技有限公司 指令处理方法、装置及相关产品
CN110188871B (zh) * 2019-05-31 2021-01-26 安徽寒武纪信息科技有限公司 运算方法、装置及相关产品
CN110489344A (zh) * 2019-08-02 2019-11-22 Oppo广东移动通信有限公司 引擎测试方法及相关产品
CN110647981B (zh) * 2019-09-23 2021-01-26 中科寒武纪科技股份有限公司 数据处理方法、装置、计算机设备和存储介质
CN112766470B (zh) * 2019-10-21 2024-05-07 地平线(上海)人工智能技术有限公司 特征数据处理方法、指令序列生成方法、装置及设备
CN112765541B (zh) * 2019-11-01 2024-02-23 中科寒武纪科技股份有限公司 数据处理方法、装置、计算机设备和存储介质
CN113033762B (zh) * 2019-12-09 2024-05-10 中科寒武纪科技股份有限公司 用于测试神经网络中算子精度的方法、装置和计算机可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1339751A (zh) * 2000-08-18 2002-03-13 郑易诚 人工智能处理运算系统
US8200594B1 (en) * 2008-09-10 2012-06-12 Nvidia Corporation System, method, and computer program product for accelerating a game artificial intelligence process
CN102947818A (zh) * 2010-05-19 2013-02-27 加利福尼亚大学董事会 神经处理单元
CN107436846A (zh) * 2017-08-04 2017-12-05 网易(杭州)网络有限公司 测试方法、装置、计算可读存储介质和计算设备
CN108052934A (zh) * 2018-01-29 2018-05-18 安徽云塔电子科技有限公司 一种智能传感器系统架构及其实现方法、装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180004823A1 (en) * 2010-05-26 2018-01-04 Automation Anywhere, Inc. System and method for data profile driven analytics

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1339751A (zh) * 2000-08-18 2002-03-13 郑易诚 人工智能处理运算系统
US8200594B1 (en) * 2008-09-10 2012-06-12 Nvidia Corporation System, method, and computer program product for accelerating a game artificial intelligence process
CN102947818A (zh) * 2010-05-19 2013-02-27 加利福尼亚大学董事会 神经处理单元
CN107436846A (zh) * 2017-08-04 2017-12-05 网易(杭州)网络有限公司 测试方法、装置、计算可读存储介质和计算设备
CN108052934A (zh) * 2018-01-29 2018-05-18 安徽云塔电子科技有限公司 一种智能传感器系统架构及其实现方法、装置

Also Published As

Publication number Publication date
CN109670586A (zh) 2019-04-23

Similar Documents

Publication Publication Date Title
CN109670586B (zh) 运算方法、装置及相关产品
CN108520220B (zh) 模型生成方法和装置
CN112184508B (zh) 一种用于图像处理的学生模型的训练方法及装置
US20180247405A1 (en) Automatic detection and semantic description of lesions using a convolutional neural network
US11790676B2 (en) Artificial intelligence assisted warranty verification
CN107220217A (zh) 基于逻辑回归的特征系数训练方法和装置
CN108229303A (zh) 检测识别和检测识别网络的训练方法及装置、设备、介质
US11308077B2 (en) Identifying source datasets that fit a transfer learning process for a target domain
CN108804141A (zh) 支持所学习的分支预测器
US10706205B2 (en) Detecting hotspots in physical design layout patterns utilizing hotspot detection model with data augmentation
US11501165B2 (en) Contrastive neural network training in an active learning environment
US20190019291A1 (en) Method and System for Image Analysis to Detect Cancer
US11481823B1 (en) Collaborative text detection and text recognition
CN111199474A (zh) 一种基于双方网络图数据的风险预测方法、装置和电子设备
CN110490304B (zh) 一种数据处理方法及设备
CN115861462B (zh) 图像生成模型的训练方法、装置、电子设备及存储介质
CN109993544A (zh) 数据处理方法、系统、计算机系统及计算机可读存储介质
US20230230408A1 (en) Methods, systems, articles of manufacture, and apparatus for decoding images
US20200342287A1 (en) Selective performance of deterministic computations for neural networks
CN112446777B (zh) 一种信用评估方法、装置、设备及存储介质
CN106920124A (zh) 一种数据采集和分析方法及装置
US11809375B2 (en) Multi-dimensional data labeling
CN115861610A (zh) 一种基于改进CondInst的砂石骨料图像的分割处理方法
US11366833B2 (en) Augmenting project data with searchable metadata for facilitating project queries
JP2023526462A (ja) 情報を処理するための方法及び装置

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
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing

Patentee after: Zhongke Cambrian Technology Co., Ltd

Address before: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing

Patentee before: Beijing Zhongke Cambrian Technology Co., Ltd.