CN111310890B - 深度学习模型的优化方法、装置及终端设备 - Google Patents

深度学习模型的优化方法、装置及终端设备 Download PDF

Info

Publication number
CN111310890B
CN111310890B CN202010061884.7A CN202010061884A CN111310890B CN 111310890 B CN111310890 B CN 111310890B CN 202010061884 A CN202010061884 A CN 202010061884A CN 111310890 B CN111310890 B CN 111310890B
Authority
CN
China
Prior art keywords
target
value
output
deep learning
learning model
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
CN202010061884.7A
Other languages
English (en)
Other versions
CN111310890A (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.)
Shenzhen Intellifusion Technologies Co Ltd
Original Assignee
Shenzhen Intellifusion Technologies 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 Shenzhen Intellifusion Technologies Co Ltd filed Critical Shenzhen Intellifusion Technologies Co Ltd
Priority to CN202010061884.7A priority Critical patent/CN111310890B/zh
Publication of CN111310890A publication Critical patent/CN111310890A/zh
Application granted granted Critical
Publication of CN111310890B publication Critical patent/CN111310890B/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/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/16Human faces, e.g. facial parts, sketches or expressions
    • G06V40/172Classification, e.g. identification

Landscapes

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

Abstract

本申请适用于计算机技术领域,提供了一种深度学习模型的优化方法、装置及终端设备,方法包括:获取目标深度学习模型中目标网络层的初始输出值和目标网络层的最大输出分布;根据目标网络层的最大输出分布,计算目标网络层的目标浮点值;根据目标浮点值确定输出缩放系数;在初始输出值超出第一预设范围的情况下,基于输出缩放系数对初始输出值进行转换,得到初始输出值的目标输出值;根据目标输出值对目标深度学习模型进行优化。本申请通过最大输出分布确定目标浮点值,与现有技术用输出值中的最大值当做目标浮点值的方法相比,本申请确定的目标浮点值更准确,对深度学习模型进行优化时能进一步提高深度学习模型的精度。

Description

