CN113673664A - 数据溢出检测方法、装置、设备及存储介质 - Google Patents

数据溢出检测方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN113673664A
CN113673664A CN202010407061.5A CN202010407061A CN113673664A CN 113673664 A CN113673664 A CN 113673664A CN 202010407061 A CN202010407061 A CN 202010407061A CN 113673664 A CN113673664 A CN 113673664A
Authority
CN
China
Prior art keywords
layer
overflow
range
network
network layer
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
CN202010407061.5A
Other languages
English (en)
Other versions
CN113673664B (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.)
Hangzhou Hikvision Digital Technology Co Ltd
Original Assignee
Hangzhou Hikvision Digital 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 Hangzhou Hikvision Digital Technology Co Ltd filed Critical Hangzhou Hikvision Digital Technology Co Ltd
Priority to CN202010407061.5A priority Critical patent/CN113673664B/zh
Publication of CN113673664A publication Critical patent/CN113673664A/zh
Application granted granted Critical
Publication of CN113673664B publication Critical patent/CN113673664B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks

Landscapes

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

Abstract

本申请提供一种数据溢出检测方法、装置、设备及存储介质。该方法包括:获取用于部署深度学习网络的硬件平台的定点运算资源信息;根据预置的初始数值范围和各个网络层的范围钳制函数,按照所述深度学习网络的前向运算顺序,逐层确定各个网络层的第一数值范围;根据各个网络层的第一数值范围、网络参数和所述定点运算资源信息,对所述深度学习网络进行数据溢出检测,得到溢出检测结果。本申请能够使确定出的各个网络层的输入特征图的数值范围更为精准,进而有效提高网络溢出检测的精准性。

Description

