一种深度神经网络压缩方法及相关设备与流程

文档序号:18743028发布日期:2019-09-21 02:01阅读:147来源:国知局
一种深度神经网络压缩方法及相关设备与流程

本申请涉及计算机技术领域,特别涉及一种深度神经网络压缩方法、装置、设备及计算机可读介质。



背景技术:

近年来,深度卷积神经网络在图像识别、自然语言处理、语音识别等领域得到了十分广泛的应用,其强大的特征提取能力在众多任务上都取得了突破式的性能提升。为了提高神经网络模型的性能,研究人员普遍会设计更深和更复杂的网络,例如:VGGNet,GoogLeNet以及ResNet等。这样会使模型的参数量和计算量大大增加,这对硬件资源(如CPU、GPU内存、带宽)的要求也越来越高,成本十分昂贵,将如此复杂的深度神经网络直接部署在计算能力和续航能力有限移动设备上(如手机、无人机、机器人、智能眼镜)是很难实现的,在移动设备上和廉价部署深度神经网络系统有着重要的应用需求和前景,是未来深度学习实现产业化需要解决的一个重要问题。

要将目前的大型卷积神经网络部署在廉价设备上,需要解决存储空间和计算量有限的问题,那么模型的紧凑性和计算的高效性就是十分重要的。模型过大占用大量的内存空间,同时会影响计算效率。研究表明,在深度卷积网络中卷积操作是计算量最大的操作,故加速的关键在于提高卷积操作的计算效率。另外,在卷积神经网络中存在着大量的冗余结构和参数,特别是全连接网络层,这些冗余结构和参数对最后的推断结果贡献很小,故可以采取压缩网络结构和参数量的方式来减少模型尺寸,同时也可以加快网络的计算速度。

中国专利申请号:201610387878.4、名为“基于张量分解的深度卷积神经网络的加速与压缩方法”提供了一种基于权值张量分解的深度卷积神经网络的加速与压缩方法,通过对深度卷积神经网络的权值进张量分解,利用所得的多个低秩子张量替换原有权值,从而可以实现大型深度卷积神经网络的加速与压缩;另有中国专利申请号:201711319853.1”、名为“基于块项张量分解的深度神经网络压缩方法”提供了一种基基于块项张量分解的深度神经网络压缩方法,将权重矩阵和输入向量均转化为高阶张量并对其进行块项张量分解处理,将深度神经网络的全连接层替换为块项张量层,采用后向传播算法对替换后的深度神经网络进行训练。

目前基于张量火车张量分解的神经网络压缩算法的分解秩均是通过经验和调参的方式手动设置,训练的过程中需要反复探索每层神经网络合适的张量火车分解秩,需要大量的时间和精力。



技术实现要素:

为了解决上述问题之一,本申请实施例提供了一种基于自适应张量火车分解秩算法的深度神经网络压缩方法、装置、设备及计算机可读介质。

第一方面,本申请提供一种深度神经网络压缩方法,所述方法包括:

获取待压缩深度神经网络模型;

当确定所述待压缩深度神经网络模型有可选网络层,按照预定次序依次选取一层网络作为选取层,固定所述可选网络层中余下层网络参数不变;

根据所述选取层进行张量分解计算,通过调整精度要求值得到多个核矩阵,当所述核矩阵的精度差值符合预置条件时将所述核矩阵作为所述选取层的张量分解核矩阵;

重复选取下一层网络作为选取层进行张量分解,直至所述可选网络层全部完成核矩阵分解,得到压缩后的深度神经网络模型。

作为一种可选地方案,所述根据所述选取层进行张量分解计算,通过调整精度要求值得到多个核矩阵,当所述核矩阵的精度差值符合预置条件时将所述核矩阵作为所述选取层的张量分解核矩阵,包括:

获取所述选取层的参数矩阵W和网络精度L,并将所述参数矩阵W转化为高维张量T;

设定误差要求值ε并记录在数组e[]中,对所述高维张量T进行张量算法压缩后并还原得到张量T′,并满足:

确定奇异值分解截断值δ,其中d为高维张量T的维度;

将所述高维张量T逐维展开为矩阵,并利用所述奇异值分解截断值δ对所述矩阵进行奇异值分解,得到分解秩rk和分解后的核矩阵;