深度学习模型的优化方法、装置及终端设备
技术领域
本申请属于计算机技术领域,尤其涉及一种深度学习模型的优化方法、装置及终端设备。
背景技术
深度学习是机器学习领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标。目前计算机数据量不断上升,深度学习得到了飞速发展。但是,由于深度学习模型的结构特征,以及其固有的较多的参数量和较高的计算复杂度,使深度学习模型只能在云端进行部署使用。
为了使深度学习模型能在边缘设备上部署使用,诞生了许多深度学习模型的优化方法,但是,由于有些模型的数值分布差异较大,使用现有的优化方法对其深度学习模型进行优化,优化后的深度学习模型的精度较低,在使用优化后的深度学习模型进行图片处理时,例如,人脸图片识别、商品图片识别等,输出的结果不准确。
发明内容
本申请实施例提供了一种深度学习模型的优化方法、装置及终端设备,可以解决对深度学习模型的优化精度低的问题。
第一方面,本申请实施例提供了一种深度学习模型的优化方法,包括:
将图片校准数据输入目标深度学习模型对所述图片校准数据进行处理,得到所述目标深度学习模型中目标网络层的初始输出值;
获取所述目标网络层的最大输出分布;
根据所述目标网络层的最大输出分布,计算所述目标网络层的目标浮点值;
根据所述目标浮点值确定用于对所述初始输出值进行转换的输出缩放系数;
在所述初始输出值超出第一预设范围的情况下,基于所述输出缩放系数对所述初始输出值进行转换,得到所述初始输出值的目标输出值;
根据所述目标输出值对所述目标深度学习模型进行优化。
在一种可能的实现方式中,在获得宽度值之后,深度学习模型的优化方法还包括:
根据最大输出分布、预设数量和宽度值,构建最大输出分布的直方图。
在一种可能的实现方式中,根据所述宽度值和所述最大输出分布,确定所述目标网络层与不同区间分别对应的原始分布范围,包括:
以直方图的中间位置为中心向直方图的两端循环滑动,每滑动一次滑动覆盖的直方图的个数加1,得到所述目标中间网络与各个区间对应的原始分布范围,其中,滑动一次指的是直方图的中间位置分别向直方图的左侧和直方图的右侧分别移动,每次滑动得到的范围对应一个原始分布范围。
在一种可能的实现方式中,目标网络层的最大输出分布的获取方法,包括:
获取校准数据,并将所述校准数据输入浮点深度学习模型中,得到各个网络层的网络输出值,得到初始网络输出值集合;
对网络输出值进行排序,删除网络输出值中超出预设值的网络输出值,得到目标网络输出值集合;
选取目标网络输出值集合中所有网络输出值中最小的网络输出值为目标网络层的最大输出分布的最小值;
选取目标网络输出值集合中所有网络输出值中最大的网络输出值为目标网络层的最大输出分布的最大值。
第二方面,本申请实施例提供了一种深度学习模型的优化装置,包括:
数据输入模块,将图片校准数据输入目标深度学习模型对所述图片校准数据进行处理,得到所述目标深度学习模型中目标网络层的初始输出值;
数据获取模块,用于获取所述目标网络层的最大输出分布;
数据计算模块,用于根据所述目标网络层的最大输出分布,计算所述目标网络层的目标浮点值;
输出缩放系数计算模块,用于根据所述目标浮点值确定用于对所述初始输出值进行转换的输出缩放系数;
数据转换模块,用于在所述初始输出值超出第一预设范围的情况下,基于所述输出缩放系数对所述初始输出值进行转换,得到所述初始输出值的目标输出值;
模型优化模块,用于根据所述目标输出值对所述目标深度学习模型进行优化。
第三方面,本申请实施例提供了一种终端设备,包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述第一方面中任一项所述的深度学习模型的优化方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述第一方面中任一项所述的深度学习模型的优化方法。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面中任一项所述的深度学习模型的优化方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
本申请实施例与现有技术相比存在的有益效果是:本申请通过目标网络层的最大输出分布确定每个目标网络层的目标浮点值,进而通过计算得到输出缩放系数,利用输出缩放系数对目标深度学习模型中的初始输出值进行转换,达到对目标深度学习模型的优化。现有技术对输出值进行转换时,同样用当前网络层的输出最大值计算输出值的缩放系数,由于输出值中存在较大的不真实的数据,采用输出值的最大值作为参考数据计算输出值的缩放系数,造成其他输出值转换的不准确,在对深度学习模型进行优化时会造成后续计算误差大,精度低。综上所述,本申请通过最大输出分布找到当前网络层的一个最优的浮点值作为参数计算输出缩放系数,并不是通过输出值的最大值确定输出缩放系数,避免了输出最大值是无效值的情况下确定的输出缩放系数不准确的情况,与现有技术用输出值中的最大值当做目标浮点值的方法相比,本申请确定的目标浮点值更准确,对目标深度学习模型进行优化时能进一步提高目标深度学习模型的优化精度,使深度学习模型在进行图片识别时输出的结果更准确。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提供的mobilenetv2的一个分离卷积的各通道权重分布示意图;
图2是本申请一实施例提供的vgg19、resnet152和googlenet三个模型的输出分布;
图3是本申请一实施例提供的深度学习模型的优化方法的应用场景示意图;
图4是本申请一实施例提供的深度学习模型的优化方法的流程示意图;
图5是本申请一实施例提供的输出缩放系数的获得的流程示意图;
图6是本申请一实施例提供的目标深度学习模型的获得的流程示意图;
图7是本申请一实施例提供的对目标深度学习模型进行优化的流程示意图;
图8是本申请一实施例提供的深度学习模型的优化装置的结构示意图;
图9是本申请一实施例提供的终端设备的结构示意图;
图10是本申请一实施例提供的计算机的部分结构的框图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
由于浮点模型占用内存大、功耗开销大和计算效率低等问题,因此将深度学习模型引入到边缘设备上时,需要将浮点模型转换成16bit、8bit的定点模型或更小的1bit二值模型,以达到占用内存小、功耗开销小和计算效率高的目的。
目前,对深度学习模型的优化,主要是对权重和各层的输出值进行优化。现有技术对权重进行优化时,一般通过将深度学习模型中所有权重的绝对值最大的权重进行缩放确定缩放系数,根据缩放系数进而对权重进行缩放。
作为举例,如图1所示是mobilenetv2网络的一个可分离卷积层的权重分布,可看到中间通道和末尾通道的权重最大值远比其他位置的大,假设第一个通道的权重值为(-126,127),第二个通道的权重值为(0.4,0.4),权重的位宽为8,将浮点权重映射到-128~127之间。利用现有技术对权重进行转换,权重的绝对值最大的是127,通过计算得出权重的转换系数为1,利用转换系数1对第一通道的权重进行缩放,得到第一通道的权重缩放后的值为(-126,127);利用转换系数1对第二通道的权重进行缩放,得到第二个通道的权重缩放且四舍五入取整后会变为(0,0),可以看出,经过转换第二通道的权重会变为0,深度学习模型进行后续计算时会导致较大的误差损失。
在深度学习模型运算过程中,由于累乘和累加的计算,得到的输出值会越来越大,当网络层的层数增加时,会造成中间值存储所需的位宽越来越多,计算过程中会发生溢出,需对每一层的输出进行优化,使其保持在一定的范围之类,然后参与后续层的计算,以进一步提高深度学习模型的精度。现有技术对输出值进行优化时,通过找当前网络层中输出值中绝对值最大的输出值,对绝对值最大的输出值进行缩放,进而确定输出值的缩放系数,利用输出值的缩放系数对当前网络层中输出值进行缩放。现有的对权重和输出值的优化方法误差损失较大,对深度学习模型的优化精度低。
作为举例,当前网络层的输出值是a=(2478,3569,51720),设定输出值的位宽包括符号位是12,则需把输出值缩小至1024以内。利用现有技术的方法,输出值中绝对值最大的是51720,通过计算,得到输出值的缩放系数为26,将所有输出值缩放26并取整,得到缩放后的输出值为b=(39,56,808),将b复原到a的过程是c=b×26=(2496,3584,51712),但若将51720视为异常值,把3569视为最大值,则经过以上方法计算得到的缩放后的值为d=(620,892,12930)复原结果是e=(2480,3568,51720),可看出e的损失明显比c小,虽然中间结果d中的12930超过了12bit的范围,但该值本来是个较大的异常值,可以直接按溢出保护的方法处理成1024。在实际应用过程中,极端较大的异常值是很常见的,如图2所示分别展示了vgg19、resnet152和googlenet三个模型的输出分布情况,横坐标是输出值,纵坐标是统计数量的归一化表示,由于输入的是一批图片,所以图中是多条曲线,前面一部分重复在一块了(虚线圈起来的部分),可以看出对于不同图片生成的大部分激活值其分布是相似的,但是在激活值比较大时(实线圈起来的部分)曲线不重复,可以看出激活值较大的时候在当前目标网络层中是占少数的(占比很小,比如10-9,10-7,10-3),因此可以认为后面曲线不重复这部分是图片带来的噪声。以上实例可以看出,如果按照现有技术对网络层的输出值进行优化,优化后的输出值的损失较大,进而优化后的深度学习模型的精度较低。
为了提高深度学习模型转换的优化精度,本申请对权重进行优化时,采用逐通道转换的方法,一条通道中的所有浮点权重设为一组,一条通道计算一个转换系数,通道之间互不影响,有利于降低定浮之间转换的误差损失,提高深度学习模型的优化精度。本申请对网络层的输出值进行优化时,通过目标网络层的最大输出分布确定每个目标网络层的目标浮点值,进而通过计算得到输出缩放系数,利用输出缩放系数对目标深度学习模型中的初始输出值进行转换,使优化后的输出值的损失较低,进而提高深度学习模型的优化精度。
图3为本申请实施例提供的深度学习模型的优化方法的应用场景示意图,上述深度学习模型的优化方法可以用于对深度学习模型进行优化。其中,优化设备20用于获取深度学习模型10中需要优化的数据,并对需要优化的数据进行优化,最后将优化后的数据传输至深度学习模型10中,达到对深度学习模型10优化的效果,提高对图片处理的准确度。
以下结合图3对本申请实施例的深度学习模型的优化方法进行详细说明。
图4示出了本申请提供的深度学习模型的优化方法的示意性流程图,参照图4,对该优化的方法的详述如下:
S101,将图片校准数据输入目标深度学习模型对所述图片校准数据进行处理,得到所述目标深度学习模型中目标网络层的初始输出值。
在本实施例中,目标网络层的初始输出值可以从目标深度学习模型中直接获取,也可以从设置有目标深度学习模型的设备中获取。目标深度学习模型可以是vgg19、resnet152、mobilenetv2、googlenet等卷积神经网络模型,目标深度学习模型为定点模型,也就是目标深度学习模型中的浮点参数已经为被转换成了定点参数。目标深度学习模型可以是多通道的模型,例如可以是三通道或四通道模型等,以输入为图片为例,目标深度学习模型为RGB三通道模型,每个通道对应输出一个初始输出值。
图片校准数据可以是用于训练的与训练场景相同的图片集,将上述数据输入到目标深度学习模型中进行处理,得到目标深度学习模型对图片校准数据进行处理后的输出数据。
目标网络层可以是目标深度学习模型中的中间网络层,也可以是目标深度学习模型中的输出层,其中,对目标深度学习模型中的中间网络层进行优化是为了将输出的输出值转换成预设范围内的值,对目标深度学习模型中的输出层进行优化是为了将输出的定点输出值转换成浮点输出值。
S102,获取所述目标网络层的最大输出分布。
在一种可能的实现方式中,步骤S102的实现过程可以包括:
获取校准数据,并将所述校准数据输入浮点深度学习模型中,得到各个网络层的网络输出值;
选取当前目标网络层中所有网络输出值中最小的网络输出值为该层最大输出分布的最小值;
选取当前目标网络层中所有网络输出值中最大的网络输出值为该层最大输出分布的最大值。
其中,浮点深度学习模型是与目标深度学习模型对应的深度学习模型,浮点深度学习模型中的参数为浮点参数浮点深度学习模型的网络层的输出值也是浮点值。
校准数据可以是用于训练的与训练场景相同的样本集,将上述样本集输入到浮点深度学习模型中,在浮点深度学习模型的网络层会输出对应的输出值,根据上述输出值可以得到每一层网络层的最大输出分布,其中,最大输出分布为该层网络层的输出值所覆盖的最大范围。
作为举例,将图片样本集输入浮点深度学习模型中,第一层网络层的输出值分别为0.1、0.3和0.4,则第一层网络层的最大输出分布为range=(a,b)=(0.1,0.4),其中,a为所有输出值中的最小值,b为所有输出值中的最大值;第二层网络层的输出值分别为57、82和130,则第二层网络层的最大输出分布为range=(a,b)=(57,130)。
可选的,在S102中,目标网络层的最大输出分布的获取方法,可以包括:
获取校准数据,并将所述校准数据输入浮点深度学习模型中,得到各个网络层的网络输出值,得到初始网络输出值集合;
对网络输出值进行排序,删除网络输出值中超出预设值的网络输出值,得到目标网络输出值集合;
选取目标网络输出值集合中所有网络输出值中最小的网络输出值为目标网络层的最大输出分布的最小值;
选取目标网络输出值集合中所有网络输出值中最大的网络输出值为目标网络层的最大输出分布的最大值。
其中,预设值可以是根据经验设立的阈值,以输入为图片为例,因为目标深度学习模型在计算过程中可能会受图片噪声的影响,所以目标中间网络的输出值会有一部分出现异常增大等现象,将此部分输出值去除,再后续计算中会提高计算的精度。
S103,根据所述目标网络层的最大输出分布,计算所述目标网络层的目标浮点值。
在本实施例中,目标浮点值的选取是对初始输出值进行转换的关键,选取一个合适的目标浮点值可以降低对初始输出值进行转换时的损失,进而提高对目标深度学习模型的优化精度。
如图5所示,在一种可能的实现方式中,步骤S103的实现过程可以包括:
S201,将所述最大输出分布等分为预设数量的分布区间,得到每个分布区间的宽度值。
其中,预设数量可以根据最大输出分布的范围预先设置,宽度值由最大输出分布的两端值的差并与预设数量做商获得,由于对最大输出分布是等分的,所以每个分布区间的宽度值相同,使计算时更方便。
可选的,为了方便后续计算,同时也为了能更直观显示分布区间的范围,在获得宽度值之后,可以根据最大输出分布、预设数量和宽度值,构建最大输出分布的坐标图,其中,坐标图可以是直方图、饼图或条形图等。
作为举例:如果第一层网络层的最大输出分布为range=(a,b)=(0.1,0.4),预设数量为3,则宽度值为r=(b-a)/l=(0.4-0.1)/3=0.1,其中,a为最大输出分布的最小值,b为最大输出分布的最大值,l为预设数量。
S202,根据所述宽度值和所述最大输出分布,确定所述目标网络层与不同区间分别对应的原始分布范围。
可选的,步骤S202的实现过程可以包括:
根据所述最大输出分布的中间值和各个所述宽度值依次累加得到的多个结果,确定所述目标中间网络与各个区间对应的原始分布范围的最大值,其中,每累加一次,对应一个所述结果,一个所述结果对应一个原始分布范围的最大值;
根据所述中间值和各个所述宽度值依次相减得到的多个结果,确定所述目标中间网络与各个区间对应的原始分布范围的最小值,其中,每相减一次,对应一个所述结果,一个所述结果对应一个原始分布范围的最小值。
在本实施例中,原始分布范围的最小值和原始分布范围的最大值构成原始分布范围的分布区间range_i=((a+b)/2-i×r,(a+b)/2+i×r);其中,range_i为所述原始分布范围;a为所述最大输出分布的最小值;b为所述最大输出分布的最大值;i为所述宽度值的个数;r为所述宽度值。
最大输出分布的中间值依次累加宽度值指的是:最大输出分布的中间值第一次加一个宽度值,得到一个结果,将上述结果作为第一个原始分布范围的最大值;最大输出分布的中间值第二次加两个宽度值,得到一个结果,将上述结果作为第二个原始分布范围的最大值;最大输出分布的中间值第三次加三个宽度值,得到一个结果,将上述结果作为第三个原始分布范围的最大值;直到最大输出分布的中间值加到二分之一个预设数量的宽度值,如果预设数量为奇数,先将预设数量加1再进行计算。
最大输出分布的中间值依次减去宽度值指的是:最大输出分布的中间值第一次减一个宽度值,得到一个结果,将上述结果作为第一个原始分布范围的最小值;最大输出分布的中间值第二次减两个宽度值,得到一个结果,将上述结果作为第二个原始分布范围的最小值;最大输出分布的中间值第三次减三个宽度值,得到一个结果,将上述结果作为第三个原始分布范围的最小值;直到最大输出分布的中间值减到二分之一个预设数量的宽度值,如果预设数量为奇数,先将预设数量加1再进行计算。
作为举例:第一层网络层的最大输出分布为range=(a,b)=(0.1,0.4),预设数量为3,宽度值为r=(b-a)/l=(0.4-0.1)/3=0.1,最大输出分布的中间值为0.25,第一个原始分布范围为range_1=(0.25-0.1,0.25+0.1)=(0.15,0.35);第二个原始分布范围为range_2=(0.25-0.2,0.25+0.2)=(0.05,0.45),第二个原始分布范围超出了最大输出分布的范围,则第二个原始分布范围为range_2=(0.1,0.4)。
需要说明的是,原始分布范围在最大输出分布的范围内,如果原始分布范围大于最大输出分布的范围,则原始分布范围取最大输出分布的范围。
可选的,步骤S202的实现过程可以包括:
根据分布区间的预设数量和宽度值,设置宽度值组合,其中,第一个组合包括一个宽度值,第二个组合包括两个宽度值,直到第R个组合包括二分之一个预设数量的宽度值,如果预设数量为奇数,则先将预设数量加1再进行计算;
将所述最大输出分布的中间值和各个宽度值组合相加,得到所述目标中间网络与各个区间对应的原始分布范围的最大值;
将所述最大输出分布的中间值和各个宽度值组合相减,得到所述目标中间网络与各个区间对应的原始分布范围的最小值。
本实施例中,设置宽度值组可以使计算原始分布范围时更方便。
作为举例:第一层网络层的最大输出分布为range=(a,b)=(0.1,0.4),预设数量为3,宽度值为r=(b-a)/l=(0.4-0.1)/3=0.1,最大输出分布的中间值为0.25,则第一个组合为0.1,第二个组合为0.1+0.1=0.2;最大输出分布的中间值与第一个组合相加得到第一个原始分布范围的最大值为0.25+0.1=0.35,最大输出分布的中间值与第一个组合相减得到第一个原始分布范围的最小值为0.25-0.1=0.15,因此,第一个原始分布范围为range_1=(0.15,0.35);最大输出分布的中间值与第二个组合相加得到第二个原始分布范围的最大值为0.25+0.2=0.45,最大输出分布的中间值与第二个组合相减得到第二个原始分布范围的最小值为0.25-0.2=0.05,第二个原始分布范围为range_2=(0.05,0.45),第二个原始分布范围超出了最大输出分布的范围,则第二个原始分布范围为range_2=(0.1,0.4)。
可选的,如果在获得宽度值之后,根据最大输出分布、预设数量和宽度值,构建最大输出分布的直方图,步骤S202的实现过程可以包括:
以直方图的中间位置为中心向直方图的两端循环滑动,每滑动一次滑动覆盖的直方图的个数加1,得到所述目标中间网络与各个区间对应的原始分布范围,其中,滑动一次指的是直方图的中间位置分别向直方图的左侧和直方图的右侧分别移动,每次滑动得到的范围对应一个原始分布范围。
在本实施例中,设置直方图,通过在直方图上滑动计算原始分布范围更直观方便。
作为举例:第一层网络层的最大输出分布为range=(a,b)=(0.1,0.4),预设数量为3,宽度值为r=(b-a)/l=(0.4-0.1)/3=0.1,最大输出分布的中间值为0.25,直方图的中间位置第一次分别向左和向右滑动一个直方图,得到第一个原始分布范围为range_1=(0.25-0.1,0.25+0.1)=(0.15,0.35);直方图的中间位置第二次分别向左和向右滑动两个直方图,得到第二个原始分布范围为range_2=(0.25-0.2,0.25+0.2)=(0.05,0.45),第二个原始分布范围超出了最大输出分布的范围,则第二个原始分布范围为range_2=(0.1,0.4)。
S203,根据所述原始分布范围,确定所述目标网络层的目标浮点值。
在一种可能的实现方式中,步骤S203的实现过程可以包括:
S2031,根据所述最大输出分布和所述分布区间,得到各个分布区间对应的数值个数。
在本实施例中,最大输出分布里边包括各个输出值,将最大输出分布均分成各个分布区间,可以得到各个分布区间内包括的数值的个数。
S2032,根据所述原始分布范围和分布区间对应的数值个数,得到所述原始分布范围对应的原始数值集,其中,所述原始数值集为所述原始分布范围所包括的分布区间对应的数值个数的集合。
S2033,将所述原始数值集转换到第二预设范围内,得到所述原始分布范围对应的目标数值集。
在本实施例中,将所述原始数值集转换到第二预设范围内实际上是将原始分布范围包括的分布区间合并成预设份数。第二预设范围可以是输出值的位宽对应的范围的最大值,也可以是根据需要设置的值,得到合并后的区间对应的数值的个数的集合为目标数值集。例如,输出值的位宽为8,原始分布范围需要映射到128的范围内,目标分布范围的计算方法是将原始分布范围合并为128份;输出值的位宽为1,则将原始分布范围包括的分布区间合并为2份。
作为举例:原始分布范围为p1=(2,4,2,1),宽度值为1,原始分布范围包括的分布区间为h1={1~2:2,2~3:4,3~4:2,4~5:1},说明数据分布在1~2之间有2个,2~3之间有4个,3~4之间有2个,4~5之间有1个,则此时的原始数值集p1=(2,4,2,1),假设位宽为1,则需要将原始数值集p1=(2,4,2,1)合并成两份,此时区间h1变为h2={1~3:6,3~5:3},对应的目标数值集为q1=(6,3)。
S2034,计算所述目标数值集和所述原始数值集的相对熵。
在本实施例中,目标数值集和原始数值集均为向量。
可选的,目标分布范围和所述原始分布范围的相对熵为:
d=∑p(i)×log(p(i)/q(i));
其中,d为所述目标分布范围和所述原始分布范围的相对熵;p(i)为原始数值集;q(i)为目标数值集;i为所述宽度值的个数。
需要说明的是,p(i)和q(i)的长度应该相同,如果p(i)和q(i)的长度不同要先转换成长度相同再进行计算,相对熵的计算为现有技术,再次不再赘述。
S2035,查找所有相对熵中的最小相对熵,将所述最小相对熵对应的所述原始分布范围内的数值的绝对值最大的作为所述目标浮点值。在本实施例中,相对熵最小时对应的原始分布范围是与目标中间网络的输出匹配度最高的输出值的分布范围,因此,用最小相对熵对应的所述原始分布范围的数值中绝对值最大的作为所述目标浮点值是最适合计算目标中间网络的输出缩放系数的。通过计算原始分布范围和目标分布范围的相对熵,进而确定目标浮点值使目标浮点值更准确,更适合目标中间网络中输出缩放系数的计算。
S104,根据所述目标浮点值确定用于对所述初始输出值进行转换的输出缩放系数。
在一种可能的实现方式中,步骤S104的实现过程可以包括:
根据输入缩放系数和权重缩放系数,对目标浮点值进行缩放,得到目标深度学习模型的定点输出最大值;
当所述定点输出最大值超过第一预设范围时,根据第一预设范围,对所述定点输出最大值进行缩放,得到所述初始输出值对应的所述输出缩放系数。
其中,所述输入缩放系数为所述目标网络层的输入数据的转换系数,所述浮点缩放系数为所述目标深度学习模型中浮点参数的转换系数。第一预设范围可以是目标深度学习模型各个网络层的输出值的位宽所对应的范围,当然,第一预设范围也可以是根据需要设置的范围。
具体的,输出缩放系数是先计算目标深度学习模型中当前的目标网络层中定点输出最大值,看定点输出最大值是否满足第一预设范围,如果定点输出最大值满足第一预设范围,说明当前的目标网络层中所有的初始输出值均满足第一预设范围,不用进行缩放,如果定点输出最大值不在第一预设范围内,则需要计算输出缩放系数;当目标深度学习模型中有至少两个目标网络层时,除第一个目标网络层外的其他目标网络层的输入数据为前一个目标网络层的目标输出值;第一个目标网络层的输入数据为目标深度学习模型输入层输出的数据。
作为举例,网络层的输出值的位宽为12位,第三预设范围为(211-1,212-1),则目标输出值的最大值的计算方法为:
fixmax=fmmax×2c+e
其中,fixmax为目标输出值的最大值,c为输入缩放系数;e为权重缩放系数,fmmax为目标浮点值。
对定点输出值的最大值进行缩放,进而得到输出缩放系数为:
211-1<fixmax/2m<212-1;
其中,fixmax为目标输出值的最大值,m为待定系数;k=2c+e-m为输出缩放系数。
S105,在所述初始输出值超出第一预设范围的情况下,基于所述输出缩放系数对所述初始输出值进行转换,得到所述初始输出值的目标输出值。
其中,第一预设范围可以是目标深度学习模型中的输出值的位宽所对应的数值范围,当然也可以跟个实际需要设置第一预设范围的值。
具体的,步骤S104的实现过程可以包括:
将初始输出值和输出缩放系数的商作为目标输出值。
作为举例:
当2c+e-m为输出缩放系数时,目标输出值为:
fm=fc/2c+e-m
其中,fm为目标输出值;fc为初始输出值。
S106,根据所述目标输出值对所述目标深度学习模型进行优化。
在本实施例中,对目标深度学习模型的优化是将目标网络层的目标输出值输入目标深度学习模型中代替初始输出值,用目标输出值继续进行后续的计算。
本申请实施例,对目标深度学习模型中各层网络层的输出值进行优化,采用的方法是通过找到一个最适合该目标网络层的目标浮点值,也就是一个最适合的参考值,通过目标浮点值找到一个适合该目标网络层的输出缩放系数,最后通过输出转换系数对目标网络层的初始输出值进行优化,与现有技术的方法相比,本申请的方法优化后的深度学习模型的输出值的损失较低,优化后的深度学习模型的精度更高。
如图6所示,在一种可能的实现方式中,在步骤S101之前,还可以对初始深度学习模型中的浮点参数进行优化,得到目标深度学习模型,具体方法包括:
S1101,获取初始深度学习模型中每条通道中需要训练的浮点参数,其中,一条所述通道中对应一组浮点参数。
在本实施例中,需要训练的浮点参数可以是权重或偏置等参数。为了提高深度学习模型转换的优化精度,本申请进行逐通道转换,一条通道中的所有浮点参数看做一组,一条通道计算一个转换系数,通道之间互不影响,有利于降低定浮之间转换的误差损失,提高深度学习模型的优化精度。
S1102,分别对每一组浮点参数进行定点转换,得到所述浮点参数对应的定点参数。
需要说明的是,如果计算后的定点参数为小数,则通过四舍五入的方法将定点参数取整。
在一种可能的实现方式中,步骤S1102的实现过程可以包括:
基于浮点缩放系数对每一组浮点参数进行定点转换,得到所述浮点参数对应的定点参数;其中,每组浮点参数对应一个转换系数。
在本实施例中,将浮点参数转换为定点参数,找到合适的浮点缩放系数是关键,浮点缩放系数为满足第三预设范围时的所述最大浮点参数的缩放倍数,利用所述浮点缩放系数,对当前通道中的所有浮点参数分别进行缩放,得到所述浮点参数对应的定点参数,一个通道对应一个浮点缩放系数,通道与通道之间互不影响,减小了浮点参数转换时的损失。
具体的,步骤S1102的实现过程可以包括:
S11021,基于第三预设范围和最大浮点参数确定当前通道的浮点缩放系数;其中,所述最大浮点参数为当前通道的浮点参数中绝对值最大的浮点参数。
具体的,基于第三预设范围和最大浮点参数的商确定当前通道的浮点缩放系数。
在本实施例中,对浮点参数的优化其实是将浮点参数缩小到一定的范围,设立第三预设范围可以将浮点参数缩小到第三预设范围内。第三预设范围可以是浮点参数的位宽对应的数值范围,也可以是根据经验设置的数值范围。如果第三预设范围是浮点参数的位宽对应的数值范围,在对最大浮点参数进行缩放前,首先需要获取浮点参数的位宽,位宽可以是8位、12位或16位等,进而确定通道中定点后的浮点参数需要满足的范围。
需要说明的是,如果浮点缩放系数有两个或两个以上满足要求,则浮点参数缩放大最接近第三预设范围的最大值时所对应的缩放系数为浮点缩放系数。
作为举例,如果第三预设范围为(26-1,27-1)浮点缩放系数的计算方法为:
26-1<Wmax×2n<27-1;
其中,Wmax为当前通道的最大浮点参数;2n为当前通道的浮点缩放系数。
S11022,基于所述浮点缩放系数对当前通道中的各个浮点参数进行转换,得到与各个浮点参数对应的定点参数。
具体的,定点参数的获得方法包括:
根据所述浮点缩放系数和各个浮点参数的乘积,确定各个浮点参数对应的定点参数。
作为举例,定点参数的计算方法为:
Wfix=Wfloat×2n
其中,Wfix为定点参数;Wfloat为当前通道中一个浮点参数;2n为当前通道的浮点缩放系数。
作为举例,如果权重的位宽为8位,定点后的浮点参数需要在-128~127之间。第一通道的权重为(-123,126),第一通道中权重的绝对值最大的是126,所以126为第一通道的最大浮点参数。利用26-1<Wmax×2n<27-1,可以得到n为0时满足要求,所以第一通道的浮点缩放系数为1。利用Wfix=Wfloat×2n计算,(-123,126)定点化后为(-123,126)。
第二通道的权重为(0.5,0.5),第二通道的最大浮点参数为0.5,利用26-1<Wmax×2n<27-1,可以得到n为7时满足要求,所以第一通道的浮点缩放系数为128。利用Wfix=Wfloat×2n计算,(0.5,0.5)定点化后为(64,64)。
S1103,根据所述定点参数对所述初始深度学习模型进行优化,得到所述目标深度学习模型。
具体的,对所述初始深度学习模型进行优化是将定点参数输入初始深度学习模型中,用定点参数替代对应的浮点参数参与计算。
本申请实施例,通过逐通道的对浮点参数进行定点转换,一个通道计算一个浮点缩放系数,通道与通道之间进行转换时互补影响,降低了浮点参数转换时的损失,提高了目标深度学习模型的精度。
需要说明的是,如果每一层所述目标网络层中一条通道对应一个权重的浮点缩放系数,相应的,通过计算后目标网络层中的每条通道的输出值对应一个输出缩放系数,每条通道的输出值对应的输出缩放系数是有可能不同的。在目标深度学习模型中存在至少两层中间网络层,且各中间网络层之间存在维度变化时,则需要将输出缩放系数统一,否则目标深度学习模型的计算会发生错误。具体的处理方法如下:
如图7所示,在一种可能的实现方式中,步骤S106的实现过程可以包括:
S601,根据所述目标网络层中所有的所述输出缩放系数确定目标转换系数。
具体的,步骤S601的实现过程可以包括:
将所有的所述输出缩放系数中最小的输出缩放系数作为所述目标转换系数,当前的目标网络层中所有的输出缩放系数都用目标转换系数替代,达到将目标网络层中所有通道的初始输出值的输出缩放系数都统一的目的。
S602,根据所述转换系数对所述目标输出值进行缩放。
具体的,步骤S602的实现过程可以包括:
根据所述目标转换系数和所述输出缩放系数,计算各个所述目标输出值对应的目标缩放系数;
根据各个所述目标缩放系数对对应的所述目标输出值进行缩放。
在本实施例中,目标网络层中各个通道对应的输出缩放系数发生了改变,相应的目标输出值也要随着输出缩放系数的改变而改变。
作为举例:目标缩放系数的计算方法包括:
其中:g为当前的目标网络层一个通道的目标缩放系数;k为当前的目标网络层一个通道的输出缩放系数;kmin为目标转换系数。
S603,根据缩放后的所述目标输出值对所述目标深度学习模型进行优化。
本申请实施例,通过将目标网络层中各个通道的输出缩放系数统一,根据统一的目标缩放系数调整目标输出值,进而满足在目标深度学习模型中存在至少两层所述目标网络层,且各所述目标网络层之间存在维度变化时的需求。
作为举例,为了进一步说明本申请有较高的转换精度,分别待检测目标输入tensorrt下fp32模型与、int8-minmax和本申请进行检测,比较结果如下表1所示,从表中可以看出,本申请的准确率较高。
表1tensorrt下fp32模型与不同的int8定点化模型精度
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
对应于上文实施例所述的深度学习模型的优化方法,图8示出了本申请实施例提供的深度学习模型的优化装置的结构框图,为了便于说明,仅示出了与本申请实施例相关的部分。
参照图8,该装置100包括:
数据输入模块110,用于将图片校准数据输入目标深度学习模型对所述图片校准数据进行处理,得到所述目标深度学习模型中目标网络层的初始输出值;
数据获取模块120,用于获取所述目标网络层的最大输出分布;
数据计算模块130,用于根据所述目标网络层的最大输出分布,计算所述目标网络层的目标浮点值;
输出缩放系数计算模块140,用于根据所述目标浮点值确定用于对所述初始输出值进行转换的输出缩放系数;
数据转换模块150,用于在所述初始输出值超出第一预设范围的情况下,基于所述输出缩放系数对所述初始输出值进行转换,得到所述初始输出值的目标输出值;
模型优化模块160,用于根据所述目标输出值对所述目标深度学习模型进行优化。
在一种可能的实现方式中,数据计算模块130具体包括:
区间划分单元,用于将所述最大输出分布等分为预设数量的分布区间,得到每个分布区间的宽度值;
范围计算单元,用于根据所述宽度值和所述最大输出分布,确定所述目标网络层与不同区间分别对应的原始分布范围;
目标浮点值确定单元,用于根据所述原始分布范围,确定所述目标网络层的目标浮点值。
在一种可能的实现方式中,范围计算单元具体可以用于:
根据所述最大输出分布的中间值和各个所述宽度值依次累加得到的多个结果,确定所述目标中间网络与各个区间对应的原始分布范围的最大值,其中,每累加一次,对应一个所述结果,一个所述结果对应一个原始分布范围的最大值;
根据所述中间值和各个所述宽度值依次相减得到的多个结果,确定所述目标中间网络与各个区间对应的原始分布范围的最小值,其中,每相减一次,对应一个所述结果,一个所述结果对应一个原始分布范围的最小值。
在一种可能的实现方式中,目标浮点值确定单元具体可以用于:
根据所述最大输出分布和所述分布区间,得到各个分布区间对应的数值个数;
根据所述原始分布范围和分布区间对应的数值个数,得到所述原始分布范围对应的原始数值集,其中,所述原始数值集为所述原始分布范围所包括的分布区间对应的数值个数的集合;
将所述原始数值集转换到第二预设范围内,得到所述原始分布范围对应的目标数值集;
计算所述目标数值集和所述原始数值集的相对熵;
查找所有相对熵中的最小相对熵,将所述最小相对熵对应的所述原始分布范围内的数值的绝对值最大的作为所述目标浮点值。
在一种可能的实现方式中,输出缩放系数计算模块140具体可以用于:
根据输入缩放系数和权重缩放系数,对目标浮点值进行缩放,得到目标深度学习模型的定点输出最大值;
当所述定点输出最大值超过第一预设范围时,根据第一预设范围,对所述定点输出最大值进行缩放,得到所述初始输出值对应的所述输出缩放系数。
在一种可能的实现方式中,与数据输入模块110相连的还包括:
参数获取模块,用于获取初始深度学习模型中每条通道中需要训练的浮点参数,其中,一条所述通道中对应一组浮点参数;
定点转换模块,用于分别对每一组浮点参数进行定点转换,得到所述浮点参数对应的定点参数;
初始模型优化模块,用于根据所述定点参数对所述初始深度学习模型进行优化,得到所述目标深度学习模型。
在一种可能的实现方式中,定点转换模块具体可以用于:
浮点转换单元,用于基于浮点缩放系数对每一组浮点参数进行定点转换,得到所述浮点参数对应的定点参数;其中,每组浮点参数对应一个转换系数。
在一种可能的实现方式中,浮点转换单元具体可以用于:
基于第三预设范围和最大浮点参数确定当前通道的浮点缩放系数;其中,所述最大浮点参数为当前通道的浮点参数中绝对值最大的浮点参数;
基于所述浮点缩放系数对当前通道中的各个浮点参数进行转换,得到与各个浮点参数对应的定点参数。
在一种可能的实现方式中,模型优化模块160具体还可以用于:
目标获得单元,用于根据所述目标网络层中所有的所述输出缩放系数确定目标转换系数,其中,所述目标深度学习模型中存在至少两层所述目标网络层,每一层所述目标网络层中一条通道对应一个所述输出缩放系数,且各所述目标网络层之间存在维度变化;
缩放单元,用于根据所述转换系数对所述目标输出值进行缩放;
数据优化单元,用于根据缩放后的所述目标输出值对所述目标深度学习模型进行优化。
在一种可能的实现方式中,目标获得单元具体可以用于:
将所有的所述输出缩放系数中最小的输出缩放系数作为所述目标转换系数。
在一种可能的实现方式中,缩放单元具体可以用于:
根据所述目标转换系数和所述输出缩放系数,计算各个所述目标输出值对应的目标缩放系数;
根据各个所述目标缩放系数对对应的所述目标输出值进行缩放。
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例还提供了一种终端设备,参见图9,该终端设备400可以包括:至少一个处理器410、存储器420以及存储在所述存储器420中并可在所述至少一个处理器410上运行的计算机程序,所述处理器410执行所述计算机程序时实现上述任意各个方法实施例中的步骤,例如图4所示实施例中的步骤S101至步骤S106。或者,处理器410执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能,例如图8所示模块110至160的功能。
示例性的,计算机程序可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器420中,并由处理器410执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序段,该程序段用于描述计算机程序在终端设备400中的执行过程。
本领域技术人员可以理解,图9仅仅是终端设备的示例,并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如输入输出设备、网络接入设备、总线等。
处理器410可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器420可以是终端设备的内部存储单元,也可以是终端设备的外部存储设备,例如插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。所述存储器420用于存储所述计算机程序以及终端设备所需的其他程序和数据。所述存储器420还可以用于暂时地存储已经输出或者将要输出的数据。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
本申请实施例提供的深度学习模型的优化方法可以应用于计算机、平板电脑、笔记本电脑、上网本、个人数字助理(personal digital assistant,PDA)等终端设备上,本申请实施例对终端设备的具体类型不作任何限制。
以所述终端设备为计算机为例。图10示出的是与本申请实施例提供的计算机的部分结构的框图。参考图10,计算机包括:通信电路510、存储器520、输入单元530、显示单元540、音频电路550、无线保真(wireless fidelity,WiFi)模块560、处理器570以及电源580等部件。
下面结合图10对计算机的各个构成部件进行具体的介绍:
通信电路510可用于收发信息或通话过程中,信号的接收和发送,特别地,将图像采集设备发送的图像样本接收后,给处理器570处理;另外,将图像采集指令发送给图像采集设备。通常,通信电路包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low Noise Amplifier,LNA)、双工器等。此外,通信电路510还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(Global System of Mobile communication,GSM)、通用分组无线服务(GeneralPacket Radio Service,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、长期演进(Long TermEvolution,LTE))、电子邮件、短消息服务(Short Messaging Service,SMS)等。
存储器520可用于存储软件程序以及模块,处理器570通过运行存储在存储器520的软件程序以及模块,从而执行计算机的各种功能应用以及数据处理。存储器520可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元530可用于接收输入的数字或字符信息,以及产生与计算机的用户设置以及功能控制有关的键信号输入。具体地,输入单元530可包括触控面板531以及其他输入设备532。触控面板531,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板531上或在触控面板531附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板531可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器570,并能接收处理器570发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板531。除了触控面板531,输入单元530还可以包括其他输入设备532。具体地,其他输入设备532可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元540可用于显示由用户输入的信息或提供给用户的信息以及计算机的各种菜单。显示单元540可包括显示面板541,可选的,可以采用液晶显示器(Liquid CrystalDisplay,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板541。进一步的,触控面板531可覆盖显示面板541,当触控面板531检测到在其上或附近的触摸操作后,传送给处理器570以确定触摸事件的类型,随后处理器570根据触摸事件的类型在显示面板541上提供相应的视觉输出。虽然在图10中,触控面板531与显示面板541是作为两个独立的部件来实现计算机的输入和输入功能,但是在某些实施例中,可以将触控面板531与显示面板541集成而实现计算机的输入和输出功能。
音频电路550可提供用户与计算机之间的音频接口。音频电路550可将接收到的音频数据转换后的电信号,传输到扬声器由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路550接收后转换为音频数据,再将音频数据输出处理器570处理后,经通信电路510以发送给比如另一计算机,或者将音频数据输出至存储器520以便进一步处理。
WiFi属于短距离无线传输技术,计算机通过WiFi模块560可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图10示出了WiFi模块560,但是可以理解的是,其并不属于计算机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器570是计算机的控制中心,利用各种接口和线路连接整个计算机的各个部分,通过运行或执行存储在存储器520内的软件程序和/或模块,以及调用存储在存储器520内的数据,执行计算机的各种功能和处理数据,从而对计算机进行整体监控。可选的,处理器570可包括一个或多个处理单元;优选的,处理器570可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器570中。
计算机还包括给各个部件供电的电源580(比如电池),优选的,电源580可以通过电源管理系统与处理器570逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述深度学习模型的优化方法各个实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在移动终端上运行时,使得移动终端执行时实现可实现上述深度学习模型的优化方法各个实施例中的步骤。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/网络设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/网络设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (12)

1.一种深度学习模型的优化方法,其特征在于,包括:
将图片校准数据输入目标深度学习模型对所述图片校准数据进行处理,得到所述目标深度学习模型中目标网络层的初始输出值;
获取所述目标网络层的最大输出分布,其中,所述最大输出分布包括所述目标网络层输出的最小值和最大值,以及输出的处于最大值和最小值之间的值;
根据所述目标网络层的最大输出分布,计算所述目标网络层的目标浮点值,其中,所述目标浮点值不为所述最大输出分布中绝对值最大的数值;
根据所述目标浮点值确定用于对所述初始输出值进行转换的输出缩放系数;
在所述初始输出值超出第一预设范围的情况下,基于所述输出缩放系数对所述初始输出值进行转换,得到所述初始输出值的目标输出值;
根据所述目标输出值对所述目标深度学习模型进行优化;
所述根据所述目标浮点值确定用于对所述初始输出值进行转换的输出缩放系数,包括:
根据输入缩放系数和权重缩放系数,对目标浮点值进行缩放,得到目标深度学习模型的定点输出最大值;
当所述定点输出最大值超过第一预设范围时,根据第一预设范围,对所述定点输出最大值进行缩放,得到所述初始输出值对应的所述输出缩放系数。
2.如权利要求1所述的深度学习模型的优化方法,其特征在于,所述根据所述目标网络层的最大输出分布,计算所述目标网络层的目标浮点值,包括:
将所述最大输出分布等分为预设数量的分布区间,得到每个分布区间的宽度值;
根据所述宽度值和所述最大输出分布,确定所述目标网络层与不同区间分别对应的原始分布范围;
根据所述原始分布范围,确定所述目标网络层的目标浮点值。
3.如权利要求2所述的深度学习模型的优化方法,其特征在于,所述根据所述宽度值和所述最大输出分布,确定所述目标网络层与不同区间分别对应的原始分布范围,包括:
根据所述最大输出分布的中间值和各个所述宽度值依次累加得到的多个结果,确定所述目标中间网络与各个区间对应的原始分布范围的最大值,其中,每累加一次,对应一个所述结果,一个所述结果对应一个原始分布范围的最大值;
根据所述中间值和各个所述宽度值依次相减得到的多个结果,确定所述目标中间网络与各个区间对应的原始分布范围的最小值,其中,每相减一次,对应一个所述结果,一个所述结果对应一个原始分布范围的最小值。
4.如权利要求2所述的深度学习模型的优化方法,其特征在于,所述根据所述原始分布范围,确定所述目标网络层的目标浮点值,包括:
根据所述最大输出分布和所述分布区间,得到各个分布区间对应的数值个数;
根据所述原始分布范围和分布区间对应的数值个数,得到所述原始分布范围对应的原始数值集,其中,所述原始数值集为所述原始分布范围所包括的各个分布区间对应的数值个数的集合;
将所述原始数值集转换到第二预设范围内,得到所述原始分布范围对应的目标数值集;
计算所述目标数值集和所述原始数值集的相对熵;
查找所有相对熵中的最小相对熵,将所述最小相对熵对应的所述原始分布范围内的数值的绝对值最大的作为所述目标浮点值。
5.如权利要求1所述的深度学习模型的优化方法,其特征在于,在将图片校准数据输入目标深度学习模型对所述图片校准数据进行处理,得到所述目标深度学习模型中目标网络层的初始输出值之前,所述方法还包括:
获取初始深度学习模型中每条通道中需要训练的浮点参数,其中,一条所述通道中对应一组浮点参数;
分别对每一组浮点参数进行定点转换,得到所述浮点参数对应的定点参数;
根据所述定点参数对所述初始深度学习模型进行优化,得到所述目标深度学习模型。
6.如权利要求5所述的深度学习模型的优化方法,其特征在于,所述分别对每一组浮点参数进行定点转换,得到所述浮点参数对应的定点参数,包括:
基于浮点缩放系数对每一组浮点参数进行定点转换,得到所述浮点参数对应的定点参数;其中,每组浮点参数对应一个转换系数。
7.如权利要求6所述的深度学习模型的优化方法,其特征在于,所述基于浮点缩放系数对每一组浮点参数进行定点转换,得到所述浮点参数对应的定点参数,包括:
基于第三预设范围和最大浮点参数确定当前通道的浮点缩放系数;其中,所述最大浮点参数为当前通道的浮点参数中绝对值最大的浮点参数;
基于所述浮点缩放系数对当前通道中的各个浮点参数进行转换,得到与各个浮点参数对应的定点参数。
8.如权利要求1所述的深度学习模型的优化方法,其特征在于,所述根据所述目标输出值对所述目标深度学习模型进行优化,包括:
根据所述目标网络层中所有的所述输出缩放系数确定目标转换系数,其中,所述目标深度学习模型中存在至少两层中间网络层,每一层所述中间网络层中一条通道对应一个所述输出缩放系数,且各所述中间网络层之间存在维度变化;
根据所述目标转换系数对所述目标输出值进行缩放;
根据缩放后的所述目标输出值对所述目标深度学习模型进行优化。
9.如权利要求8所述的深度学习模型的优化方法,其特征在于,所述根据所述目标网络层中所有的所述输出缩放系数确定目标转换系数,包括:
将所有的所述输出缩放系数中最小的输出缩放系数作为所述目标转换系数;
所述根据所述目标转换系数对所述目标输出值进行缩放,包括:
根据所述目标转换系数和所述输出缩放系数,计算各个所述目标输出值对应的目标缩放系数;
根据各个所述目标缩放系数对对应的所述目标输出值进行缩放。
10.一种深度学习模型的优化装置,其特征在于,包括:
数据输入模块,用于将图片校准数据输入目标深度学习模型对所述图片校准数据进行处理,得到所述目标深度学习模型中目标网络层的初始输出值;
数据获取模块,用于获取所述目标网络层的最大输出分布,其中,所述最大输出分布包括所述目标网络层输出的最小值和最大值,以及输出的处于最大值和最小值之间的值;
数据计算模块,用于根据所述目标网络层的最大输出分布,计算所述目标网络层的目标浮点值,其中,所述目标浮点值不为所述最大输出分布中绝对值最大的数值;
输出缩放系数计算模块,用于根据所述目标浮点值确定用于对所述初始输出值进行转换的输出缩放系数;
数据转换模块,用于在所述初始输出值超出第一预设范围的情况下,基于所述输出缩放系数对所述初始输出值进行转换,得到所述初始输出值的目标输出值;
模型优化模块,用于根据所述目标输出值对所述目标深度学习模型进行优化;
所述输出缩放系数计算模块用于:
根据输入缩放系数和权重缩放系数,对目标浮点值进行缩放,得到目标深度学习模型的定点输出最大值;
当所述定点输出最大值超过第一预设范围时,根据第一预设范围,对所述定点输出最大值进行缩放,得到所述初始输出值对应的所述输出缩放系数。
11.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至9任一项所述的深度学习模型的优化方法。
12.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至9任一项所述的深度学习模型的优化方法。
CN202010061884.7A 2020-01-19 2020-01-19 深度学习模型的优化方法、装置及终端设备 Active CN111310890B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010061884.7A CN111310890B (zh) 2020-01-19 2020-01-19 深度学习模型的优化方法、装置及终端设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010061884.7A CN111310890B (zh) 2020-01-19 2020-01-19 深度学习模型的优化方法、装置及终端设备

Publications (2)

Publication Number Publication Date
CN111310890A CN111310890A (zh) 2020-06-19
CN111310890B true CN111310890B (zh) 2023-10-17

Family

ID=71146830

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010061884.7A Active CN111310890B (zh) 2020-01-19 2020-01-19 深度学习模型的优化方法、装置及终端设备

Country Status (1)

Country Link
CN (1) CN111310890B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112130896B (zh) * 2020-08-17 2022-03-25 深圳云天励飞技术股份有限公司 神经网络模型迁移方法、装置、电子设备及存储介质
CN113743593B (zh) * 2021-09-27 2023-08-22 上海齐感电子信息科技有限公司 神经网络量化方法、系统、存储介质及终端
CN114444658A (zh) * 2021-12-31 2022-05-06 苏州浪潮智能科技有限公司 一种深度学习模型推理方法、系统、设备及计算机介质
CN114918919B (zh) * 2022-05-25 2023-11-28 北京理工大学 一种机器人运动技能学习方法及系统
CN115459366B (zh) * 2022-11-11 2024-02-27 阿里巴巴(中国)有限公司 电力系统中机组的控制方法、存储介质以及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107766939A (zh) * 2017-11-07 2018-03-06 维沃移动通信有限公司 一种数据处理方法、装置及移动终端
WO2019120114A1 (zh) * 2017-12-21 2019-06-27 深圳励飞科技有限公司 数据定点化处理方法、装置、电子设备及计算机存储介质
CN110135580A (zh) * 2019-04-26 2019-08-16 华中科技大学 一种卷积网络全整型量化方法及其应用方法
CN110210619A (zh) * 2019-05-22 2019-09-06 上海商汤智能科技有限公司 神经网络的训练方法及装置、电子设备和存储介质
JP2019160319A (ja) * 2018-03-09 2019-09-19 キヤノン株式会社 多階層ニューラルネットワークモデルを最適化して適用する方法及び装置、及び記憶媒体

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107766939A (zh) * 2017-11-07 2018-03-06 维沃移动通信有限公司 一种数据处理方法、装置及移动终端
WO2019120114A1 (zh) * 2017-12-21 2019-06-27 深圳励飞科技有限公司 数据定点化处理方法、装置、电子设备及计算机存储介质
JP2019160319A (ja) * 2018-03-09 2019-09-19 キヤノン株式会社 多階層ニューラルネットワークモデルを最適化して適用する方法及び装置、及び記憶媒体
CN110135580A (zh) * 2019-04-26 2019-08-16 华中科技大学 一种卷积网络全整型量化方法及其应用方法
CN110210619A (zh) * 2019-05-22 2019-09-06 上海商汤智能科技有限公司 神经网络的训练方法及装置、电子设备和存储介质

Also Published As

Publication number Publication date
CN111310890A (zh) 2020-06-19

Similar Documents

Publication Publication Date Title
CN111310890B (zh) 深度学习模型的优化方法、装置及终端设备
CN109739555B (zh) 包括乘累加模块的芯片、终端及控制方法
CN108733342B (zh) 音量调节方法、移动终端及计算机可读存储介质
CN110688088B (zh) 一种面向神经网络的通用非线性激活函数计算装置和方法
CN110929838B (zh) 神经网络中位宽定点化方法、装置、终端和存储介质
US11249721B2 (en) Multiplication circuit, system on chip, and electronic device
CN106407201B (zh) 一种数据处理方法、装置及计算机可读存储介质
CN110069715B (zh) 一种信息推荐模型训练的方法、信息推荐的方法及装置
CN111104967B (zh) 图像识别网络训练方法、图像识别方法、装置及终端设备
CN108536753B (zh) 重复信息的确定方法及相关装置
US20110010509A1 (en) System and method of sorting and calculating statistics on large data sets with a known value range
CN103826136A (zh) 一种快速离散余弦反变换的方法和终端
CN111144511B (zh) 基于神经网络的图像处理方法、系统、介质及电子终端
CN112488297B (zh) 一种神经网络剪枝方法、模型生成方法及装置
CN113268572A (zh) 问答方法及装置
CN116466910A (zh) 一种基于浮点数的查表方法、装置、电子设备及存储介质
CN110222305B (zh) 一种基于双曲cordic的对数函数计算系统及方法
CN111582432B (zh) 一种网络参数处理方法及装置
CN113780523A (zh) 图像处理方法、装置、终端设备及存储介质
Lyu et al. PWL-based architecture for the logarithmic computation of floating-point numbers
WO2023236610A1 (zh) 信号检测方法、装置、电子设备及存储介质
CN113159267A (zh) 一种图像数据处理方法、装置及终端设备
US20220137922A1 (en) Bit-width optimization method for performing floating point to fixed point conversion
CN111325598B (zh) 一种物品推荐方法、装置及终端设备
CN111242081A (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