数据溢出检测方法、装置、设备及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据溢出检测方法、装置、设备及存储介质。
背景技术
为了加速深度学习网络的端到端的前向推理时间,一般会将训练好的浮点的深度学习网络进行定点化。定点化后的深度学习网络可以运行于摄像机、手机、车载终端等终端的硬件平台上。硬件平台通过乘累加方式实现这些网络层的卷积运算时,有时乘累加的数据结果会超出硬件平台的寄存器位宽,出现数据溢出,导致网络最终的输出结果异常。为防止数据溢出,可以在定点化的深度学习网络运行于硬件平台之前,首先对网络进行数据溢出检测。
一般地,对于定点化的深度学习网络中的每个网络层单独进行数据溢出检测,计算该网络层的输出特征图的数值范围。若输出特征图的数值范围超过硬件平台运行深度学习网络所使用的寄存器位宽对应的数值范围,则判断该网络层存在溢出风险。
然而,目前的数据溢出检测方式容易将实际不会溢出的网络层误检测为存在溢出风险的网络层,检测精度低。
发明内容
本申请实施例提供一种数据溢出检测方法、装置、设备及存储介质,以解决目前对深度学习网络进行数据溢出检测的检测精度低的问题。
第一方面,本申请实施例提供一种数据溢出检测方法,所述方法应用于检测平台,所述方法,包括:
获取用于部署深度学习网络的硬件平台的定点运算资源信息,其中,所述深度学习网络包括多个网络层,所述深度学习网络的网络参数为定点化数据;
根据预置的初始数值范围和各个网络层的范围钳制函数,按照所述深度学习网络的前向运算顺序,逐层确定各个网络层的第一数值范围,其中,一个网络层的范围钳制函数表征该网络层的网络运算特性,所述第一数值范围为网络层的输入特征图的数值范围;
根据各个网络层的第一数值范围、网络参数和所述定点运算资源信息,对所述深度学习网络进行数据溢出检测,得到溢出检测结果,其中,所述溢出检测结果用于所述硬件平台调用与所述溢出检测结果对应的定点运算资源以运行所述深度学习网络。
第二方面,本申请实施例提供一种数据溢出检测装置,包括:
获取模块,用于获取用于部署深度学习网络的硬件平台的定点运算资源信息,其中,所述深度学习网络包括多个网络层,所述深度学习网络的网络参数为定点化数据;
处理模块,用于根据预置的初始数值范围和各个网络层的范围钳制函数,按照所述深度学习网络的前向运算顺序,逐层确定各个网络层的第一数值范围,其中,一个网络层的范围钳制函数表征该网络层的网络运算特性,所述第一数值范围为网络层的输入特征图的数值范围;
检测模块,用于根据各个网络层的第一数值范围、网络参数和所述定点运算资源信息,对所述深度学习网络进行数据溢出检测,得到溢出检测结果,其中,所述溢出检测结果用于所述硬件平台调用与所述溢出检测结果对应的定点运算资源以运行所述深度学习网络。
第三方面,本申请实施例提供一种数据溢出检测设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的实施方式所述的数据溢出检测方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的实施方式所述的数据溢出检测方法。
本申请实施例提供的数据溢出检测方法、装置、设备及存储介质,获取用于部署深度学习网络的硬件平台的定点运算资源信息,其中,深度学习网络的网络参数为定点化数据,根据预置的初始数值范围和该深度学习网络的各个网络层的范围钳制函数,按照该深度学习网络的前向运算顺序,逐层确定各个网络层的第一数值范围,其中,一个网络层的范围钳制函数表征该网络层的网络运算特性,第一数值范围为网络层的输入特征图的数值范围;然后根据各个网络层的第一数值范围、网络参数和定点运算资源信息,对该深度学习网络进行数据溢出检测,得到溢出检测结果。本申请实施例通过表征各个网络层的网络运算特性的范围钳制函数,按照前向运算顺序逐层确定各个网络层的输入特征的数值范围,在确定各个网络层的输入特征图的数值范围时考虑到该层之前的网络层对其数值范围的影响,从而使确定出的各个网络层的输入特征图的数值范围更为精准,进而有效提高数据溢出检测的精准性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的数据溢出检测系统的架构示意图;
图2为本申请一实施例提供的数据溢出检测方法的流程示意图;
图3为本申请又一实施例提供的数据溢出检测方法的流程示意图;
图4为本申请实施例提供的确定各个网络层的第一数值范围的程序流程图;
图5为本申请另一实施例提供的数据溢出检测方法的流程示意图;
图6为本申请再一实施例提供的数据溢出检测方法的流程示意图;
图7为本申请实施例提供的数据溢出检测方法中确定该溢出层的溢出点位置的流程示意图;
图8为本申请实施例提供的深度学习网络中多通道的卷积核的示意图;
图9为本申请一实施例提供的数据溢出检测装置的结构示意图;
图10为本申请又一实施例提供的数据溢出检测装置的结构示意图;
图11为本申请一实施例提供的数据溢出检测设备的硬件结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前深度学习网络的应用越来越广泛,例如可以应用于对图像、音频、文本等进行识别。为了加速深度学习网络的端到端的前向推理时间,可以将训练好的浮点的深度学习网络进行定点化,在保证深度学习网络精度的同时,以期获得更快的运行速度。定点化后的深度学习网络采用定点数进行运算,运行速度更快,可以运行于摄像机、手机、车载终端等终端上,这些终端通常采用如数字信号处理器(Digital Signal Processor,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)等低功耗、适合定点运算的硬件平台。随着深度学习网络越来越复杂,深度学习网络中的卷积层和全连接层等网络层的通道数也越来越大。硬件平台通过乘累加方式实现这些网络层的卷积运算时,有时乘累加的数据结果会超出硬件平台的寄存器位宽,出现数据溢出,导致深度学习网络最终的输出结果异常。为防止数据溢出,可以在定点化的深度学习网络运行于某硬件平台之前,首先对深度学习网络进行数据溢出检测,以检测该硬件平台所使用的寄存器位宽运行深度学习网络是否存在数据溢出的风险。若检测出存在数据溢出风险,可以对深度学习网络进行调整以适用于该硬件平台,或者选用寄存器位宽更宽的硬件平台运行该深度学习网络。
一般地,对于定点化的深度学习网络中的每个网络层单独进行数据溢出检测。对于其中的一个网络层,将该网络层的输入特征图的数值范围取为特征图的极限范围,根据该网络层的输入特征图的数值范围,计算该网络层的输出特征图的数值范围。其中,特征图的极限范围是指特征图所采用的数据类型所能表示的最大范围,例如unsigned char类型的极限范围是0-255,如果特征图的数据采用unsigned char类型,则特征图的极限范围为0-255。若该输出特征图的数值范围超过硬件平台所使用的寄存器位宽对应的数值范围,则判断该网络层存在溢出风险。
然而,由于在实际运行中,深度学习网络中的网络层之间的特征图是存在关系的,上一网络层的输出特征图作为下一网络层的输入特征图,因此,某个网络层的输入特征图的数值范围会受到该网络层之前的网络层的影响,其实际的数值范围并不能达到特征图的极限范围。对某个网络层单独进行数据溢出检测时,如果采用特征图的极限范围作为该网络层的输入特征图的数值范围,会导致输入特征图的数值范围过大,进而导致计算出的输出特征图的数值范围过大,容易将实际不会溢出的网络层误检测为存在溢出风险,检测精度低。
另外,由于硬件平台通常采用单指令多数据流SIMD的运算方式,运算数据的位宽越窄,硬件平台单个周期所能做的操作越多,运行效率越高。如果按照现有的溢出检测方式得到溢出检测结果,根据溢出检测结果确定硬件平台所使用的寄存器位宽,会导致确定出的寄存器位宽过大,从而导致硬件平台使用过大的寄存器位宽运行深度学习网络,造成硬件平台的资源浪费,影响网络运行效率。
本申请实施例通过表征各个网络层的网络运算特性的范围钳制函数,按照前向运算顺序逐层确定各个网络层的输入特征的数值范围,在确定各个网络层的输入特征图的数值范围时考虑到该层之前的网络层对其数值范围的影响,从而使确定出的各个网络层的输入特征图的数值范围更为精准,进而有效提高网络溢出检测的精准性。
图1为本申请一实施例提供的溢出检测系统的架构示意图。如图1所示,本实施例提供的溢出检测系统包括数据溢出检测设备11和终端设备12。其中,数据溢出检测设备11可以为台式计算机、笔记本电脑、服务器等。终端设备12可以为摄像机、手机、车载终端等。终端设备12上用于运行深度学习网络的硬件平台可以包括但不限于DSP、FPGA、图形处理器(Graphics Processing Unit,GPU)、专用集成电路(Application Specific IntegratedCircuit,ASIC)、RISC微处理器(Advanced RISC Machines,ARM)等。为便于描述,将数据溢出检测设备11上运行本实施例提供的数据溢出检测方法所对应的计算机程序的平台,称为检测平台。
在一种可能的场景中,数据溢出检测设备11的检测平台的寄存器位宽可以高于深度学习网络所要部署的硬件平台的寄存器位宽,例如,数据溢出检测设备11可以是台式计算机,检测平台可以是台式计算机中的中央处理器(Central Processing Unit,CPU),终端设备12可以是摄像机,硬件平台可以是摄像机中的ARM。在该场景中,数据溢出检测设备11执行本实施例所提供的数据溢出检测方法,对深度学习网络进行数据溢出检测。若不存在数据溢出风险,则数据溢出检测设备11或由用户通过其他设备将深度学习网络部署到终端设备12的硬件平台上运行。若存在数据溢出风险,则可以有以下两种方式处理:方式一,由用户对深度学习网络进行调整,将调整后的不存在溢出风险的深度学习网络部署到终端设备12的硬件平台上;方式二,数据溢出检测设备11将溢出检测结果添加到深度学习网络的网络参数中,然后数据溢出检测设备11或由用户通过其他设备将深度学习网络部署到终端设备12的硬件平台上,终端设备12的硬件平台在运行深度学习网络过程中,根据溢出检测结果对于不存在溢出风险的网络层使用位宽较窄的寄存器进行计算,对于存在溢出风险的网络层使用位宽较宽的寄存器进行计算,从而既保证网络运行效率,又能防止数据溢出。
在一种可能的场景中,数据溢出检测设备11和终端设备12可以为同一设备,此时检测平台和硬件平台为同一平台。该平台运行数据溢出检测方法和运行深度学习网络所采用的寄存器位宽不同,或者数据类型不同。例如该平台运行数据溢出检测方法所采用的数据类型为浮点型,运行深度学习网络所采用的数据类型为整型。以数据溢出检测设备11和终端设备12为同一摄像机为例,用户将深度学习网络部署到摄像机后,摄像机首先调用最大位宽的寄存器执行数据溢出检测方法,对该深度学习网络进行检测。若不存在数据溢出风险,则通过多次运行数据溢出检测方法来检测支持深度学习网络不溢出的寄存器的最小位宽,然后在运行深度学习网络时使用该最小位宽的寄存器进行计算,从而在确保不发生数据溢出的情况下提升网络运行效率。本实施例提供的数据溢出检测方法还可以应用于其他的场景,在此不作限定。
图2为本申请一实施例提供的数据溢出检测方法的流程示意图。如图2所示,该方法应用于检测平台,包括:
S201、获取用于部署深度学习网络的硬件平台的定点运算资源信息,其中,所述深度学习网络包括多个网络层,所述深度学习网络的网络参数为定点化数据。
本实施例中,待检测的深度学习网络为经过定点化处理的深度学习网络,其中的网络参数均为定点化数据。用于部署深度学习网络的硬件平台可以包括但不限于DSP、FPGA、GPU、ASIC、ARM等。定点运算资源信息为硬件平台运行深度学习网络所使用的进行定点数运算的资源信息。检测平台可以接收用户输入的待检测的深度学习网络以及用于部署该深度学习网络的硬件平台的定点运算资源信息,或者检测平台可以从硬件平台获取其定点运算资源信息。
可选地,所述定点运算资源信息包括寄存器位宽和数据类型;或者,所述定点运算资源信息包括第三数值范围,其中,所述第三数值范围为所述硬件平台运行所述深度学习网络时所支持的定点数据的数值范围;
在所述定点运算资源信息包括寄存器位宽和数据类型时,该方法还可以包括:
根据所述寄存器位宽和所述数据类型,计算第三数值范围。
其中,寄存器位宽为硬件平台运行深度学习网络所使用的寄存器位宽,位宽越大,则硬件平台所支持的定点运算的数值范围越大。数据类型为硬件平台运行深度学习网络所使用的数据类型,可以为有符号型或无符号型。第三数值范围为硬件平台运行深度学习网络时所支持的定点运算的数值范围。若获取到的定点运算资源信息中不包含数值范围,则检测平台可以根据硬件平台的寄存器位宽和数据类型计算第三数值范围。例如,若寄存器位宽为bw,数据类型为有符号型,则硬件平台的数值范围为[-2bw-1,2bw-1-1]。
S202、根据预置的初始数值范围和各个网络层的范围钳制函数,按照所述深度学习网络的前向运算顺序,逐层确定各个网络层的第一数值范围,其中,一个网络层的范围钳制函数表征该网络层的网络运算特性,所述第一数值范围为网络层的输入特征图的数值范围。
本实施例中,每个网络层都有其自身的网络运算特性,例如,激活函数层是利用激活函数对输入的特征图进行运算,批量归一化(Batch Normalization,BN)层是根据归一化函数对输入的特征图进行运算等。为便于描述,本实施例中将溢出检测过程中,网络层的输入特征图的数值范围称为第一数值范围,将网络层的输出特征图的数值范围称为第二数值范围。
检测平台可以首先确定出深度学习网络每个网络层的范围钳制函数,一个网络层的范围钳制函数表征该网络层的网络运算特性,然后将初始数值范围作为深度学习网络的前向运算顺序的第一个网络层的第一数值范围,根据第一个网络层的第一数值范围和第一网络层的范围钳制函数,确定出第一个网络层的第二数值范围。由于深度学习网络中,第一个网络层的输出特征图会作为第二个网络层的输入特征图,因此,检测平台将第一个网络层的第二数值范围作为第二个网络层的第一数值范围,按照与上述确定第一网络层的第二数值范围的相同方式,确定第二个网络层的第二数值范围。依次类推,逐层确定出各个网络层的第一数值范围,直到深度学习网络的最后一层。需要注意的是,检测平台并没有运行深度学习网络,没有向深度学习网络输入特征图进行计算,检测平台仅是根据每个网络层的范围钳制函数和给出的输入特征图的取值范围,去估算网络层的输出特征图的取值范围。
检测平台确定每个网络层的范围钳制函数可以包括但不限于以下两种实现方式:第一种实现方式,由用户根据深度学习网络中各网络层的网络运算特性确定出各网络层的范围钳制函数,将各网络层的范围钳制函数输入到检测平台。第二种实现方式,检测平台预置不同的网络层类型对应的范围钳制函数模板;根据待检测的深度学习网络的各个网络层的类型,确定各网络层对应的范围钳制函数模板;然后根据各网络层对应的范围钳制函数模板和网络参数确定出各网络层的范围钳制函数。其中,检测平台预置的网络层类型对应的范围钳制函数模板可以由用户进行编辑、增加或删除等管理。
为了对深度学习网络进行数据溢出检测,检测平台需要估计出网络层的输出特征图中数据的数值范围,其估计的越精确则溢出检测越精确。在待检测的深度学习网络的网络参数都是固定的前提下,估计精确性受网络层的输入特征图的数值范围的影响。网络层的输入特征图的数值范围与实际运行时网络层的输入特征图的数值范围越接近,则输出特征图的估计精度越高,溢出检测越精确。本实施例提出一种全局正序估计数值范围的方式,按照深度学习网络的前向运算顺序,逐层估计各个网络层的第二数值范围作为下一层的第一数值范围,使得估计出的网络层的第一数值范围可以利用网络全局信息来进行约束,能够有效提高网络层的第一数值范围的估计精度,进而有效提高溢出检测精度。
S203、根据各个网络层的第一数值范围、网络参数和所述定点运算资源信息,对所述深度学习网络进行数据溢出检测,得到溢出检测结果。
本实施例中,检测平台可以根据各个网络层的第一数值范围和网络参数,估计各个网络层的预测数值范围,然后对比各个网络层的预测数值范围与定点运算资源信息对应的数值范围,检测各个网络层是否存在溢出风险,得到溢出检测结果。溢出检测结果可以包含指示待检测的深度学习网络是否存在溢出风险的信息。可选的,在深度学习网络存在溢出风险时,溢出检测结果可以包括存在溢出风险的网络层的标识。溢出检测结果还可以包括每个存在溢出风险的网络层中的溢出点位置。其中,溢出点位置的检测方式将在后续实施例中说明,此处先不做叙述。
本申请实施例中,获取用于部署深度学习网络的硬件平台的定点运算资源信息,其中,深度学习网络的网络参数为定点化数据,根据预置的初始数值范围和该深度学习网络的各个网络层的范围钳制函数,按照该深度学习网络的前向运算顺序,逐层确定各个网络层的第一数值范围,其中,一个网络层的范围钳制函数表征该网络层的网络运算特性,第一数值范围为网络层的输入特征图的数值范围;然后根据各个网络层的第一数值范围、网络参数和定点运算资源信息,对该深度学习网络进行数据溢出检测,得到溢出检测结果。本申请实施例通过表征各个网络层的网络运算特性的范围钳制函数,按照前向运算顺序逐层确定各个网络层的输入特征的数值范围,在确定各个网络层的输入特征图的数值范围时考虑到该层之前的网络层对其数值范围的影响,从而使确定出的各个网络层的输入特征图的数值范围更为精准,进而有效提高数据溢出检测的精准性。
可选地,S203之后,上述方法还可以包括:
若所述溢出检测结果表征所述深度学习网络存在溢出风险,则调整所述深度学习网络,并将调整后的深度学习网络传输至所述硬件平台,其中,所述调整后的深度学习网络用于处理待处理数据;
或者,将所述溢出检测结果添加到待输出的文件中或者所述深度学习网络的网络参数中。
在一种实施方式中,可以对存在溢出风险的深度学习网络进行调整。调整深度学习网络是指对深度学习网络中的存在溢出风险的网络层的结构进行调整,以克服数据溢出的问题。调整深度学习网络可以是检测平台自动调整,也可以是由用户人工进行调整,在此不作限定。硬件平台运行调整后的深度学习网络,对图像、音频、文本等待处理数据进行处理。
在另一实施方式中,检测平台可以将溢出检测结果保存到深度学习网络的网络参数中,以便硬件平台在运行深度学习网络时获取溢出检测结果,调用相应的寄存器资源。例如,硬件平台可以根据溢出检测结果,在进行深度学习网络中存在溢出风险的网络层的运算时调用更大的寄存器位宽,以防止这些层运算时发生数据溢出。通过溢出检测结果,使硬件平台可以对于不存在溢出风险的深度学习网络或者深度学习网络中不存在溢出风险的网络层,使用普通位宽的寄存器计算,对于溢出网络中的溢出层使用位宽更大的寄存器计算,这样既保证网络运行效率,又能满足网络正确性。
可选地,检测平台可以将溢出检测结果添加到待输出的文件中,以便用户将待输出的文件进行保存或打印。检测平台也可以将溢出检测结果以文本或者拓扑图等方式显示在屏幕上,以便用户查看。
图3为本申请又一实施例提供的数据溢出检测方法的流程示意图。本实施例中对逐层确定各个网络层的第一数值范围的具体实现过程进行了详细说明。如图3所示,该方法包括:
S301、获取用于部署深度学习网络的硬件平台的定点运算资源信息,其中,所述深度学习网络包括多个网络层,所述深度学习网络的网络参数为定点化数据。
本实施例中,S301与图2实施例中的S201类似,此处不再赘述。
可选地,S301之后,S302之前,上述方法还可以包括:
对所述深度学习网络进行解析,得到所述深度学习网络的网络拓扑;
根据所述深度学习网络的网络拓扑,确定所述深度学习网络的前向运算顺序。
本实施例中,检测平台接收待检测的深度学网络后,可以对深度学习网络进行解析,得到深度学习网络的网络拓扑,具体的网络解析方法在此不作限定。然后检测平台根据解析到的网络拓扑,可以确定深度学习网络的前向运算顺序。
S302、针对每个网络层,根据当前网络层的第一数值范围和范围钳制函数,确定当前网络层的第二数值范围,并将当前网络层的第二数值范围作为下一网络层的第一数值范围,其中,所述第二数值范围为当前网络层的输出特征图的数值范围,所述深度学习网络的前向运算顺序中第一个网络层的第一数值范围为所述初始数值范围。
本实施例中,初始数值范围可以是特征图的极限范围,也可以是由用户根据深度学习网络的实际运行需求所设置的数据范围,在此不作限定。例如,对于某个处理图像的深度学习网络,其初始数值范围可以是图像的特征图所能允许的极限范围,即图像的特征图中的每个点的数值均不可能超出该范围。例如,该极限范围可以为[-128,127]。按照深度学习网络的前向运算顺序,将初始数值范围作为第一个网络层的第一数值范围,根据第一个网络层的第一数值范围和范围钳制函数,确定第一个网络层的第二数值范围,并将第一个网络层的第二数值范围作为第二个网络层的第一数值范围,然后按照同样的方式确定之后的每个网络层的第一数值范围。
可选地,S302可以包括:
将所述初始数值范围作为所述深度学习网络的前向运算顺序中第一个网络层的第一数值范围,并将所述第一个网络层作为待处理的网络层;
根据待处理的网络层的第一数值范围和范围钳制函数,计算待处理的网络层的第二数值范围;
判断待处理的网络层是否为所述深度学习网络的前向运算顺序中的最后一个网络层,若不是,则将待处理的网络层的第二数值范围作为下一网络层的第一数值范围,并将该下一网络层作为待处理的网络层,跳转至以下步骤:根据待处理的网络层的第一数值范围和范围钳制函数,确定待处理的网络层的第二数值范围。
本实施例中,检测平台可以以上述方式逐层确定各个网络层的第一数值范围。图4为本申请实施例提供的确定各个网络层的第一数值范围的程序流程图。参照图4,检测平台按照深度学习网络的前向运算顺序每次选择一个网络层作为待处理层,根据待处理的网络层的第一数值范围和范围钳制函数,计算待处理的网络层的第二数值范围,然后待处理的网络层的第二数值范围作为下一网络层的第一数值范围,继续选择对下一网络层进行处理,直到最后一个网络层,然后保存各个网络层的第一数值范围。
可选地,所述深度学习网络的网络层包括以下中的至少一种:
整流线性单元Relu层、Prelu层、双曲正切Tanh层、批量归一化BN层、卷积Conv层;
Relu层的范围钳制函数用于表征将零作为第二数值范围的下限值,将第一数值范围的上限值作为第二数值范围的上限值;
Prelu层的范围钳制函数用于表征根据该网络层的网络参数和第一数值范围的下限值,得到第二数值范围的下限值,并将第一数值范围的上限值作为第二数值范围的上限值;
Tanh层的范围钳制函数用于表征将第一数值范围的下限值的双曲正切值作为第二数值范围的下限值,将第一数值范围的上限值的双曲正切值作为第二数值范围的上限值;
BN层的范围钳制函数用于表征根据该网络层的网络参数和第一数值范围的下限值,得到第二数值范围的下限值,并根据该网络层的网络参数和第一数值范围的上限值,得到第二数值范围的上限值;
Conv层的范围钳制函数用于表征将特征图的定点数据的最小值作为第二数值范围的下限值,并将特征图的定点数据的最大值作为第二数值范围的下限值。
本实施例中,不同类型的网络层都有其不同的网络运算特性,检测平台可以预置一个或多个网络层的范围钳制函数,在执行S302时根据预置的范围钳制函数和各个网络层的网络参数确定各个网络层的范围钳制函数。
例如,对于某个Relu层,当该Relu层的输入特征图的数值范围为[a,b]时,根据该Relu层的范围钳制函数,得到该Relu层的输出特征图的数值范围为[0,b]。在一个示例中,该Relu层的输入特征图的数值范围为[-100,100],则该Relu层的输出特征图的数值范围为[0,100];在另一示例中,该Relu层的输入特征图的数值范围为[0,120],则该Relu层的输出特征图的数值范围为[0,120]。
对于某个Prelu层,当该Prelu层的输入特征图的数值范围为[a,b]时,根据该Prelu层的范围钳制函数,得到该Prelu层的输出特征图的数值范围为[alpha*a,b],其中alpha为该Prelu层的网络参数,检测平台可以从深度学习网络中的网络参数获得。在一个示例中,该Prelu层的输入特征图的数值范围为[-100,100],假设alpha为0.3,则该Prelu层的输出特征图的数值范围为[-30,100];在另一示例中,该Prelu层的输入特征图的数值范围为[0,120],假设alpha为0.3,则该Prelu层的输出特征图的数值范围为[0.3*0,120]。
对于某个Tanh层,当该Tanh层的输入特征图的数值范围为[a,b]时,根据该Tanh层的范围钳制函数,得到该Tanh层的输出特征图的数值范围为[tanh(a),tanh(b)]。在一个示例中,该Tanh层的输入特征图的数值范围为[-100,100],则该Tanh层的输出特征图的数值范围为[tanh(-100),tanh(100)];在另一示例中,该Tanh层的输入特征图的数值范围为[0,120],则该Tanh层的输出特征图的数值范围为[tanh(0),tanh(120)]。
对于某个BN层,当该BN层的输入特征图的数值范围为[a,b]时,根据该BN层的范围钳制函数,得到该BN层的输出特征图的数值范围为[alpha*a+beta,alpha*b+beta],其中,alpha、beta均为该BN层的网络参数,检测平台可以从深度学习网络中的网络参数获得。在一个示例中,该BN层的输入特征图的数值范围为[-100,100],则该BN层的输出特征图的数值范围为[alpha*(-100)+beta,alpha*100+beta];在另一示例中,该BN层的输入特征图的数值范围为[0,120],则该BN层的输出特征图的数值范围为[alpha*0+beta,alpha*120+beta]。
对于某个Conv层,当该Conv层的输入特征图的数值范围为[a,b]时,根据该Conv层的范围钳制函数,得到该Conv层的输出特征图的数值范围为特征图的极限范围。由于输入特征图经过卷积运算后的数据范围可能增大到极限范围,因此将卷积层的输出特征图的数值范围扩大到特征图的极限范围,以保证溢出检测不存在漏检的情况。假设特征图的极限范围为[-128,127],在一个示例中,该Conv层的输入特征图的数值范围为[-100,100],则该Conv层的输出特征图的数值范围为[-128,127];在另一示例中,该Conv层的输入特征图的数值范围为[0,120],则该Conv层的输出特征图的数值范围为[-128,127]。
需要注意的是,网络层的范围钳制函数可以是任意形式(如线性、非线性等)的,用户可根据网络层的实现方式和网络运算特性等自己定义相应的范围钳制函数。范围钳制函数制定的原则是:(1)结合网络层的计算原理进行设计;(2)尽可能缩小输出特征图的数值范围,在保证范围正确的前提下,输出特征图的数值范围越小,则后续进行的溢出检测越准确。
S303、根据各个网络层的第一数值范围、网络参数和所述定点运算资源信息,对所述深度学习网络进行数据溢出检测,得到溢出检测结果。
本实施例中,S303与图2实施例中的S203类似,此处不再赘述。
本实施例根据初始数值范围和各网络层的范围钳制函数确定各个网络层的第一数值范围,能够利用网络全局信息来对网络层的输入特征图的数值范围进行约束,使网络层的输入特征图的数值范围更精确,进而能够有效提高溢出检测精度。
图5为本申请另一实施例提供的数据溢出检测方法的流程示意图。本实施例中对深度学习网络进行检测的具体实现过程进行了详细说明。如图5所示,该方法包括:
S501、获取用于部署深度学习网络的硬件平台的定点运算资源信息,其中,所述深度学习网络包括多个网络层,所述深度学习网络的网络参数为定点化数据。
本实施例中,S501与图2实施例中的S201类似,此处不再赘述。
S502、根据预置的初始数值范围和各个网络层的范围钳制函数,按照所述深度学习网络的前向运算顺序,逐层确定各个网络层的第一数值范围,其中,一个网络层的范围钳制函数表征该网络层的网络运算特性,所述第一数值范围为网络层的输入特征图的数值范围。
本实施例中,S502与图2实施例中的S202类似,此处不再赘述。
S503、根据所述定点运算资源信息,确定第三数值范围,其中,所述第三数值范围为所述硬件平台运行所述深度学习网络时所支持的定点数据的数值范围。
本实施例中,定点运算资源信息可以包括硬件平台的寄存器位宽和定点数据的数据类型。检测平台可以根据定点运算资源信息确定出硬件平台运行深度学习网络所支持的定点数据的第三数值范围。第三数值范围用于作为是否存在溢出风险的判断阈值。例如,若硬件平台运行深度学习网络所使用的寄存器位宽为bw,数据类型为有符号型,则确定第三数值范围为[-2bw-1,2bw-1-1]。以硬件平台运行深度学习网络所使用的寄存器位宽为8,数据类型为有符号型为例,则硬件平台运行深度学习网络时所支持的定点数据的数值范围,即第三数值范围为[-128,127]。在硬件平台实际运行深度学习网络时,如果运算过程中存在超过该第三数值范围的数据,则发生数据溢出;如果运算过程中的所有的定点数据都未超过该第三数值范围,则没有发生数据溢出。需要注意的是,S503与S502的顺序在此不作限定,S503可以在S502之前,也可以在S502之后,S503与S502也可以同时进行。
S504、根据每个目标网络层的第一数值范围、网络参数和所述第三数值范围,对每个目标网络层进行数据溢出检测,得到溢出检测结果,其中,所述目标网络层为所述深度学习网络中存在乘累加操作的网络层。
本实施例中,对深度学习网络进行检测是对深度学习网络中存在乘累加操作的网络层进行检测。在此将存在乘累加操作的网络层称为目标网络层。可选地,目标网络层可以包括但不限于以下中的至少一种:卷积层、全连接层。由于目标网络层运算时会存在大量的乘累加操作,可能导致数据溢出,因此针对每个目标网络层均进行数据溢出检测。目标网络层的网络参数包括目标网络层的卷积核。检测平台可以根据每个目标网络层的第一数值范围和网络参数,估计每个目标网络层的预测数值范围,预测数据范围表征该目标网络层实际进行乘累加操作所可能得到的最小数值和最大数值所形成的范围。然后对比每个目标网络层的预测数值范围和第三数值范围,确定每个目标网络层是否存在溢出风险。
可选地,所述目标网络层包括至少一个卷积核,S504可以包括:
针对每个目标网络层,根据该目标网络层的第一数值范围和网络参数,计算该目标网络层的各个卷积核对应的预测数值范围,根据该目标网络层的各个卷积核对应的预测数值范围和所述第三数值范围,确定该目标网络层的各个卷积核对应的数据运算是否存在溢出风险,并在该目标网络层中存在至少一个溢出卷积核时,确定该目标网络层存在溢出风险,将该目标网络层的标识记录到所述溢出检测结果中,其中,所述溢出卷积核为对应的数据运算存在溢出风险的卷积核。
本实施例中,在目标网络层存在多个卷积核时,根据各个卷积核对应的数据运算是否存在溢出风险,确定该目标网络层是否存在溢出风险。检测平台可以分别对深度学习网络的每个目标网络层进行检测。下面以一个目标网络层A的检测过程为例进行说明。假设目标网络层A包含2个卷积核,分别为A1,A2。检测平台可以根据目标网络层A的第一数值范围和A1,A2,分别计算A1对应的预测数值范围,以及A2对应的预测数值范围。其中,一个卷积核对应的预测数值范围为该卷积核与目标网络层的输入特征图进行数据运算的结果的数值范围。然后检测平台对比A1对应的预测数值范围与第三数值范围,确定A1对应的数据运算是否存在溢出风险;对比A2对应的预测数值范围与第三数值范围,确定A2对应的数据运算是否存在溢出风险。如果A1和A2中的至少一个对应的数据运算存在溢出风险,则判断目标网络层A存在溢出风险。如果A1和A2对应的数据运算都不存在溢出风险,则判断目标网络层A不存在溢出风险。
可选地,上述“根据该目标网络层的第一数值范围和网络参数,计算该目标网络层的各个卷积核对应的预测数值范围”的步骤,可以通过以下方式实现:
针对该目标网络层的每个卷积核,根据该目标网络层的网络参数,确定该卷积核中所有正的系数的第一和值,所有负的系数的第二和值、以及定点化的偏置项;
针对该目标网络层的每个卷积核,根据所述第一和值与该目标网络层的第一数值范围的上限值的乘积值、第二和值与第一数值范围的下限值的乘积值、以及所述偏置项,得到该卷积核对应的预测数值范围的上限值;
针对该目标网络层的每个卷积核,根据所述第二和值与该目标网络层的第一数值范围的上限值的乘积值、所述第一和值与该目标网络层的第一数值范围的下限值的乘积值、以及所述偏置项,得到该卷积核对应的预测数值范围的下限值。
本实施例中,对于一个目标网络层的每个卷积核,分别计算其对应的预测数值范围。下面以上述目标网络层A的卷积核A1对应的预测数值范围为例进行说明。可以通过以下公式计算A1对应的预测数值范围:
Figure BDA0002491734180000141
其中,Rmin、Rmax依次为A1对应的预测数值范围的下限值和上限值,Fmin、Fmax依次为目标网络层A的第一数值范围的下限值和上限值,sum_pos为A1中所有正的系数的和,sum_nat为A1中所有负的系数的和,bias为定点化的偏置项。
可选地,上述“根据该目标网络层的各个卷积核对应的预测数值范围和所述第三数值范围,确定该目标网络层的各个卷积核对应的数据运算是否存在溢出风险”的步骤,可以通过以下方式实现:
针对该目标网络层的每个卷积核,若该卷积核对应的预测数值范围超出所述第三数值范围,则确定该卷积核对应的数据运算存在溢出风险。
本实施例中,对于一个目标网络层的每个卷积核,若该卷积核对应的预测数值范围超出第三数值范围,则确定该卷积核对应的数据运算存在溢出风险;若该卷积核对应的预测数值范围未超出第三数值范围,则确定该卷积核对应的数据运算不存在溢出风险。以上述目标网络层A的卷积核A1为例,假设A1对应的预测数值范围为[Rmin,Rmax],第三数值范围为[Imin,Imax],若Rmax>Imax和/或Rmin<Imin,则判断出A1对应的数据运算存在溢出风险。
图6为本申请再一实施例提供的数据溢出检测方法的流程示意图。本实施例中在检测到深度学习网络存在溢出风险时,还对溢出点位置进行检测。如图6所示,该方法包括:
S601、获取用于部署深度学习网络的硬件平台的定点运算资源信息,其中,所述深度学习网络包括多个网络层,所述深度学习网络的网络参数为定点化数据。
本实施例中,S601与图2实施例中的S201类似,此处不再赘述。
S602、根据预置的初始数值范围和各个网络层的范围钳制函数,按照所述深度学习网络的前向运算顺序,逐层确定各个网络层的第一数值范围,其中,一个网络层的范围钳制函数表征该网络层的网络运算特性,所述第一数值范围为网络层的输入特征图的数值范围。
本实施例中,S601与图2实施例中的S202类似,此处不再赘述。
S603、根据所述定点运算资源信息,确定第三数值范围,其中,所述第三数值范围为所述硬件平台运行所述深度学习网络时所支持的定点数据的数值范围。
本实施例中,S603与图5实施例中的S503类似,此处不再赘述。
S604、根据每个目标网络层的第一数值范围、网络参数和所述第三数值范围,对每个目标网络层进行数据溢出检测,其中,所述目标网络层为所述深度学习网络中存在乘累加操作的网络层。
本实施例中,S604与图5实施例中的S504类似,此处不再赘述。
S605、针对每个溢出层,根据该溢出层的卷积计算方向、卷积核、第一数值范围和所述第三数值范围,确定该溢出层的溢出点位置,并将该溢出层的溢出点位置记录到所述溢出检测结果中,其中,所述溢出层为存在溢出风险的目标网络层。
本实施例中,网络层的卷积计算方向可以为通道方向、宽度方向和高度方向等,在此不作限定。S604中对深度学习网络中的每个目标网络层进行数据溢出检测。若深度学习网络中至少一个目标网络层存在溢出风险,则深度学习网络存在溢出风险。在深度学习网络存在溢出风险时,本实施例还进一步检测存在溢出风险的目标网络层的溢出点位置。为便于描述,本实施例将存在溢出风险的目标网络层称为溢出层。将溢出层中存在溢出风险的位置称为溢出点位置。对于每个溢出层,检测平台根据该溢出层的各卷积核的卷积计算方向、卷积核、第一数值范围和第三数值范围,确定该溢出层的溢出点位置。
本实施例通过检测深度学习网络中溢出层的溢出点位置,将溢出点位置记录到溢出检测结果中,能够便于后续用户参照该溢出点位置进行网络调整,以消除网络的溢出风险;或者后续硬件平台在运行深度学习网络时,可以在进行该溢出点位置的数据运算时采用位宽更大的寄存器存储运算数据,以防止数据溢出。
可选地,每个卷积核包括至少一个通道,在所述卷积计算方向为通道方向时S605可以包括:
针对每个溢出层,根据该溢出层的各卷积核的各通道、第一数值范围和所述第三数值范围,确定该溢出层的溢出点位置,其中,所述溢出点位置为溢出层中存在溢出风险的通道。
本实施例中,每个卷积核包括一个或多个通道。深度学习网络中的卷积核的通道数与输入特征图的通道数相同;卷积核的个数与输出特征图的通道数相同。在卷积计算方向为通道方向时,查找溢出层中存在溢出风险的通道作为溢出点位置。
可选地,如图7所示,上述“根据该溢出层的各卷积核的各通道、第一数值范围和所述第三数值范围,确定该溢出层的溢出点位置”的步骤,可以包括:
S701、针对该溢出层的每个卷积核,根据该卷积核的各未处理的通道、该溢出层的第一数值范围和所述第三数值范围,确定该卷积核的第i个溢出点位置。
S702、根据该溢出层的各卷积核的第i个溢出点位置,确定该溢出层的第i个溢出点位置,其中i为大于等于1的整数。
在本实施例中,一个卷积核的各未处理的通道,为位于该卷积核中的标志通道之后的各个通道。其中,标志通道为与溢出层的第i-1个溢出点位置对应的通道。以溢出层A为例,在确定其溢出点位置时,首先从各卷积核的第1个通道开始进行处理,确定出各个卷积核的第1个溢出点位置,然后根据各个卷积核的第1个溢出点位置,确定出A的第1个溢出点位置。假设确定出的A的第1个溢出点位置为通道3,则各卷积核的标志通道为通道3,因而从各卷积核的第4个通道开始进行处理,确定出各个卷积核的第2个溢出点位置,然后根据各个卷积核的第2个溢出点位置,确定出A的第2个溢出点位置。按照上述方式处理,直到各个卷积核的通道全部处理完,得到A的所有溢出点位置。例如,通道总数为8个,最终得到的A的各溢出点位置分别为通道3、通道5、通道7。
可选地,根据该卷积核的各未处理的通道、该溢出层的第一数值范围和所述第三数值范围,确定该卷积核的第i个溢出点位置,可以通过以下方式实现:
根据该卷积核的第j个未处理的通道与该溢出层的第一数值范围,得到第j个未处理的通道的运算结果数值范围,并确定第j个未处理的通道为已完成运算的通道,其中,j为大于等于1的整数;
在确定已完成运算的通道的运算结果数值范围之和,超出所述第三数值范围时,确定第j个未处理的通道,为该卷积核的第i个溢出点位置;
在确定已完成运算的通道的运算结果数值范围之和,未超出所述第三数值范围时,确定j累加1。
本实施例中,通道的运算次序是指在深度学习网络的一个网络层中卷积核和输入特征图的数据运算时,多个通道的先后次序。次序靠前的通道的特征图与卷积核先进行乘累加运算,然后排序靠后的通道的特征图与卷积核再进行乘累加运算,并将结果与前面通道的运算结果相加,直到所有通道计算完成则得到该卷积核与特征图的卷积运算结果。
本实施例中在确定一个卷积核的第i个溢出点位置时,按照通道的运算次序先后计算该卷积核的各未处理通道,在已完成运算的通道的运算结果数值范围之和超过第三数值范围时,则确定当前完成计算的通道为该卷积核的第i个溢出点位置。
以溢出层A的卷积核A1的第2个溢出点位置计算过程为例,假设A的第1个溢出点位置为通道3,则从A1的第4个通道开始处理,根据A1的第4个通道与A的第一数值范围,计算A1的第4个通道的运算结果的数值范围s4,具体可以通过上述的公式(1)进行计算,在此不再赘述。然后判断s4是否超出第三数值范围,若是,则A1的第2个溢出点位置为通道4;若不是,则以同样的方式计算A1的第5个通道的运算结果的数值范围s5。然后判断s4和s5之和是否超出第三数值范围,若是,则A1的第2个溢出点位置为通道5;若不是,则以同样的方式计算A1的第6个及之后的其他通道的运算结果的数值范围,直到确定出第2个溢出点位置,或者直到最后一个通道计算完成。如果最后一个通道计算完成,仍未找到A1的第2个溢出点位置,则表示A1仅有一个溢出点位置。
可选地,根据该溢出层的各卷积核的第i个溢出点位置,确定该溢出层的第i个溢出点位置,可以通过以下方式实现:
第一种实现方式,将该溢出层的各卷积核的第i个溢出点位置中运算次序最靠前的溢出点位置作为该溢出层的第i个溢出点位置。
在该实现方式中,检测出溢出点位置是为了便于用户对网络进行切分或者在运算到溢出点位置时硬件平台调用位宽更大的寄存器,以防止数据溢出。当溢出层的各个卷积核的第i个溢出点位置不同时,选择其中运算次序最靠前的溢出点位置作为该溢出层的第i个溢出点位置,能够保证在运算到该溢出层的第i个溢出点位置时,该溢出层的各个卷积核的运算均没发生数据溢出。
第二种实现方式中,根据各卷积核的第i个溢出点位置,以及所述硬件平台运行所述深度学习网络时单个周期内批量处理的通道数,确定该溢出层的第i个溢出点位置。
在该实现方式中,检测平台可以确定出各卷积核的第i个溢出点位置中运算次序最靠前的溢出点位置,然后选取通道数小于运算次序最靠前的溢出点位置,并且通道数为硬件平台运行深度学习网络时单个周期内批量处理的通道数的整数倍的一个通道数,作为该溢出层的第i个溢出点位置。例如,以溢出层A的卷积核A1、A2为例进行说明,假设A1的第一个溢出点位置为通道6,A2的第一个溢出点位置为通道5,则运算次序最靠前的溢出点位置为通道5,假设硬件平台运行深度学习网络时单个周期内批量处理的通道数为4,则最终确定出的溢出层A的第一个溢出点位置为通道4。假设硬件平台运行深度学习网络时单个周期内批量处理的通道数为8,则最终确定出的溢出层A的第一个溢出点位置为第通道8。这样用户依据溢出点位置切分后的深度学习网络在硬件平台运行时,或者硬件平台依据调用溢出点位置位宽更大的寄存器时,尽可能不影响硬件平台单个周期内批量处理的通道数,使硬件平台始终以最大限度的批量处理进行网络运行,从而在防止溢出的前提下尽量提高网络运行效率。
第三种实现方式,根据各卷积核的第i个溢出点位置,以及所述硬件平台运行深度学习网络时单个周期内批量处理的通道数,分别确定各卷积核的切分点位置。将各个卷积核的切分点位置添加到深度学习网络的参数中,以使硬件平台在运行溢出层时,对于不同的卷积核按照该卷积核对应的切分点位置调整所要使用的寄存器位宽。例如,对于某卷积核,可以选取通道数小于该卷积核的第一个溢出点位置,并且通道数为硬件平台运行深度学习网络时单个周期内批量处理的通道数的整数倍的一个通道数,作为该卷积核的切分点位置。通过分别确定各卷积核的切分点位置,使得硬件平台能够根据各卷积核的切分点位置,调用相应的寄存器位宽进行各个卷积核的运算,从而在保证不溢出的前提下提高深度学习网络的运算效率。
下面通过一个实施示例对溢出点位置的检测进行说明。图8为本申请实施例提供的深度学习网络中多通道的卷积核的示意图。参照图8,假设该网络层为溢出层,具有N个卷积核。每个卷积核的宽为W,高为H,通道数为C。一个卷积核可以记为kernel(W*H*C)。对于一个卷积核,每次取一个通道(W*H)的值,按照公式(1)进行计算,每计算一个通道后与硬件平台所支持的定点数据的数值范围进行比较,直到出现溢出为止,获得该卷积核的第一个溢出点C_i。接着对每个卷积核(N个)重复上述步骤,获得每个卷积核的溢出点C_i,然后根据公式(2)最终确定该溢出层的第一个溢出点位置:
C0=p(min{C_0,C_1,....C_i,....C_n}) (2)
其中,C0为该溢出层的第一个溢出点位置。C_i表示该溢出层的第i个卷积核的第一个溢出点位置。min{C_0,C_1,....C_i,....C_n}表示取N个卷积核的第一个溢出点位置中通道数最小的一个。P(x)是与硬件平台相关的计算函数,具体与硬件平台上运行深度学习网络前向运算时,单个周期内批量处理的通道数有关。例如:在硬件平台D上,内层循环每次处理16个通道数的数据,那么P(x)函数表示在满足不溢出的条件下(即小于x),取最终的通道数C0为16的整数倍。按照上述确定第一个溢出点位置的方式,确定该溢出层的其他的溢出点位置,在此不再赘述。
需要说明的是,上述示例中溢出点的位置是沿着卷积核的通道C的方向来进行的,实际过程中,可以沿着任何方向进行溢点的位置的确定,如沿着H方向、沿着W方向等。
本申请实施例提出了一种数据溢出检测方法,能够有效提高网络溢出检测的准确性,另外对于溢出的深度学习网络的溢出层,根据硬件平台特性检测出溢出点位置并保存信息至网络参数中,使硬件平台在进行深度学习网络的前向运算时可以根据网络参数进行对应处理,在保证网络运行效率的同时,解决了定点化平台网络溢出问题;提出全局正序估计方法,每层网络层的输入特征图的范围可以根据每层的范围钳制函数进行确定,而且可以作为输入传递给下层从而产生作用,使得网络溢出检测精度更加准确;全局正序估计方法与网络前向运行顺序一致,适用任何网络结构,适应性好;对于新增的网络层,用户只需根据该层的网络运算特性单独再配置一个范围钳制函数即可,可扩展性好。
图9为本申请一实施例提供的数据溢出检测装置的结构示意图。如图9所示,该数据溢出检测装置90包括:获取模块901、处理模块902、检测模块903。
获取模块901,用于获取用于部署深度学习网络的硬件平台的定点运算资源信息,其中,所述深度学习网络包括多个网络层,所述深度学习网络的网络参数为定点化数据;
处理模块902,用于根据预置的初始数值范围和各个网络层的范围钳制函数,按照所述深度学习网络的前向运算顺序,逐层确定各个网络层的第一数值范围,其中,一个网络层的范围钳制函数表征该网络层的网络运算特性,所述第一数值范围为网络层的输入特征图的数值范围;
检测模块903,用于根据各个网络层的第一数值范围、网络参数和所述定点运算资源信息,对所述深度学习网络进行数据溢出检测,得到溢出检测结果,其中,所述溢出检测结果用于所述硬件平台调用与所述溢出检测结果对应的定点运算资源以运行所述深度学习网络。
本申请实施例中,获取用于部署深度学习网络的硬件平台的定点运算资源信息,其中,深度学习网络的网络参数为定点化数据,处理模块根据预置的初始数值范围和该深度学习网络的各个网络层的范围钳制函数,按照该深度学习网络的前向运算顺序,逐层确定各个网络层的第一数值范围,其中,一个网络层的范围钳制函数表征该网络层的网络运算特性,第一数值范围为网络层的输入特征图的数值范围;然后检测模块根据各个网络层的第一数值范围、网络参数和定点运算资源信息,对该深度学习网络进行数据溢出检测,得到溢出检测结果。本申请实施例通过表征各个网络层的网络运算特性的范围钳制函数,按照前向运算顺序逐层确定各个网络层的输入特征的数值范围,在确定各个网络层的输入特征图的数值范围时考虑到该层之前的网络层对其数值范围的影响,从而使确定出的各个网络层的输入特征图的数值范围更为精准,进而有效提高数据溢出检测的精准性。
图10为本申请又一实施例提供的数据溢出检测装置的结构示意图。如图10所示,本实施例提供的数据溢出检测装置90在图9所示实施例提供的数据溢出检测装置的基础上,还可以包括:解析模块904、输出模块905。
可选地,所述处理模块902,具体用于:
针对每个网络层,根据当前网络层的第一数值范围和范围钳制函数,确定当前网络层的第二数值范围,并将当前网络层的第二数值范围作为下一网络层的第一数值范围,其中,所述第二数值范围为当前网络层的输出特征图的数值范围,所述深度学习网络的前向运算顺序中第一个网络层的第一数值范围为所述初始数值范围。
可选地,所述深度学习网络的网络层包括以下中的至少一种:
整流线性单元Relu层、Prelu层、双曲正切Tanh层、批量归一化BN层、卷积Conv层;
Relu层的范围钳制函数用于表征将零作为第二数值范围的下限值,将第一数值范围的上限值作为第二数值范围的上限值;
Prelu层的范围钳制函数用于表征根据该网络层的网络参数和第一数值范围的下限值,得到第二数值范围的下限值,并将第一数值范围的上限值作为第二数值范围的上限值;
Tanh层的范围钳制函数用于表征将第一数值范围的下限值的双曲正切值作为第二数值范围的下限值,将第一数值范围的上限值的双曲正切值作为第二数值范围的上限值;
BN层的范围钳制函数用于表征根据该网络层的网络参数和第一数值范围的下限值,得到第二数值范围的下限值,并根据该网络层的网络参数和第一数值范围的上限值,得到第二数值范围的上限值;
Conv层的范围钳制函数用于表征将特征图的定点数据的最小值作为第二数值范围的下限值,并将特征图的定点数据的最大值作为第二数值范围的下限值。
可选地,所述检测模块903,具体用于:
根据所述定点运算资源信息,确定第三数值范围,其中,所述第三数值范围为所述硬件平台运行所述深度学习网络时所支持的定点数据的数值范围;
根据每个目标网络层的第一数值范围、网络参数和所述第三数值范围,对每个目标网络层进行数据溢出检测,其中,所述目标网络层为所述深度学习网络中存在乘累加操作的网络层。
可选地,所述目标网络层包括至少一个卷积核;
所述检测模块903,具体用于:
针对每个目标网络层,根据该目标网络层的第一数值范围和网络参数,计算该目标网络层的各个卷积核对应的预测数值范围,根据该目标网络层的各个卷积核对应的预测数值范围和所述第三数值范围,确定该目标网络层的各个卷积核对应的数据运算是否存在溢出风险,并在该目标网络层中存在至少一个溢出卷积核时,确定该目标网络层存在溢出风险,将该目标网络层的标识记录到所述溢出检测结果中,其中,所述溢出卷积核为对应的数据运算存在溢出风险的卷积核。
可选地,所述检测模块903,具体用于:
针对该目标网络层的每个卷积核,根据该目标网络层的网络参数,确定该卷积核中所有正的系数的第一和值,所有负的系数的第二和值、以及定点化的偏置项;
针对该目标网络层的每个卷积核,根据所述第一和值与该目标网络层的第一数值范围的上限值的乘积值、第二和值与第一数值范围的下限值的乘积值、以及所述偏置项,得到该卷积核对应的预测数值范围的上限值;
针对该目标网络层的每个卷积核,根据所述第二和值与该目标网络层的第一数值范围的上限值的乘积值、所述第一和值与该目标网络层的第一数值范围的下限值的乘积值、以及所述偏置项,得到该卷积核对应的预测数值范围的下限值。
可选地,所述检测模块903,具体用于:
针对该目标网络层的每个卷积核,若该卷积核对应的预测数值范围超出所述第三数值范围,则确定该卷积核对应的数据运算存在溢出风险。
可选地,所述检测模块903,还用于:
针对每个溢出层,根据该溢出层的卷积计算方向、卷积核、第一数值范围和所述第三数值范围,确定该溢出层的溢出点位置,并将该溢出层的溢出点位置记录到所述溢出检测结果中,其中,所述溢出层为存在溢出风险的目标网络层。
可选地,每个卷积核包括至少一个通道;
所述检测模块903,用于:
在所述卷积计算方向为通道方向时,针对每个溢出层,根据该溢出层的各卷积核的各通道、第一数值范围和所述第三数值范围,确定该溢出层的溢出点位置,其中,所述溢出点位置为溢出层中存在溢出风险的通道。
可选地,所述检测模块903,具体用于:
针对该溢出层的每个卷积核,根据该卷积核的各未处理的通道、该溢出层的第一数值范围和所述第三数值范围,确定该卷积核的第i个溢出点位置;
根据该溢出层的各卷积核的第i个溢出点位置,确定该溢出层的第i个溢出点位置,其中i为大于等于1的整数。
可选地,所述检测模块903,具体用于:
重复执行以下各步骤,直至得到该卷积核的第i个溢出点位置:
根据该卷积核的第j个未处理的通道与该溢出层的第一数值范围,得到第j个未处理的通道的运算结果数值范围,并确定第j个未处理的通道为已完成运算的通道,其中,j为大于等于1的整数;
在确定已完成运算的通道的运算结果数值范围之和,超出所述第三数值范围时,确定第j个未处理的通道,为该卷积核的第i个溢出点位置;
在确定已完成运算的通道的运算结果数值范围之和,未超出所述第三数值范围时,确定j累加1。
可选地,所述各未处理的通道,为位于卷积核中的标志通道之后的各个通道;其中,所述标志通道为与溢出层的第i-1个溢出点位置对应的通道。
可选地,所述检测模块903,具体用于:
将该溢出层的各卷积核的第i溢出点位置中运算次序最靠前的溢出点位置作为该溢出层的第i个溢出点位置;
或者,根据该溢出层的各卷积核的第i个溢出点位置,以及所述硬件平台运行所述深度学习网络时单个周期内批量处理的通道数,确定该溢出层的第i个溢出点位置。可选地,所述目标网络层包括以下中的至少一种:
卷积层、全连接层。
可选地,所述输出模块905,用于:
若所述溢出检测结果表征所述深度学习网络存在溢出风险,则调整所述深度学习网络,并将调整后的深度学习网络传输至所述硬件平台,其中,所述调整后的深度学习网络用于处理待处理数据;
或者,将所述溢出检测结果添加到待输出的文件中或者所述深度学习网络的网络参数中。
可选地,所述定点运算资源信息包括寄存器位宽和数据类型;或者,所述定点运算资源信息包括第三数值范围,其中,所述第三数值范围为所述硬件平台运行所述深度学习网络时所支持的定点数据的数值范围;
在所述定点运算资源信息包括寄存器位宽和数据类型时,所述获取模块还用于:
根据所述寄存器位宽和所述数据类型,计算所述第三数值范围。
可选地,所述解析模块904,用于:
对所述深度学习网络进行解析,得到所述深度学习网络的网络拓扑;
根据所述深度学习网络的网络拓扑,确定所述深度学习网络的前向运算顺序。
本申请实施例提供的数据溢出检测装置,可用于执行上述的方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
图11为本申请一实施例提供的数据溢出检测设备的硬件结构示意图。如图11所示,本实施例提供的数据溢出检测设备110包括:至少一个处理器1101和存储器1102。该数据溢出检测设备110还包括通信部件1103。其中,处理器1101、存储器1102以及通信部件1103通过总线1104连接。
在具体实现过程中,至少一个处理器1101执行所述存储器1102存储的计算机执行指令,使得至少一个处理器1101执行如上的数据溢出检测方法。
处理器1101的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
在上述的图11所示的实施例中,应理解,处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application SpecificIntegrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合申请所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component Interconnect,PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上的数据溢出检测方法。
上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(Application Specific IntegratedCircuits,简称:ASIC)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (23)