对所述选取层进行精度调整得到精度L′,确定精度差值Δ=L-L′记录在数组l[]中;

按照从大到小的顺序调整精度要求值ε,重复进行所述精度差值的确定,直到所述精度差值Δ连续n次不大于α则停止循环,将得到的核矩阵作为所述选取层的张量分解核矩阵,其中所述n和α均为超参数。

作为一种可选地方案,所述根据所述选取层进行张量分解计算,通过调整精度要求值得到多个核矩阵,当所述核矩阵的精度差值符合预置条件时将所述核矩阵作为所述选取层的张量分解核矩阵,包括:

当所述选取层为全连接层,将所述选取层的输入向量转化为维度为(m1,...,md)的高维张量

输出向量转化为维度为(n1,...,nd)的高阶张量

偏置分解为维度为(n1,...,nd)的高维张量B,

对参数矩阵进行张量分解,得到的核矩阵为Gk[mk,nk];

分解后的深度神经网络模型运算过程表示为:

作为一种可选地方案,所述根据所述选取层进行张量分解计算,通过调整精度要求值得到多个核矩阵,当所述核矩阵的精度差值符合预置条件时将所述核矩阵作为所述选取层的张量分解核矩阵,包括:

当选取层为卷积层,使用im2col操作将输入张量转化为大小为F′F′×k2M的矩阵;

将卷积核张量转化为大小为k2M×N的矩阵,其中F为输入张量的边长,其中边长相等、M为输入通道数、N为输出通道数,k为卷积核边长;

对卷积核参数矩阵进行张量分解,分别将输入维度和输出维度进行分解:将卷积核矩阵K张量化为张量分解后得到核矩阵为Gk[mk,nk];

分解后得卷积运算表示为:

作为一种可选地方案,所述重复选取下一层网络作为选取层进行张量分解,直至所述可选网络层全部完成核矩阵分解,得到压缩后的深度神经网络模型之后,还包括:

对所述深度神经网络模型进行量化操作。

作为一种可选地方案,所述对所述深度神经网络模型进行量化操作,包括:

将32bit全精度的核矩阵参数量化至8bit的整数型。

作为一种可选地方案,所述按照预定次序依次选取一层网络作为选取层,包括:

按照从最后一层网络向第一层网络的顺序依次选取一层网络作为选取层。

第二方面,本申请提供一种基于自适应张量火车分解算法的深度神经网络压缩装置,所述装置包括:

获取单元,用于获取待压缩深度神经网络模型;

确定单元,用于当确定所述待压缩深度神经网络模型有可选网络层,按照预定次序依次选取一层网络作为选取层,固定所述可选网络层中余下层网络参数不变;

张量分解单元,用于根据所述选取层进行张量分解计算,通过调整精度要求值得到多个核矩阵,当所述核矩阵的精度差值符合预置条件时将所述核矩阵作为所述选取层的张量分解核矩阵;

执行单元,用于重复选取下一层网络作为选取层进行张量分解,直至所述可选网络层全部完成核矩阵分解,得到压缩后的深度神经网络模型。

第三方面,本申请还提供一种计算机设备,所述设备包括:

一个或多个处理器;

存储器,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述的深度神经网络压缩方法。

第四方面,本申请还提供一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上述的深度神经网络压缩方法。

本申请提供的基于自适应张量火车分解秩算法的深度神经网络压缩方法、装置、设备及计算机可读介质,通过基于张量火车分解算法的自适应分解秩算法,在网络训练过程中根据设定的网络精度阈值逐层分解深度神经网络模型中每层的参数矩阵,分解的同时固定住其他网络层,并且按照顺序调整当前网络层的分解秩,并重新训练恢复精度,在达到精度阈值后将当前秩确定为该选取层网络的分解秩,解决了手动确定分解秩的繁琐和不确定性问题,对参数矩阵进行压缩从而达到神经网络模型的压缩效果。

附图说明

图1是本申请实施例中提供的一种基于自适应张量火车分解秩算法的深度神经网络压缩方法的流程图;

图2是本申请实施例中提供的一种基于自适应张量火车分解秩算法中张量分解的示意图;

