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

一种端到端的模型的量化训练方法、装置以及设备与流程

2022-12-19 22:55:08 来源:中国专利 TAG:


1.本说明书涉及互联网技术领域,尤其涉及一种端到端的模型的量化训练方法、装置以及设备。


背景技术:

2.随着物联网(internet of things,iot)的发展,越来越多的模型需要在物联网设备侧进行执行,这通常需要对模型中的浮点值进行量化处理。当前的处理方式可以将已经训练好的模型直接转换为量化模型,但会损失一定的精度;或者在训练过程中采用逐层训练的方式来训练得到量化模型,效率低。
3.基于此,需要更加便捷的端到端的模型的量化训练方案。


技术实现要素:

4.本说明书实施例提供一种端到端的模型的量化训练方法、装置、设备以及存储介质,用以解决如下技术问题:需要更加便捷的端到端的模型的量化训练方案。
5.为解决上述技术问题,本说明书一个或多个实施例是这样实现的:
6.在第一方面,本说明书实施例提供一种端到端的模型的量化训练方法,所述模型包括n个训练层,n为大于1的自然数,所述方法包括:针对第i训练层,确定其所包含的训练参数的浮点真实值fi,1≤i≤n,i为自然数;采用预设的量化函数将所述浮点值fi转换为整型值zi,以及,采用预设的反量化函数将所述整型值zi转换为浮点预测值f
i’;根据所述浮点真实值fi和所述浮点预测值fi’确定所述第i训练层所对应的损失值ari;融合所述n个训练层所产生的n个损失值ar1至arn生成模型的损失值;根据所述损失值对所述n个训练层中所包含的训练参数进行训练。
7.在第二方面,本说明书实施例提供的一种端到端的模型的量化训练装置,所述模型包括n个训练层,n为大于1的自然数,所述装置包括:确定模块,针对第i训练层,确定其所包含的训练参数的浮点真实值fi,1≤i≤n,i为自然数;转换模块,采用预设的量化函数将所述浮点值fi转换为整型值zi,以及,采用预设的反量化函数将所述整型值zi转换为浮点预测值f
i’;损失计算模块,根据所述浮点真实值fi和所述浮点预测值fi’确定所述第i训练层所对应的损失值ari;融合模块,融合所述n个训练层所产生的n个损失值ar1至arn生成模型的损失值;训练模块,根据所述损失值对所述n个训练层中所包含的训练参数进行训练。
8.在第三方面,本说明书一个或多个实施例提供一种电子设备,包括:
9.至少一个处理器;以及,
10.与所述至少一个处理器通信连接的存储器;其中,
11.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如第一方面所述的方法。
12.在第四方面,本说明书实施例提供一种非易失性计算机存储介质存储有计算机可执行指令,当计算机读取存储介质中的计算机可执行指令后,该指令使得一个或多个处理
器执行如第一方面所述的方法。
13.本说明书一个或多个实施例采用的上述至少一个技术方案能够达到以下有益效果:通过针对第i训练层,确定其所包含的训练参数的浮点真实值fi,1≤i≤n,i为自然数;采用预设的量化函数将所述浮点值fi转换为整型值zi,以及,采用预设的反量化函数将所述整型值zi转换为浮点预测值f
i’;根据所述浮点真实值fi和所述浮点预测值fi’确定所述第i训练层所对应的损失值ari;融合所述n个训练层所产生的n个损失值ar1至arn生成模型的损失值;根据所述损失值对所述n个训练层中所包含的训练参数进行训练,从而实现训练模型中所有层的权重量化参数和激活量化参数的量化训练,不需要把模型分离成多个子模型进行分开训练,更为便捷。
附图说明
14.为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
15.图1为本说明书实施例提供的一种基端到端的模型的量化训练方法的流程示意图;
16.图2为本说明书实施例所提供的一种模型的架构示意图;
17.图3为本说明书实施例所提供的一种模拟退火的量化训练的示意图;
18.图4为本说明书实施例所提供的一种激活策略的示意图;
19.图5为本说明书实施例所提供的一种端到端的模型的量化训练装置的结构示意图;
20.图6为本说明书实施例提供的一种电子设备的结构示意图。
具体实施方式
21.本说明书实施例提供一种端到端的模型的量化训练方法、装置、设备以及存储介质。
22.为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
23.在现有的模型的量化训练过程中,要么是采用一种黑盒子的形式,将预先训练好的包含有浮点值参数的模型直接转换为量化模型,这个过程通常会损失模型的精度,这在一些高精度领域(例如,人脸识别领域或者风险控制领域)是不可接受的。
24.端到端学习(end-to-end learning),也称端到端训练,是指在学习过程中,一般不需要明确地给出不同模块或阶段的功能,中间过程不需要人为干预。端到端学习的训练数据为“输入-输出”对的形式,无需提供其他额外信息。即不对训练数据或者模型做其他额外处理,从训练数据输入到任务结果输出,整个训练和预测过程,都是在模型里完成的。
25.而现有对于模型的量化训练的方式中通常因为不能收敛,因此不能直接用端到端的训练方式,而是逐层进行训练,或者对模型各功能模块进行分块训练,训练过程不仅比较繁琐,训练的量化精度损失仍然比较大。基于此,本说明实施例提供一种便捷的端到端的模型的量化训练方案。
26.在第一方面,如图1所示,图1为本说明书实施例提供的一种基端到端的模型的量化训练方法的流程示意图,所述模型包括n个训练层,所述方法包括以下步骤:
27.s101:针对第i训练层,确定其所包含的训练参数的浮点真实值fi,1≤i≤n,i为自然数。
28.所述模型可以称为端到端后量化模型(network-wise post-training quantization,nwq)模型,该模型的架构如图2所示,图2为本说明书实施例所提供的一种模型的架构示意图。模型可以包括n个训练层,其中,所述训练层包括神经网络模型中包含的诸如特征提取层、卷积层、激活层以及连接层等等各层,即如图2中所示的layer1至layern等等。
29.在实际的模型训练中,对于各训练层中所包含的训练参数进行训练时,所得到的取值通常都是浮点值。为了进行相应的量化训练而训练得到整型取值,在本技术实施例中,模型架构中将包括如图2中所示的浮点子网络和伪量化子网络。其中浮点子网络包括n个训练层,伪量化子网络包括与所述n个训练层一一对应的伪量化层用于辅助训练。
30.浮点子网络和伪量化子网络的架构一致,相应的,在训练过程中,浮点子网络中参数的取值为浮点值;而伪量化子网络中参数的取值为整型值。
31.浮点子网络中的参数的初始值可以任意给定,随着将校准图像输入前述的nwq模型,首先将通过浮点子网络来提取特征并对浮点子网络中训练参数进行调整,针对第i个训练层,即可以在每次训练的过程中确定其所包含的训练参数的浮点真实值fi,1≤i≤n,i为自然数。
32.s103,采用预设的量化函数将所述浮点值fi转换为整型值zi,以及,采用预设的反量化函数将所述整型值zi转换为浮点预测值f
i’。
33.在常规情况下,每次学习得到的训练参数的取值通常不会是整型取值,因此,可以采用预设的量化函数将所述第i训练层的真实浮点值fi转换为整型值zi。量化函数的功能是将浮点值转换为一定区间内的整型取值,量化函数中包含有带训练的参数。
34.例如,一种量化函数的形式可以是如下:xq=clip(int(x/s zp),0,255),其中,x为输入的浮点值(即真实浮点值fi),xq即为转换之后得到的整型值(即整型值zi),int为取整操作,clip为截断操作,0和255为预设的超参数(超参数的大小可以根据实际需要预先调整),通过clip操作,若得到的xq大于255的取值会被赋值为255,若得到的xq小于0的取值会被赋值为0。s和zp为可训练的参数,随着训练轮次的改变而改变,s和zp的初始值可以随机给定。
35.在得到了整型值zi之后,即可以采用预设的反量化函数将所述整型值再次转换为浮点值(即浮点预测值f
i’),反量化函数的功能即为将整型值转换为浮点值。在本说明书实施例中,反量化函数和量化函数中应当包含有同样的可训练参数。
36.例如,一种反量化函数的形式可以是如下:x
deq
=(x
q-zp)*s;其中x
deq
即为得到的浮点预测值,zp和s为与量化函数中相同的可训练的参数。需要说明的是,在这个过程中,zp
取值在训练过程中是整型取值,而s为浮点取值。其中,zp的取值表征了原点位置,而s的取值表征了量化过程中缩放的尺度。
37.s105,根据所述浮点真实值fi和所述浮点预测值fi’确定所述第i训练层所对应的损失值ari。
38.通过前述里量化和反量化的方式,显然产生的训练参数的浮点预测值fi’和浮点真实值fi之间将存在差异。因此,可以基于浮点预测值fi’和浮点真实值fi之间的差异来计算第i层的损失值ari。
39.计算得到的浮点预测值fi’和浮点真实值fi其中都包含有多个元素(即多个训练参数)。因此,具体计算损失值的方式可以采用正则损失计算。例如,可以采用第一正则损失或者第二正则损失。
40.第一正则损失是指权值向量中各个元素的绝对值之和,例如假设在第i层中存在n个训练参数y1至y2,那么浮点真实值fi可以记为fi=(y1,
……
,yn);对应的浮点预测值f
i’可以记为f
i’=(y1’,
……
,yn’),从而第一正则损失可以记为第二正则损失是指权值向量中各个元素的平方和然后再求平方根,即第二正则损失可以记为
41.如图2所示,在该模型中由于存在n个训练层,实际上因此将会产生n个对应的损失值ar1至arn。在如图2所示的示意图中,实际上l
quant
即为第n层的损失值arn,只不过由于其是模型最后一层的损失值,具有一定的特殊性,因此,未使用arn而是使用了l
quant
在示意图中进行了展示。
42.s107,融合所述n个训练层所产生的n个损失值ar1至arn生成模型的损失值。
43.如图2中所示,可以采用直接相加ar1至arn的方式产生模型的损失值loss。或者,根据预设的权重分布,加权求和所述n个损失值ar1至arn生成模型的损失值。
44.例如,一种权重分布的方式可以是。将ar1至ar
n-1
的和记为lar,而将最后一层的损失arn记为l
quant
,进而,加权融合所述lar和l
quant
,从而生成模型的损失值loss。在这种方式中,通常由于最后一层更能表征模型的整体在训练过程中的整体偏差,因此可以给最后一层损失l
quant
较大的权重,例如,loss=0.3*lar 0.7*l
quant