1.一种数据溢出检测方法,其特征在于,所述方法,包括:
获取用于部署深度学习网络的硬件平台的定点运算资源信息,其中,所述深度学习网络包括多个网络层,所述深度学习网络的网络参数为定点化数据;
根据预置的初始数值范围和各个网络层的范围钳制函数,按照所述深度学习网络的前向运算顺序,逐层确定各个网络层的第一数值范围,其中,一个网络层的范围钳制函数表征该网络层的网络运算特性,所述第一数值范围为网络层的输入特征图的数值范围;
根据各个网络层的第一数值范围、所述网络参数和所述定点运算资源信息,对所述深度学习网络进行数据溢出检测,得到溢出检测结果。
2.根据权利要求1所述的方法,其特征在于,根据预置的初始数值范围和各个网络层的范围钳制函数,按照所述深度学习网络的前向运算顺序,逐层确定各个网络层的第一数值范围,包括:
针对每个网络层,根据当前网络层的第一数值范围和范围钳制函数,确定当前网络层的第二数值范围,并将当前网络层的第二数值范围作为下一网络层的第一数值范围,其中,所述第二数值范围为当前网络层的输出特征图的数值范围,所述深度学习网络的前向运算顺序中第一个网络层的第一数值范围为所述初始数值范围。
3.根据权利要求2所述的方法,其特征在于,所述深度学习网络的网络层包括以下中的至少一种:
整流线性单元Relu层、Prelu层、双曲正切Tanh层、批量归一化BN层、卷积Conv层;
Relu层的范围钳制函数用于表征将零作为第二数值范围的下限值,将第一数值范围的上限值作为第二数值范围的上限值;
Prelu层的范围钳制函数用于表征根据该网络层的网络参数和第一数值范围的下限值,得到第二数值范围的下限值,并将第一数值范围的上限值作为第二数值范围的上限值;
Tanh层的范围钳制函数用于表征将第一数值范围的下限值的双曲正切值作为第二数值范围的下限值,将第一数值范围的上限值的双曲正切值作为第二数值范围的上限值;
BN层的范围钳制函数用于表征根据该网络层的网络参数和第一数值范围的下限值,得到第二数值范围的下限值,并根据该网络层的网络参数和第一数值范围的上限值,得到第二数值范围的上限值;
Conv层的范围钳制函数用于表征将特征图的定点数据的最小值作为第二数值范围的下限值,并将特征图的定点数据的最大值作为第二数值范围的下限值。
4.根据权利要求1所述的方法,其特征在于,根据各个网络层的第一数值范围、所述网络参数和所述定点运算资源信息,对所述深度学习网络进行数据溢出检测,包括:
根据所述定点运算资源信息,确定第三数值范围,其中,所述第三数值范围为所述硬件平台运行所述深度学习网络时所支持的定点数据的数值范围;
根据每个目标网络层的第一数值范围、网络参数和所述第三数值范围,对每个目标网络层进行数据溢出检测,其中,所述目标网络层为所述深度学习网络中存在乘累加操作的网络层;所述目标网络层包括以下中的至少一种:卷积层、全连接层。
5.根据权利要求4所述的方法,其特征在于,所述目标网络层包括至少一个卷积核;
根据每个目标网络层的第一数值范围、网络参数和所述第三数值范围,对每个目标网络层进行数据溢出检测,包括:
针对每个目标网络层,根据该目标网络层的第一数值范围和网络参数,计算该目标网络层的各个卷积核对应的预测数值范围,根据该目标网络层的各个卷积核对应的预测数值范围和所述第三数值范围,确定该目标网络层的各个卷积核对应的数据运算是否存在溢出风险,并在该目标网络层中存在至少一个溢出卷积核时,确定该目标网络层存在溢出风险,将该目标网络层的标识记录到所述溢出检测结果中,其中,所述溢出卷积核为对应的数据运算存在溢出风险的卷积核。
6.根据权利要求5所述的方法,其特征在于,根据该目标网络层的第一数值范围和网络参数,计算该目标网络层的各个卷积核对应的预测数值范围,包括:
针对该目标网络层的每个卷积核,根据该目标网络层的网络参数,确定该卷积核中所有正的系数的第一和值,所有负的系数的第二和值、以及定点化的偏置项;
针对该目标网络层的每个卷积核,根据所述第一和值与该目标网络层的第一数值范围的上限值的乘积值、第二和值与第一数值范围的下限值的乘积值、以及所述偏置项,得到该卷积核对应的预测数值范围的上限值;
针对该目标网络层的每个卷积核,根据所述第二和值与该目标网络层的第一数值范围的上限值的乘积值、所述第一和值与该目标网络层的第一数值范围的下限值的乘积值、以及所述偏置项,得到该卷积核对应的预测数值范围的下限值。
7.根据权利要求5所述的方法,其特征在于,根据该目标网络层的各个卷积核对应的预测数值范围和所述第三数值范围,确定该目标网络层的各个卷积核对应的数据运算是否存在溢出风险,包括:
针对该目标网络层的每个卷积核,若该卷积核对应的预测数值范围超出所述第三数值范围,则确定该卷积核对应的数据运算存在溢出风险。
8.根据权利要求5所述的方法,其特征在于,根据每个目标网络层的第一数值范围、网络参数和所述第三数值范围,对每个目标网络层进行数据溢出检测之后,所述方法还包括:
针对每个溢出层,根据该溢出层的卷积计算方向、卷积核、第一数值范围和所述第三数值范围,确定该溢出层的溢出点位置,并将该溢出层的溢出点位置记录到所述溢出检测结果中,其中,所述溢出层为存在溢出风险的目标网络层。
9.根据权利要求8所述的方法,其特征在于,每个卷积核包括至少一个通道;
在所述卷积计算方向为通道方向时,针对每个溢出层,根据该溢出层的卷积计算方向、卷积核、第一数值范围和所述第三数值范围,确定该溢出层的溢出点位置,包括:
针对每个溢出层,根据该溢出层的各卷积核的各通道、第一数值范围和所述第三数值范围,确定该溢出层的溢出点位置,其中,所述溢出点位置为溢出层中存在溢出风险的通道。
10.根据权利要求9所述的方法,其特征在于,根据该溢出层的各卷积核的各通道、第一数值范围和所述第三数值范围,确定该溢出层的溢出点位置,包括:
针对该溢出层的每个卷积核,根据该卷积核的各未处理的通道、该溢出层的第一数值范围和所述第三数值范围,确定该卷积核的第i个溢出点位置;
根据该溢出层的各卷积核的第i个溢出点位置,确定该溢出层的第i个溢出点位置,其中i为大于等于1的整数。
11.根据权利要求10所述的方法,其特征在于,根据该卷积核的各未处理的通道、该溢出层的第一数值范围和所述第三数值范围,确定该卷积核的第i个溢出点位置,包括:
重复执行以下各步骤,直至得到该卷积核的第i个溢出点位置:
根据该卷积核的第j个未处理的通道与该溢出层的第一数值范围,得到第j个未处理的通道的运算结果数值范围,并确定第j个未处理的通道为已完成运算的通道,其中,j为大于等于1的整数;
在确定已完成运算的通道的运算结果数值范围之和,超出所述第三数值范围时,确定第j个未处理的通道,为该卷积核的第i个溢出点位置;
在确定已完成运算的通道的运算结果数值范围之和,未超出所述第三数值范围时,确定j累加1。
12.根据权利要求11所述的方法,其特征在于,所述各未处理的通道,为位于卷积核中的标志通道之后的各个通道;其中,所述标志通道为与溢出层的第i-1个溢出点位置对应的通道。
13.根据权利要求10所述的方法,其特征在于,根据该溢出层的各卷积核的第i个溢出点位置,确定该溢出层的第i个溢出点位置,包括:
将该溢出层的各卷积核的第i溢出点位置中运算次序最靠前的溢出点位置作为该溢出层的第i个溢出点位置;
或者,根据该溢出层的各卷积核的第i个溢出点位置,以及所述硬件平台运行所述深度学习网络时单个周期内批量处理的通道数,确定该溢出层的第i个溢出点位置。
14.根据权利要求1-13任一项所述的方法,其特征在于,所述方法还包括:
若所述溢出检测结果表征所述深度学习网络存在溢出风险,则调整所述深度学习网络,并将调整后的深度学习网络传输至所述硬件平台,其中,所述调整后的深度学习网络用于处理待处理数据;
或者,将所述溢出检测结果添加到待输出的文件中或者所述深度学习网络的网络参数中。
15.根据权利要求1-13任一项所述的方法,其特征在于,所述定点运算资源信息包括寄存器位宽和数据类型;或者,所述定点运算资源信息包括第三数值范围,其中,所述第三数值范围为所述硬件平台运行所述深度学习网络时所支持的定点数据的数值范围;
在所述定点运算资源信息包括寄存器位宽和数据类型时,所述方法还包括:
根据所述寄存器位宽和所述数据类型,计算所述第三数值范围。
16.根据权利要求1-13任一项所述的方法,其特征在于,根据预置的初始数值范围和各个网络层的范围钳制函数,按照所述深度学习网络的前向运算顺序,逐层确定各个网络层的第一数值范围之前,所述方法还包括:
对所述深度学习网络进行解析,得到所述深度学习网络的网络拓扑;
根据所述深度学习网络的网络拓扑,确定所述深度学习网络的前向运算顺序。
17.一种数据溢出检测装置,其特征在于,应用于检测平台,包括:
获取模块,用于获取用于部署深度学习网络的硬件平台的定点运算资源信息,其中,所述深度学习网络包括多个网络层,所述深度学习网络的网络参数为定点化数据;
处理模块,用于根据预置的初始数值范围和各个网络层的范围钳制函数,按照所述深度学习网络的前向运算顺序,逐层确定各个网络层的第一数值范围,其中,一个网络层的范围钳制函数表征该网络层的网络运算特性,所述第一数值范围为网络层的输入特征图的数值范围;
检测模块,用于根据各个网络层的第一数值范围、所述网络参数和所述定点运算资源信息,对所述深度学习网络进行数据溢出检测,得到溢出检测结果。
18.根据权利要求17所述的装置,其特征在于,所述处理模块,具体用于:
针对每个网络层,根据当前网络层的第一数值范围和范围钳制函数,确定当前网络层的第二数值范围,并将当前网络层的第二数值范围作为下一网络层的第一数值范围,其中,所述第二数值范围为当前网络层的输出特征图的数值范围,所述深度学习网络的前向运算顺序中第一个网络层的第一数值范围为所述初始数值范围。
19.根据权利要求18所述的装置,其特征在于,所述深度学习网络的网络层包括以下中的至少一种:
整流线性单元Relu层、Prelu层、双曲正切Tanh层、批量归一化BN层、卷积Conv层;
Relu层的范围钳制函数用于表征将零作为第二数值范围的下限值,将第一数值范围的上限值作为第二数值范围的上限值;
Prelu层的范围钳制函数用于表征根据该网络层的网络参数和第一数值范围的下限值,得到第二数值范围的下限值,并将第一数值范围的上限值作为第二数值范围的上限值;
Tanh层的范围钳制函数用于表征将第一数值范围的下限值的双曲正切值作为第二数值范围的下限值,将第一数值范围的上限值的双曲正切值作为第二数值范围的上限值;
BN层的范围钳制函数用于表征根据该网络层的网络参数和第一数值范围的下限值,得到第二数值范围的下限值,并根据该网络层的网络参数和第一数值范围的上限值,得到第二数值范围的上限值;
Conv层的范围钳制函数用于表征将特征图的定点数据的最小值作为第二数值范围的下限值,并将特征图的定点数据的最大值作为第二数值范围的下限值。
20.根据权利要求17所述的装置,其特征在于,所述检测模块,具体用于:
根据所述定点运算资源信息,确定第三数值范围,其中,所述第三数值范围为所述硬件平台运行所述深度学习网络时所支持的定点数据的数值范围;
根据每个目标网络层的第一数值范围、网络参数和所述第三数值范围,对每个目标网络层进行数据溢出检测,其中,所述目标网络层为所述深度学习网络中存在乘累加操作的网络层。
21.根据权利要求20所述的装置,其特征在于,所述目标网络层包括至少一个卷积核;
所述检测模块,具体用于:
针对每个目标网络层,根据该目标网络层的第一数值范围和网络参数,计算该目标网络层的各个卷积核对应的预测数值范围,根据该目标网络层的各个卷积核对应的预测数值范围和所述第三数值范围,确定该目标网络层的各个卷积核对应的数据运算是否存在溢出风险,并在该目标网络层中存在至少一个溢出卷积核时,确定该目标网络层存在溢出风险,将该目标网络层的标识记录到所述溢出检测结果中,其中,所述溢出卷积核为对应的数据运算存在溢出风险的卷积核。
22.一种数据溢出检测设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1-16任一项所述的数据溢出检测方法。
23.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1-16任一项所述的数据溢出检测方法。
CN202010407061.5A 2020-05-14 2020-05-14 数据溢出检测方法、装置、设备及存储介质 Active CN113673664B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010407061.5A CN113673664B (zh) 2020-05-14 2020-05-14 数据溢出检测方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010407061.5A CN113673664B (zh) 2020-05-14 2020-05-14 数据溢出检测方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN113673664A true CN113673664A (zh) 2021-11-19
CN113673664B CN113673664B (zh) 2023-09-12