图3是本申请实施例中提供的一种基于自适应张量火车分解秩算法的深度神经网络压缩装置的结构框图;

图4是本申请实施例中提供的一种计算机设备实施例的结构图;

图5是本申请实施例中提供的一种计算机设备的示例图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

结合图1所示,本申请实施例中提供的深度神经网络压缩方法的一种实施例,所述方法包括:

S101、获取待压缩深度神经网络模型。

待压缩深度神经网络模型可以是VGGNet,GoogLeNet以及ResNet等,对此不做限定。

S102、当确定所述待压缩深度神经网络模型有可选网络层,按照预定次序依次选取一层网络作为选取层,固定所述可选网络层中余下层网络参数不变。

判断待压缩神经网络模型中是否存在可选网络层,当确实存在可选网络层则可以进行逐层分解处理,可选的网络层有多层,按照顺序进行网络层选取,如可以按照从最后一层网络向第一层网络的顺序依次选取一层网络作为选取层,当然也可以从第一层网络向最后一层网络依次选取,对此不进行限定,对于选定的选取层,余下的网络层参数保持不变。

S103、根据所述选取层进行张量分解计算,通过调整精度要求值得到多个核矩阵,当所述核矩阵的精度差值符合预置条件时将所述核矩阵作为所述选取层的张量分解核矩阵。

具体地,获取所述选取层的参数矩阵W和网络精度L,并将所述参数矩阵W转化为高维张量T;

设定误差要求值ε并记录在数组e[]中,对所述高维张量T进行张量算法压缩后并还原得到张量T′,并满足:

确定奇异值分解截断值δ,其中d为高维张量T的维度;

将所述高维张量T逐维展开为矩阵,并利用所述奇异值分解截断值δ对所述矩阵进行奇异值分解,得到分解秩rk和分解后的核矩阵;

对所述选取层进行精度调整得到精度L′,确定精度差值Δ=L-L′记录在数组l[]中;

按照从大到小的顺序调整精度要求值ε,重复进行所述精度差值的确定,直到所述精度差值Δ连续n次不大于α则停止循环,将得到的核矩阵作为所述选取层的张量分解核矩阵,其中所述n和α均为超参数,在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。

S104、重复选取下一层网络作为选取层进行张量分解,直至所述可选网络层全部完成核矩阵分解,得到压缩后的深度神经网络模型。

通过基于张量火车分解算法的自适应分解秩算法,在网络训练过程中根据设定的网络精度阈值逐层分解深度神经网络模型中每层的参数矩阵,分解的同时固定住其他网络层,并且按照顺序调整当前网络层的分解秩,并重新训练恢复精度,在达到精度阈值后将当前秩确定为该选取层网络的分解秩,解决了手动确定分解秩的繁琐和不确定性问题,对参数矩阵进行压缩从而达到神经网络模型的压缩效果。

结合图2所示,具体地,张量火车分解示意图,使用了张量火车张量分解算法来将神经网络的全连接层和卷积层的参数矩阵进行压缩。具体地,张量火车分解的原理是将一个高维张量中的每一个元素用若干个矩阵连乘的形式来表达。即:

A(i1,i2,...,id)=G1(i1)G2(i2)...Gd(id);

其中Gk(ik)是一个rk-1×rk大小的矩阵,rk表示张量火车分解的秩(TT-ranks),为了确保最终结果是一个标量,r0=rk=1。一个大小为5×4×5张量A的张量火车分解,张量A中的任一元素,例如A231可以写为3个矩阵连乘的形式。此处张量火车分解秩设为(1,3,3,1),每个矩阵的大小rk-1×rk,分别为1×3、3×3、3×1。每个矩阵在Gk中的位置由该元素的下标ik确定,分别为2、3、1。原张量一共有5×4×5=100个参数,压缩后一共有1×3×5+3×3×4+3×1×5=66个参数。

具体地,在S104中,当所述选取层为全连接层,将所述选取层的输入向量转化为维度为(m1,...,md)的高维张量

输出向量y∈RN转化为维度为(n1,...,nd)的高阶张量

偏置b=RN分解为维度为(n1,...,nd)的高维张量B,