45.s109,根据所述损失值对所述n个训练层中所包含的训练参数进行训练。
46.需要说明的是,在如图2所示的架构中,对n个训练层中所包含的训练参数进行训练包括对于各层中的训练参数的浮点值进行训练,以及,包括对量化函数和反量化函数中的参数进行训练。
47.对于各层中的训练参数的浮点值进行训练可以使得模型最终能够达到一定的精度,而通过如图2中所示意的假量化层对量化函数和反量化函数中的参数进行训练可以使得最终训练得到的模型中的各层中的训练参数的浮点值可以转换为有效的整型值。换言之,通过前述二者的联合,可以使得模型在保证精度的同时,实现端到端的整型量化训练。
48.通过针对第i训练层,确定其所包含的训练参数的浮点真实值fi,1≤i≤n,i为自然数;采用预设的量化函数将所述浮点值fi转换为整型值zi,以及,采用预设的反量化函数将所述整型值zi转换为浮点预测值f
i’;根据所述浮点真实值fi和所述浮点预测值fi’确定所述第i训练层所对应的损失值ari;融合所述n个训练层所产生的n个损失值ar1至arn生成模型的损失值;根据所述损失值对所述n个训练层中所包含的训练参数进行训练,从而实现训练模型中所有层的权重量化参数和激活量化参数的量化训练,不需要把模型分离成多个
子模型进行分开训练,更为便捷。
49.在一种实施例中,在根据所述损失值对所述n个训练层中所包含的训练参数进行训练时,可以采用模拟退火的方案。即确定当前的训练轮次t,根据所述训练轮次t确定在第t次训练中参与训练的训练参数的数量k,其中,所述数量k与所述训练轮次t正相关;根据所述损失值对所述k个训练参数进行训练。
50.例如,可以设定一个丢失参数a
drop
,其中,a
drop
属于区间[0,1]。a
drop
可以是一个与训练轮次正相关的函数取值,用于表征在包含有m个参数的训练层中随机选取k=m*a
drop
个训练参数参与训练。
[0051]
这里的参与训练指的在已经确定了m个参数的浮点真实值之后,选取k个训练参数的浮点真实值进行量化函数和反量化函数的变化得到对应的k个浮点预测值,并基于这k个训练参数计算该训练层的损失值。
[0052]
例如,a
drop
可以是一个与当前的训练轮次t和最大训练轮次tmax相关的分段函数,其形式可能如下即在前一半的轮次中仅随机选取一半的浮点数参与训练,随着训练轮次的提高,慢慢的进行全定点化的训练,通过该方式可以极大降低模型在训练过程中的量化损失。
[0053]
如图3所示,图3为本说明书实施例所提供的一种模拟退火的量化训练的示意图。在该示意图中,黑圈表示最终参与了量化训练的参数。当训练轮次为0,a
drop
=0.5,此时仅需要一半的浮点数参与训练,随着训练轮次t的增大,最终将会所有的训练参数参与量化训练。
[0054]
在一种实施例中,在确定其所包含的训练参数的浮点真实值fi,还可以采用模拟退火的取整训练策略,通过asoftmax的方案鼓励学习权重的取整离散化。
[0055]
具体而言,即可以采用与所述训练轮次t相关的激活函数将所述n个训练层中的训练参数进行激活转换,生成第t次训练时所得到的训练参数的浮点真实值;其中,当训练轮次t越大,所述浮点真实值越靠近0或者1。
[0056]
例如,可以采用如下形式的激活函数对任意层的训练参数的取值进行激活:
[0057]
其中,xk为在该训练层中的第k个可训练参数,t为当前的训练轮次,tmax为预设的最大的训练轮次。通过模拟退火的取整训练策,对于可训练参数而言,其t取值较小的时候,τ的取值接近于1,此时激活之后得到的asoftmax(xk)的取值作为训练参数的浮点真实值时将会是一个浮点值,而随着t逐渐增大,显然τ的取值将会逐渐变小,此时,激活之后得到的asoftmax(xk)将会向0或者1进行逼近。如图4所示,图4为本说明书实施例所提供的一种激活策略的示意图。在该示意图中,在训练开始时,得到的各激活值为在区间[0,1]之间广泛分布的浮点值,而当训练轮次增大后,得到的各训练参数的激活值将要么趋近于0,要么趋近于1。
[0058]
通过这样的方式进行激活得到训练参数的浮点真实值,让模型的各训练参数的值慢慢从浮点型收敛到定点型(即0或者1),可以极大的降低在后续进行量化和反量化时锁频产生的的精度损失。
[0059]
需要说明的是,基于不同形式的asoftmax的选取,可以使得各训练参数的激活值所趋近的值不同。换言之,可以基于实际需要来选取asoftmax的形式,使得各训练参数的激活值趋近于所需要的定点值。
[0060]
此外,由于该模型的训练目标是将各训练参数进行量化(即整型取值化)。因此,在训练达到最大轮次t
max
时,可以基于最终训练得到的量化函数中的参数将所述t
max
次时所得到参数的浮点真实值转换为对应的整型值z
tmax
,并将此时的整型值z
tmax
确定为所述模型中各参数的目标取值,从而得到目标模型,实现模型的端到端的量化训练。
[0061]
基于同样的思路,本说明书一个或多个实施例还提供了上述方法对应的装置和设备,如图5、图6所示。
[0062]
在第二方面,如图5所示,图5为本说明书实施例所提供的一种端到端的模型的量化训练装置的结构示意图,所述模型包括n个训练层,n为大于1的自然数,所述装置包括:
[0063]
确定模块501,针对第i训练层,确定其所包含的训练参数的浮点真实值fi,1≤i≤n,i为自然数;
[0064]
转换模块503,采用预设的量化函数将所述浮点值fi转换为整型值zi,以及,采用预设的反量化函数将所述整型值zi转换为浮点预测值f
i’;
[0065]
损失计算模块505,根据所述浮点真实值fi和所述浮点预测值fi’确定所述第i训练层所对应的损失值ari;
[0066]
融合模块507,融合所述n个训练层所产生的n个损失值ar1至arn生成模型的损失值;
[0067]
训练模块509,根据所述损失值对所述n个训练层中所包含的训练参数进行训练。
[0068]
可选地,所述训练模块509,确定当前的训练轮次t,根据所述训练轮次t确定在第t次训练中参与训练的训练参数的数量k,其中,所述数量k与所述训练轮次t正相关;根据所述损失值对所述k个训练参数进行训练。
[0069]
可选地,所述确定模块501,采用与所述训练轮次t相关的激活函数将所述n个训练层中的训练参数进行激活转换,生成第t次训练时所得到的训练参数的浮点真实值;其中,当训练轮次t越大,所述浮点真实值越靠近0或者1。
[0070]
可选地,所述训练模块509,当所述训练轮次t达到预设值t
max
时,将所述t
max
次训练得到的整型值z
tmax
确定为所述模型的目标取值。
[0071]
可选地,所述融合模块507,根据预设的权重分布,加权求和所述n个损失值ar1至arn生成模型的损失值。
[0072]
在第三方面,如图6所示,图6为本说明书实施例提供的一种电子设备的结构示意图,所述设备包括:
[0073]
至少一个处理器;以及,
[0074]
与所述至少一个处理器通信连接的存储器;其中,
[0075]
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如第一方面所述的方法。
[0076]
在第四方面,基于同样的思路,本说明书实施例还提供了对应于上述方法的一种非易失性计算机存储介质,存储有计算机可执行指令,当计算机读取存储介质中的计算机可执行指令后,该指令使得一个或多个处理器执行如第一方面所述的方法。
[0077]
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(programmable logic device,pld)(例如现场可编程门阵列(field programmable gate array,fpga))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片pld上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(hardware description language,hdl),而hdl也并非仅有一种,而是有许多种,如abel(advanced boolean expression language)、ahdl(altera hardware description language)、confluence、cupl(cornell university programming language)、hdcal、jhdl(java hardware description language)、lava、lola、myhdl、palasm、rhdl(ruby hardware description language)等,目前最普遍使用的是vhdl(very-high-speed integrated circuit hardware description language)与verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
[0078]
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(application specific integrated circuit,asic)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc625d、atmel at91sam、microchip pic18f26k20以及silicone labs c8051f320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
[0079]
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
[0080]
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本
说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
[0081]
本领域内的技术人员应明白,本说明书实施例可提供为方法、系统、或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0082]
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0083]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0084]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0085]
在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
[0086]
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
[0087]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0088]
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0089]
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0090]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0091]
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0092]
以上所述仅为本说明书的一个或多个实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书的一个或多个实施例可以有各种更改和变化。凡在本说明书的一个或多个实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献