Family

ID=78537293

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010407061.5A Active CN113673664B (zh) 2020-05-14 2020-05-14 数据溢出检测方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN113673664B (zh)

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5845051A (en) * 1995-09-15 1998-12-01 Electronics And Telecommunications Research Institute Learning method for multilayer perceptron neural network with N-bit data representation
WO2018140294A1 (en) * 2017-01-25 2018-08-02 Microsoft Technology Licensing, Llc Neural network based on fixed-point operations
US20180349758A1 (en) * 2017-06-06 2018-12-06 Via Alliance Semiconductor Co., Ltd. Computation method and device used in a convolutional neural network
US20190042948A1 (en) * 2017-08-04 2019-02-07 Samsung Electronics Co., Ltd. Method and apparatus for generating fixed-point quantized neural network
CN109542512A (zh) * 2018-11-06 2019-03-29 腾讯科技(深圳)有限公司 一种数据处理方法、装置和存储介质
CN109740508A (zh) * 2018-12-29 2019-05-10 北京灵汐科技有限公司 一种基于神经网络系统的图像处理方法及神经网络系统
WO2019127838A1 (zh) * 2017-12-29 2019-07-04 国民技术股份有限公司 卷积神经网络实现方法及装置、终端、存储介质
US20190251436A1 (en) * 2018-02-14 2019-08-15 Samsung Electronics Co., Ltd. High-speed processing method of neural network and apparatus using the high-speed processing method
US20190279071A1 (en) * 2018-03-12 2019-09-12 Kabushiki Kaisha Toshiba Arithmetic processing device and system to realize multi-layer convolutional neural network circuit to perform process with fixed-point number format
CN110738315A (zh) * 2018-07-18 2020-01-31 华为技术有限公司 一种神经网络精度调整方法及装置
US20200074304A1 (en) * 2018-09-03 2020-03-05 DeepScale, Inc. Neural networks for embedded devices
CN111258537A (zh) * 2020-01-15 2020-06-09 中科寒武纪科技股份有限公司 一种防止数据溢出的方法、装置和芯片
CN111696149A (zh) * 2020-06-18 2020-09-22 中国科学技术大学 针对基于cnn的立体匹配算法的量化方法

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5845051A (en) * 1995-09-15 1998-12-01 Electronics And Telecommunications Research Institute Learning method for multilayer perceptron neural network with N-bit data representation
WO2018140294A1 (en) * 2017-01-25 2018-08-02 Microsoft Technology Licensing, Llc Neural network based on fixed-point operations
US20180349758A1 (en) * 2017-06-06 2018-12-06 Via Alliance Semiconductor Co., Ltd. Computation method and device used in a convolutional neural network
US20190042948A1 (en) * 2017-08-04 2019-02-07 Samsung Electronics Co., Ltd. Method and apparatus for generating fixed-point quantized neural network
WO2019127838A1 (zh) * 2017-12-29 2019-07-04 国民技术股份有限公司 卷积神经网络实现方法及装置、终端、存储介质
US20190251436A1 (en) * 2018-02-14 2019-08-15 Samsung Electronics Co., Ltd. High-speed processing method of neural network and apparatus using the high-speed processing method
US20190279071A1 (en) * 2018-03-12 2019-09-12 Kabushiki Kaisha Toshiba Arithmetic processing device and system to realize multi-layer convolutional neural network circuit to perform process with fixed-point number format
CN110738315A (zh) * 2018-07-18 2020-01-31 华为技术有限公司 一种神经网络精度调整方法及装置
US20200074304A1 (en) * 2018-09-03 2020-03-05 DeepScale, Inc. Neural networks for embedded devices
CN109542512A (zh) * 2018-11-06 2019-03-29 腾讯科技(深圳)有限公司 一种数据处理方法、装置和存储介质
CN109740508A (zh) * 2018-12-29 2019-05-10 北京灵汐科技有限公司 一种基于神经网络系统的图像处理方法及神经网络系统
CN111258537A (zh) * 2020-01-15 2020-06-09 中科寒武纪科技股份有限公司 一种防止数据溢出的方法、装置和芯片
CN111696149A (zh) * 2020-06-18 2020-09-22 中国科学技术大学 针对基于cnn的立体匹配算法的量化方法