对参数矩阵进行张量分解,得到的核矩阵为Gk[mk,nk];

分解后的深度神经网络模型运算过程表示为:

针对神经网络的全连接层,使用张量火车张量分解算法将参数矩阵分解为矩阵连乘状态,可以显著减少全连接层参数量。

具体地,在S104中,当选取层为卷积层,使用im2col操作将输入张量转化为大小为F′F′×k2M的矩阵,采用im2col的作用是为了优化卷积运算;

将卷积核张量转化为大小为k2M×N的矩阵,其中F为输入张量的边长,其中边长相等、M为输入通道数、N为输出通道数,k为卷积核边长;

对卷积核参数矩阵进行张量分解,分别将输入维度和输出维度进行分解:将卷积核矩阵K张量化为张量分解后得到核矩阵为Gk[mk,nk];

分解后得卷积运算表示为:

针对神经网络的卷积层,在im2col操作基础上对卷积核矩阵进行张量火车分解,可以减少卷积层参数量。适用自适应张量火车分解秩算法自动确定卷积层和全连接层的分解秩;在张量分解的基础上,使用权重量化算法将32bit全精度参数量化至8bit,可以加速神经网络的推断速度。

在S104,所述重复选取下一层网络作为选取层进行张量分解,直至所述可选网络层全部完成核矩阵分解,得到压缩后的深度神经网络模型之后,所述方法还包括:

对所述深度神经网络模型进行量化操作,具体地,将32bit全精度的核矩阵参数量化至8bit的整数型,完成对深度神经网络模型的量化操作。

使用量化核矩阵参数的方法解决了张量火车分解的带来的网络层数增加,前向加速效果不明显的问题,同时将权重量化技术应用在张量火车分解后的核矩阵上,具有比现有技术更加快速的前向推断速度。

本申请实施例中提供的深度神经网络压缩方法的另一种实施例,所述方法包括:

S201、获取待压缩深度神经网络模型。

S202、按照从最后一层网络向第一层网络开始,依次在待压缩深度神经网络模型选取一层网络作为选取层,并固定除选取层之外所有网络层参数;

S203、当选取层为全连接层,将该选取层层的输入向量转化为维度为(m1,...,md)的高维张量输出向量转化为维度为(n1,...,nd)的高阶张量偏置分解为维度为(n1,...,nd)的高维张量使用自适应张量火车分解秩算法对参数矩阵进行张量火车分解,得到的核矩阵(TT-Cores)为Gk[mk,nk];

分解后的网络运算过程表示为:

S204、当选取层为卷积层,使用im2col操作将输入张量转化为大小为F′F′×k2M的矩阵;将卷积核张量转化为大小为k2M×N的矩阵,其中F为输入张量的边长,其中,边长相等、M为输入通道数、N为输出通道数,k为卷积核边长,使用自适应张量火车分解算法对卷积核参数矩阵进行张量火车分解,首先将输入输出维度进行分解:将卷积核矩阵K张量化为张量分解后得到得核矩阵为Gk[mk,nk];分解后得卷积运算可以表示为:

S205、重复步骤202、203、204,直至所有网络层都被分解,最终得到的网络就是经过张量火车分解压缩后的深度神经网络模型。

S206、对得到的深度神经网络模型进行量化操作。

S207、对量化操作后的深度神经网络模型进行恢复精度调整。

针对神经网络的全连接层,使用张量火车张量分解算法将参数矩阵分解为矩阵连乘状态,可以显著减少全连接层参数量;针对神经网络的卷积层,在im2col操作基础上对卷积核矩阵进行张量火车分解,可以减少卷积层参数量;适用自适应张量火车分解秩算法自动确定卷积层和全连接层的分解秩;在张量分解的基础上,使用权重量化算法将32bit全精度参数量化至8bit,可以加速神经网络的推断速度,本申请提供的的技术方案可以有效的压缩和加速现有的主流神经网络。

本申请提供的方案已经在VGG-16网络的全连接层进行过实验,实验结果表明本本申请压缩和加速效果良好。自适应张量火车分解应用在VGG-16的全连接层进行参数压缩进行了初步的实验。整体的网络参数压缩比例为3.9。但top5错误率仅仅从11.8%上升至12.3%,在CPU和GPU上分别对压缩前后的推算时间做了对比,如表1所示。

表1

实验结果表明,张量火车分解对全连接层网络的推断速度有加速作用,得益于矩阵运算的并行处理,在GPU上的加速效果更为明显。

结合图3所示,本申请提供一种基于自适应张量火车分解算法的深度神经网络压缩装置,其特征在于,所述装置包括:

获取单元301,用于获取待压缩深度神经网络模型;

确定单元302,用于当确定所述待压缩深度神经网络模型有可选网络层,按照预定次序依次选取一层网络作为选取层,固定所述可选网络层中余下层网络参数不变;

张量分解单元303,用于根据所述选取层进行张量分解计算,通过调整精度要求值得到多个核矩阵,当所述核矩阵的精度差值符合预置条件时将所述核矩阵作为所述选取层的张量分解核矩阵;

执行单元304,用于重复选取下一层网络作为选取层进行张量分解,直至所述可选网络层全部完成核矩阵分解,得到压缩后的深度神经网络模型。

本申请提供的基于自适应张量火车分解秩算法的深度神经网络压缩装置,通过基于张量火车分解算法的自适应分解秩算法,在网络训练过程中根据设定的网络精度阈值逐层分解深度神经网络模型中每层的参数矩阵,分解的同时固定住其他网络层,并且按照顺序调整当前网络层的分解秩,并重新训练恢复精度,在达到精度阈值后将当前秩确定为该选取层网络的分解秩,解决了手动确定分解秩的繁琐和不确定性问题,对参数矩阵进行压缩从而达到神经网络模型的压缩效果。

图4为本发明的计算机设备实施例的结构图。如图4所示,本实施例的计算机设备,包括:一个或多个处理器30,以及存储器40,存储器40用于存储一个或多个程序,当存储器40中存储的一个或多个程序被一个或多个处理器30执行,使得一个或多个处理器30实现如上图1-图2所示实施例的基于自适应张量火车分解秩算法的深度神经网络压缩方法。图4所示实施例中以包括多个处理器30为例。

例如,图5为本发明提供的一种计算机设备的示例图。图5示出了适于用来实现本发明实施方式的示例性计算机设备12a的框图。图5显示的计算机设备12a仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图5所示,计算机设备12a以通用计算设备的形式表现。计算机设备12a的组件可以包括但不限于:一个或者多个处理器16a,系统存储器28a,连接不同系统组件(包括系统存储器28a和处理器16a)的总线18a。

总线18a表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。

计算机设备12a典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12a访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

系统存储器28a可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30a和/或高速缓存存储器32a。计算机设备12a可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34a可以用于读写不可移动的、非易失性磁介质(图5未显示,通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18a相连。系统存储器28a可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明上述图1-图4各实施例的功能。

具有一组(至少一个)程序模块42a的程序/实用工具40a,可以存储在例如系统存储器28a中,这样的程序模块42a包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42a通常执行本发明所描述的上述图1和图2各实施例中的功能和/或方法。

计算机设备12a也可以与一个或多个外部设备14a(例如键盘、指向设备、显示器24a等)通信,还可与一个或者多个使得用户能与该计算机设备12a交互的设备通信,和/或与使得该计算机设备12a能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22a进行。并且,计算机设备12a还可以通过网络适配器20a与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20a通过总线18a与计算机设备12a的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备12a使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

处理器16a通过运行存储在系统存储器28a中的程序,从而执行各种功能应用以及数据处理,例如实现上述实施例所示的基于自适应张量火车分解秩算法的深度神经网络压缩方法。

本发明还提供一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例所示的基于自适应张量火车分解秩算法的深度神经网络压缩方法。

本实施例的计算机可读介质可以包括上述图5所示实施例中的系统存储器28a中的RAM30a、和/或高速缓存存储器32a、和/或存储系统34a。

随着科技的发展,计算机程序的传播途径不再受限于有形介质,还可以直接从网络下载,或者采用其他方式获取。因此,本实施例中的计算机可读介质不仅可以包括有形的介质,还可以包括无形的介质。

本实施例的计算机可读介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括,但不限于磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1