Also Published As

Publication number Publication date
CN113673664B (zh) 2023-09-12

Similar Documents

Publication Publication Date Title
CN111507958A (zh) 目标检测方法、检测模型的训练方法及电子设备
WO2018228310A1 (zh) 图像处理方法、装置及终端
US9373027B2 (en) Object detection device
US20210176174A1 (en) Load balancing device and method for an edge computing network
CN111368587B (zh) 场景检测方法、装置、终端设备及计算机可读存储介质
WO2020140374A1 (zh) 语音数据处理方法、装置、设备及存储介质
CN109658346B (zh) 图像修复方法、装置、计算机可读存储介质及电子设备
CN111091572B (zh) 一种图像处理方法、装置、电子设备及存储介质
CN112348110B (zh) 模型训练及图像处理方法、装置、电子设备和存储介质
CN112312001B (zh) 一种图像检测的方法、装置、设备和计算机存储介质
US20190311492A1 (en) Image foreground detection apparatus and method and electronic device
CN111027412B (zh) 一种人体关键点识别方法、装置及电子设备
WO2022194079A1 (zh) 天空区域分割方法、装置、计算机设备和存储介质
CN113052162B (zh) 一种文本识别方法、装置、可读存储介质及计算设备
US20220366262A1 (en) Method and apparatus for training neural network model
CN112307850A (zh) 神经网络训练方法、车道线检测方法、装置和电子设备
CN113673664B (zh) 数据溢出检测方法、装置、设备及存储介质
CN113129298A (zh) 文本图像的清晰度识别方法
CN109886865B (zh) 自动屏蔽不良信息的方法、装置、计算机设备以及存储介质
CN112200775A (zh) 图像清晰度检测方法、装置、电子设备及存储介质
JP6388507B2 (ja) 画像処理装置
CN116385369A (zh) 深度图像质量评价方法、装置、电子设备及存储介质
CN112020723A (zh) 用于语义分割的分类神经网络的训练方法及装置、电子设备
CN112200730B (zh) 图像滤波处理方法、装置、设备及存储介质
CN110348374B (zh) 车辆检测方法、装置、电子设备及存储介质

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