模型训练方法及装置、存储介质及电子设备与流程

文档序号:17466531发布日期:2019-04-20 05:32阅读:198来源:国知局
模型训练方法及装置、存储介质及电子设备与流程

本发明涉及深度学习技术领域,特别涉及一种模型训练方法及装置、储存介质及电子设备。



背景技术:

随着信息科技的发展,深度神经网络在计算机视觉领域的应用范围越来越大。例如,在人脸识别领域中,当需要训练一个分类器对不同的人脸图片进行分类时,通常会选择深度神经网络模型来完成分类器的训练。由于深度神经网络计算量大,因此深度神经网络的训练任务一般在显卡上完成。

发明人经过对现有的深度神经网络模型的训练过程进行研究发现,现有的神经网络在每张显卡上存放着完整的神经网络模型,当需要识别的人脸图片数量很大时,对应的,神经网络所需要的训练类别也会很巨大,导致整个神经网络模型计算量很庞大,而显卡的显存有限,以及模型数据量巨大时数据传输速度缓慢,所以现有神经网络的训练框架根本无法完成大规模类别的训练任务。



技术实现要素:

本发明所要解决的技术问题是提供一种模型训练的方法,可以对神经网络进行大规模图片类别的训练,且训练速度几乎没有损失,有效解决了现有技术无法对神经网络进行大规模图片类别训练的问题。

本发明还提供了一种模型训练装置,用以保证上述方法在实际中的实现及应用。

一种模型训练方法,包括:

选取基础训练模型,并依据所述基础训练模型所需占用的显存大小,选取多个图像处理器gpu;

将所述基础训练模型分割为多个训练子模型,并为每个所述gpu分配与其对应的训练子模型;

确定目标图片类别集合,所述目标图片类别集合中包含多个图片类别组,每个所述图片类别组中包含多个不同的图片类别;

为每个所述gpu分配与其对应的图片类别组;

选取训练样本集合,所述训练样本集合中包含多个训练样本图片;

从所述训练样本集合中选取训练样本图片分别输入至每个所述gpu中的训练子模型中进行训练,由每个所述gpu中的训练子模型计算所述训练样本图片属于该gpu中各个图片类别的得分值;确定所述训练样本图片在所有所述gpu中属于各个图片类别的得分值的总得分值,并将所述总得分值分别传输至每个所述gpu中;

依据所述总得分值,及所述训练样本图片在每个所述gpu中属于各个图片类别的得分值,及预先设定的所述训练样本图片在每个gpu中与各个图片类别对应的标准概率值,对所述基础训练模型对应的损失函数的输出值进行收敛,并在所述基础训练模型对应的损失函数的输出值满足预设的收敛条件时,完成对每个gpu中训练子模型的训练。

上述的方法,可选的,所述将所述基础训练模型分割为多个训练子模型,并为每个所述gpu分配与其对应的训练子模型,包括:

确定当前已选取所述gpu的数量,并确定每个所述gpu的处理能力;

依据所述gpu的数量,及每个所述gpu的处理能力,将所述基础训练模型分割为与所述gpu的数量相同的多个训练子模型;

依据每个所述gpu的处理能力,为每个所述gpu分配与其对应的训练子模型。

上述的方法,可选的,所述为每个所述gpu分配与其对应的图片类别组,包括:

确定所述目标图片类别集合中每个图片类别组中所包含图片类别的数量;

依据每个所述图片类别组中所包含图片类别的数量,以及每个所述gpu的处理能力,为每个所述gpu分配与其对应的图片类别组。

上述的方法,可选的,所述从所述训练样本集合中选取训练样本图片分别输入至每个所述gpu中的训练子模型中进行训练,包括:

每次从所述训练样本集合中随机选取训练样本图片,并将每次随机选取的训练样本图片分别输入至每个所述gpu中的训练子模型中进行训练。

上述的方法,可选的,所述从所述训练样本集合中选取训练样本图片分别输入至每个所述gpu中的训练子模型中进行训练,由每个所述gpu中的训练子模型计算所述训练样本图片属于该gpu中各个图片类别的得分值,包括:

从所述训练样本集合中选取训练样本图片,提取与所述训练样本图片对应的特征向量;

将所述训练样本图片对应的特征向量分别输入至每个所述gpu中的训练子模型中进行训练,由每个所述gpu中的训练子模型计算所述训练样本图片属于该gpu中各个图片类别的得分值。

上述的方法,可选的,所述确定所述训练样本图片在所有所述gpu中属于各个图片类别的得分值的总得分值,包括:

依据每个所述gpu中的训练子模型计算所述训练样本图片属于该gpu中各个图片类别的得分值,确定所述训练样本图片在每个gpu中属于各个图片类别的gpu总得分;

对确定的各个gpu总得分进行求和,确定所述训练样本图片在所有所述gpu中属于各个图片类别的得分值的总得分值。

上述的方法,可选的,所述依据所述总得分值,及所述训练样本图片在每个所述gpu中属于各个图片类别的得分值,及预先设定的所述训练样本图片在每个gpu中与各个图片类别对应的标准概率值,对所述基础训练模型对应的损失函数的输出值进行收敛,包括:

依据所述总得分值,及所述训练样本图片在每个所述gpu中属于各个图片类别的得分值,及预先设定的所述训练样本图片在每个gpu中与各个图片类别对应的标准概率值,分别计算每个所述gpu中的训练子模型所对应的损失值;

依据每个所述gpu中的训练子模型所对应的损失值,确定所述基础训练模型所对应的损失函数的输出值是否满足预设的收敛条件,若所述基础训练模型对应的损失函数的输出值未满足预设的收敛条件,依据每个所述gpu中的训练子模型所对应的损失值,调整当前每个所述gpu中的训练子模型的权重参数,直至所述基础训练模型对应的损失函数的输出值满足预设的收敛条件。

上述的方法,可选的,还包括:

在所述基础训练模型对应的损失函数的输出值满足预设的收敛条件时,停止从所述训练样本集合中选取训练样本图片,并输出当前已训练完成的每个所述gpu中的训练子模型。

一种模型训练装置,包括:

第一选取单元,用于选取基础训练模型,并依据所述基础训练模型所需占用的显存大小,选取多个图像处理器gpu;

第一分配单元,用于将所述基础训练模型分割为多个训练子模型,并为每个所述gpu分配与其对应的训练子模型;

确定单元,用于确定目标图片类别集合,所述目标图片类别集合中包含多个图片类别组,每个所述图片类别组中包含多个不同的图片类别;

第二分配单元,用于为每个所述gpu分配与其对应的图片类别组;

第二选取单元,用于选取训练样本集合,所述训练样本集合中包含多个训练样本图片;

训练单元,用于从所述训练样本集合中选取训练样本图片分别输入至每个所述gpu中的训练子模型中进行训练,由每个所述gpu中的训练子模型计算所述训练样本图片属于该gpu中各个图片类别的得分值;确定所述训练样本图片在所有所述gpu中属于各个图片类别的得分值的总得分值,并将所述总得分值分别传输至每个所述gpu中;

收敛单元,用于依据所述总得分值,及所述训练样本图片在每个所述gpu中属于各个图片类别的得分值,及预先设定的所述训练样本图片在每个gpu中与各个图片类别对应的标准概率值,对所述基础训练模型对应的损失函数的输出值进行收敛,并在所述基础训练模型对应的损失函数的输出值满足预设的收敛条件时,完成对每个gpu中训练子模型的训练。

一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在的设备执行上述的模型训练方法。

一种电子设备,包括存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行上述的模型训练方法。

与现有技术相比,本发明包括以下优点:

本发明提供了一种训练方法,包括:选取基础训练模型,并依据所述基础训练模型所需占用的显存大小,选取多个图像处理器gpu;将所述基础训练模型分割为多个训练子模型,并为每个所述gpu分配与其对应的训练子模型;确定目标图片类别集合,所述目标图片类别集合中包含多个图片类别组,每个所述图片类别组中包含多个不同的图片类别;为每个所述gpu分配与其对应的图片类别组;选取训练样本集合,所述训练样本集合中包含多个训练样本图片;从所述训练样本集合中选取训练样本图片分别输入至每个所述gpu中的训练子模型中进行训练,由每个所述gpu中的训练子模型计算所述训练样本图片属于该gpu中各个图片类别的得分值;确定所述训练样本图片在所有所述gpu中属于各个图片类别的得分值的总得分值,并将所述总得分值分别传输至每个所述gpu中;依据所述总得分值,及所述训练样本图片在每个所述gpu中属于各个图片类别的得分值,及预先设定的所述训练样本图片在每个gpu中与各个图片类别对应的标准概率值,对所述基础训练模型对应的损失函数的输出值进行收敛,并在所述基础训练模型对应的损失函数的输出值满足预设的收敛条件时,完成对每个gpu中训练子模型的训练。应用本发明提供的训练方法,可以对神经网络进行大规模类别的训练,且训练速度几乎没有损失,有效解决了现有技术无法对神经网络进行大规模类别的训练的问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明提供的一种模型训练方法的方法流程图;

图2为本发明提供的一种模型训练方法的又一方法流程图;

图3为本发明提供的一种模型训练方法的又一方法流程图;

图4为本发明提供的一种模型训练方法的又一方法流程图;

图5为本发明提供的一种模型训练方法的又一方法流程图;

图6为本发明提供的一种模型训练方法的又一方法流程图;

图7为本发明提供的一种模型训练装置的结构示意图;

图8为本发明提供的一种电子设备的结构示意图。

具体实施方式

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

本发明可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。

本发明实施例提供了一种训练方法,该方法可以应用在多种系统平台,其执行主体可以为计算机终端或各种移动设备的处理器,所述方法的方法流程图如图1所示,具体包括:

s101:选取基础训练模型,并依据所述基础训练模型所需占用的显存大小,选取多个图像处理器gpu;

本发明实施例提供的方法中,当用户需要进行神经网络训练时,根据神经网络所要实现的功能,选取基础训练模型,并计算所述基础训练模型所需占用的显存大小,根据基础训练模型所需占用的显存大小,选取多个图像处理器gpu,其中,所述多个gpu的显存总和大于所述基础训练模型所需占用的显存,且每个gpu之间可以进行通信。

s102:将所述基础训练模型分割为多个训练子模型,并为每个所述gpu分配与其对应的训练子模型;

本发明实施例提供的方法中,按一定的分割规则,将基础训练模型分割为多个训练子模型,所述分割规则可以是,将基础训练模型分割为数量等于所述多个gpu的数量的多个训练子模型,其中,所述多个训练子模型中每个训练子模型的显存大小可以相同,也可以不同。

将基础模型分割后,根据每个gpu的处理能力,为每个所述gpu分配与其对应的训练子模型,例如,训练子模型的显存大小不同时,可以为处理能力的较强gpu分配显存较大的训练子模型,为处理能力较弱的gpu分配显存较小的训练子模型。

s103:确定目标图片类别集合,所述目标图片类别集合中包含多个图片类别组,每个所述图片类别组中包含多个不同的图片类别;

本发明实施例提供的方法中,可根据各个图像处理器gpu的处理能力以及模型精度要求,确定模型训练所需的目标图片类别集合,所述目标图片类别集合可以包含多个图片类别组,优选的,所述多个图片类别组的数量等于所述多个gpu的数量。

s104:为每个所述gpu分配与其对应的图片类别组;

本发明实施例提供的方法中,可以根据每个所述gpu的处理能力,为每个所述gpu分配与其对应的图片类别组。gpu的处理能力越强,为其分配的图片类别组包含的图片类别的数量越多。

s105:选取训练样本集合,所述训练样本集合中包含多个训练样本图片;

本发明提供的实施例中,所述训练样本集合中包含的训练样本图片的数量,可根据各个图像处理器gpu的处理能力以及模型精度要求确定,图像处理器gpu的处理能力越强,模型精度要求越高,训练样本图片的数量越多。

s106:从所述训练样本集合中选取训练样本图片分别输入至每个所述gpu中的训练子模型中进行训练,由每个所述gpu中的训练子模型计算所述训练样本图片属于该gpu中各个图片类别的得分值;确定所述训练样本图片在所有所述gpu中属于各个图片类别的得分值的总得分值,并将所述总得分值分别传输至每个所述gpu中;

本发明提供的实施例中,确定训练样本集合后,从所述训练样本集合中选取训练样本图片分别输入至每个所述gpu中的训练子模型中进行训练。当训练样本集合包含n张训练样本图片时,所述选取训练样本图片的数量可以是1张训练样本图片,也可以是m张训练样本图片,其中1<m≤n,m的具体数值可以根据gpu的处理能力确定。

每个gpu根据接收到的训练样本图片,对所述样本图片进行训练,每个gpu训练子模型计算训练样本图片属于该gpu中各个图片类别的得分值;并根据所述得分值,计算该训练样本图片在所有所述gpu中属于各个图片类别的得分值的总得分值,并将总得分值分别传输至每个所述gpu中,使每个gpu都可以接收到对应所述训练样本的总分值,本发明通过在各个gpu之间传输总分值,因总分值为单个数值,极大的提高了模型的训练速度。

s107:依据所述总得分值,及所述训练样本图片在每个所述gpu中属于各个图片类别的得分值,及预先设定的所述训练样本图片在每个gpu中与各个图片类别对应的标准概率值,对所述基础训练模型对应的损失函数的输出值进行收敛,并在所述基础训练模型对应的损失函数的输出值满足预设的收敛条件时,完成对每个gpu中训练子模型的训练。

本发明提供的实施例中,根据所述总分值,及预设的所述训练样本图片在每个gpu中与各个图片类别对应的标准概率值,计算每个所述gpu中的训练子模型所对应的损失值,根据所述损失值,进一步计算所述基础训练模型对应的损失函数的输出值,当所述输出值满足预设的收敛条件时,完成对每个gpu中训练子模型的训练。

本发明实施例提供的方法,通过将所有图片类别分配至多个gpu中,保证所训练的神经网络模型可以容纳大量的图片类别,以解决现有技术中当训练模型类别数量巨大时,单张显卡无法存放整个神经网络模型的问题。本发明实施例提供的方法,先计算训练样本图片在各个gpu中对应每一图片类别的得分值,并根据所述得分值计算得到所述训练样本图片的总分值,并将所述总分值传输至每个显卡,代替现有技术神经网络训练模型中传输每一个得分值。由于得每一个得分值是对应每一图片类别的得分值,当图片类别规模巨大时,对应传输的得分值数量巨大,从而导致整个神经网络计算缓慢,本发明传输的数值为单个数量的总分值,从而大大的提高了模型训练速度。

本发明实施例提供的训练方法,可以应用在多种领域,例如在人脸识别领域中,可以进行大规模的人脸识别训练任务。包括:选取基础训练模型,并依据所述基础训练模型所需占用的显存大小,选取多个图像处理器gpu;将所述基础训练模型分割为多个训练子模型,并为每个所述gpu分配与其对应的训练子模型;确定目标图片类别集合,所述目标图片类别集合中包含多个图片类别组,每个所述图片类别组中包含多个不同的图片类别;为每个所述gpu分配与其对应的图片类别组;选取训练样本集合,所述训练样本集合中包含多个训练样本图片;从所述训练样本集合中选取训练样本图片分别输入至每个所述gpu中的训练子模型中进行训练,由每个所述gpu中的训练子模型计算所述训练样本图片属于该gpu中各个图片类别的得分值;确定所述训练样本图片在所有所述gpu中属于各个图片类别的得分值的总得分值,并将所述总得分值分别传输至每个所述gpu中;依据所述总得分值,及所述训练样本图片在每个所述gpu中属于各个图片类别的得分值,及预先设定的所述训练样本图片在每个gpu中与各个图片类别对应的标准概率值,对所述基础训练模型对应的损失函数的输出值进行收敛,并在所述基础训练模型对应的损失函数的输出值满足预设的收敛条件时,完成对每个gpu中训练子模型的训练。应用本发明提供的训练方法,可以对神经网络进行大规模类别的训练,且训练速度几乎没有损失,有效解决了现有技术无法对神经网络进行大规模类别的训练的问题。

本发明实施例提供的方法,所述将所述基础训练模型分割为多个训练子模型,并为每个所述gpu分配与其对应的训练子模型的过程,如图2所示,具体可以包括:

s201:确定当前已选取所述gpu的数量,并确定每个所述gpu的处理能力;

s202:依据所述gpu的数量,及每个所述gpu的处理能力,将所述基础训练模型分割为与所述gpu的数量相同的多个训练子模型;

s203:依据每个所述gpu的处理能力,为每个所述gpu分配与其对应的训练子模型。

本发明实施例提供的方法,根据选取的基础模型所占显存的大小,确定当前已选取所述gpu的数量,其中,所述gpu的显存总和大于所述基础模型的显存,确定gpu数量后,进一步确定每个所述gpu的处理能力。并将基础训练模型分割为与gpu的数量相同的多个训练子模型,同时依据每个所述gpu的处理能力,为每个所述gpu分配与其对应的训练子模型,例如,gpu的处理能力较强的,为其分配显存较大的训练子模型。

本发明实施例提供的方法,所述为每个所述gpu分配与其对应的图片类别组的过程,如图3所示,具体可以包括:

s301:确定所述目标图片类别集合中每个图片类别组中所包含图片类别的数量;

s302:依据每个所述图片类别组中所包含图片类别的数量,以及每个所述gpu的处理能力,为每个所述gpu分配与其对应的图片类别组。

本发明实施例提供的方法,根据各个图像处理器gpu的处理能力以及模型精度要求,确定所述目标图片类别集合中每个图片类别组中所包含图片类别的数量,并根据每个gpu的处理能力,为所述每个gpu分配与所述gpu的处理能力相对应的图片类别组。

本发明实施例提供的方法,所述从所述训练样本集合中选取训练样本图片分别输入至每个所述gpu中的训练子模型中进行训练,包括:

每次从所述训练样本集合中随机选取训练样本图片,并将每次随机选取的训练样本图片分别输入至每个所述gpu中的训练子模型中进行训练。

本发明实施例提供的方法,从所述训练样本集合中随机选取的训练样本图片数量可以是单张训练样本图片,也可以是多张训练样本图片。选取训练样本图片后,将所述训练样本图片分别输入至每个所述gpu中的训练子模型中,使所述每个gpu根据接收到的训练样本图片对其训练子模型进行训练。

本发明实施例提供的方法,从所述训练样本集合中选取训练样本图片分别输入至每个所述gpu中的训练子模型中进行训练,由每个所述gpu中的训练子模型计算所述训练样本图片属于该gpu中各个图片类别的得分值的过程,如图4所示,具体可以包括:

s401:从所述训练样本集合中选取训练样本图片,提取与所述训练样本图片对应的特征向量;

s402:将所述训练样本图片对应的特征向量分别输入至每个所述gpu中的训练子模型中进行训练,由每个所述gpu中的训练子模型计算所述训练样本图片属于该gpu中各个图片类别的得分值。

本发明实施例提供的方法,选取到训练样本图片时,需要对所述训练样本图片进行预处理,所述预处理为基于特定的算法对训练样本进行描述,以确认潜在的有用特征,经过预处理后获取所述训练样本图片对应的特征向量。

将所述训练样本图片对应的特征向量分别输入至每个所述gpu中,所述每个gpu根据训练样本图片对应的特征向量,以及gpu中训练子模型中预先设定的权重参数,计算所述训练样本图片属于该gpu中各个图片类别的得分值,优选的,所述得分值的计算可选择线性分类函数,例如可根据式子ci=f*wi计算获得得分值ci,其中f表示特征向量,wi表示权重参数。

本发明实施例提供的方法,所述确定所述训练样本图片在所有所述gpu中属于各个图片类别的得分值的总得分值的过程,如图5所示,具体可以包括:

s501:依据每个所述gpu中的训练子模型计算所述训练样本图片属于该gpu中各个图片类别的得分值,确定所述训练样本图片在每个gpu中属于各个图片类别的gpu总得分;

s502:对确定的各个gpu总得分进行求和,确定所述训练样本图片在所有所述gpu中属于各个图片类别的得分值的总得分值。

本发明实施例提供的方法,计算获得训练样本图片属于该gpu中各个图片类别的得分值ci后,将所述得分值带入函数y=ex中,得到各个得分值ci对应的数值eci,对所述各个分值ci对应的数值eci进行求和,得到总得分。

各个gpu将计算得到的总得分传输至cpu,cpu接收到各个gpu传输的与所述训练样本图片对应的总得分,并对每个gpu传输的总得分进行进行求和,得到所述训练样本图片在所有所述gpu中属于各个图片类别的得分值的总得分值。

本发明实施例提供的方法,所述模型中进行数据传递过程为:各个gpu将计算得到的与所述训练样本图片对应的总得分传递至cpu,cpu对每个gpu传输的总得分进行求和,得到总得分值,并将所述总得分值反向传播至每个gpu,极大精简了需要传输的数据量,大大提高了对神经网络进行大规模数据集训练速度。

本发明实施例提供的方法,所述依据所述总得分值,及所述训练样本图片在每个所述gpu中属于各个图片类别的得分值,及预先设定的所述训练样本图片在每个gpu中与各个图片类别对应的标准概率值,对所述基础训练模型对应的损失函数的输出值进行收敛的过程,如图6所示,具体可以包括:

s601:依据所述总得分值,及所述训练样本图片在每个所述gpu中属于各个图片类别的得分值,及预先设定的所述训练样本图片在每个gpu中与各个图片类别对应的标准概率值,分别计算每个所述gpu中的训练子模型所对应的损失值;

s602:依据每个所述gpu中的训练子模型所对应的损失值,确定所述基础训练模型所对应的损失函数的输出值是否满足预设的收敛条件,若所述基础训练模型对应的损失函数的输出值未满足预设的收敛条件,依据每个所述gpu中的训练子模型所对应的损失值,调整当前每个所述gpu中的训练子模型的权重参数,直至所述基础训练模型对应的损失函数的输出值满足预设的收敛条件。

本发明实施例提供的方法,依据各个gpu得到的与训练样本图片对应的总得分值,及训练样本图片在每个所述gpu中属于各个图片类别的得分值,及预先设定的所述训练样本图片在每个gpu中与各个图片类别对应的标准概率值,并根据gpu中训练子模型的损失函数,分别计算每个所述gpu中的训练子模型所对应的损失值;

优选的,本发明实施例提供的损失函数可以是:交叉熵损失函数,所述交叉熵损失函数如式子(1)所示:

其中,pi为训练样本图片在每个gpu中与各个图片类别对应的标准概率值;

ci为训练样本图片在每个所述gpu中属于各个图片类别的得分值;

∑k为总得分值。

优选的,所述基础训练模型所对应的损失函数的输出值可以是,对所述每个所述gpu中的训练子模型所对应的损失值进行求和,然后进行均值计算,计算结果即为所述基础训练模型所对应的损失函数的输出值。

当所述基础训练模型所对应的损失函数的输出值不满足预设的收敛条件时,所述收敛条件可以是基础训练模型所对应的损失函数的输出值小于预设的模型精度值。基于所述损失值,计算每个类别的得分值ci的梯度,根据得到的梯度,采用梯度下降的方式调整当前每个所述gpu中的训练子模型的权重参数,直至所述基础训练模型对应的损失函数的输出值满足预设的收敛条件。

本发明实施例提供的方法,还包括:

在所述基础训练模型对应的损失函数的输出值满足预设的收敛条件时,停止从所述训练样本集合中选取训练样本图片,并输出当前已训练完成的每个所述gpu中的训练子模型。

本发明实施例提供的方法,当基础训练模型对应的损失函数的输出值满足预设的收敛条件时,可认为所述基础训练模型已经达到预设的模型精度,此时可停止从所述训练样本集合中选取训练样本图片,并输出当前已训练完成的每个所述gpu中的训练子模型。

与图1所述的方法相对应,本发明实施例还提供了一种训练装置,用于对图1中方法的具体实现,其结构示意图如图7所示,具体包括:

第一选取单元701,用于选取基础训练模型,并依据所述基础训练模型所需占用的显存大小,选取多个图像处理器gpu;

第一分配单元702,用于将所述基础训练模型分割为多个训练子模型,并为每个所述gpu分配与其对应的训练子模型;

确定单元703,用于确定目标图片类别集合,所述目标图片类别集合中包含多个图片类别组,每个所述图片类别组中包含多个不同的图片类别;

第二分配单元704,用于为每个所述gpu分配与其对应的图片类别组;

第二选取单元705,用于选取训练样本集合,所述训练样本集合中包含多个训练样本图片;

训练单元706,用于从所述训练样本集合中选取训练样本图片分别输入至每个所述gpu中的训练子模型中进行训练,由每个所述gpu中的训练子模型计算所述训练样本图片属于该gpu中各个图片类别的得分值;确定所述训练样本图片在所有所述gpu中属于各个图片类别的得分值的总得分值,并将所述总得分值分别传输至每个所述gpu中;

收敛单元707,用于依据所述总得分值,及所述训练样本图片在每个所述gpu中属于各个图片类别的得分值,及预先设定的所述训练样本图片在每个gpu中与各个图片类别对应的标准概率值,对所述基础训练模型对应的损失函数的输出值进行收敛,并在所述基础训练模型对应的损失函数的输出值满足预设的收敛条件时,完成对每个gpu中训练子模型的训练。

本发明提供的模型训练方法,包括:将多种图片类别以及所述神经网络基础模型分配至多个gpu显卡,选取训练样本输入至每个gpu中的训练子模型中进行训练,确定训练样本在所有gpu中属于各个图片类别的得分值的总得分值,并将总得分值分别传输至每个gpu中;依据总得分值,及训练样本图片在每个gpu中属于各个图片类别的得分值,对基础训练模型对应的损失函数的输出值进行收敛,当基础训练模型对应的损失函数的输出值满足预设的收敛条件时,完成对每个gpu中训练子模型的训练。应用本发明提供的训练方法,可以对神经网络进行大规模的数据集的类别训练,且训练速度与小规模数据集类别训练相比几乎没有损失。

在本发明的一个实施例中,基于前述方案,第一配置单元702配置为,

确定当前已选取所述gpu的数量,并确定每个所述gpu的处理能力;

依据所述gpu的数量,及每个所述gpu的处理能力,将所述基础训练模型分割为与所述gpu的数量相同的多个训练子模型;

依据每个所述gpu的处理能力,为每个所述gpu分配与其对应的训练子模型。

在本发明的一个实施例中,基于前述方案,第二配置单元704配置为,

确定所述目标图片类别集合中每个图片类别组中所包含图片类别的数量;

依据每个所述图片类别组中所包含图片类别的数量,以及每个所述gpu的处理能力,为每个所述gpu分配与其对应的图片类别组。

在本发明的一个实施例中,基于前述方案,训练单元706配置为:

每次从所述训练样本集合中随机选取训练样本图片,并将每次随机选取的训练样本图片分别输入至每个所述gpu中的训练子模型中进行训练;

从所述训练样本集合中选取训练样本图片,提取与所述训练样本图片对应的特征向量;

将所述训练样本图片对应的特征向量分别输入至每个所述gpu中的训练子模型中进行训练,由每个所述gpu中的训练子模型计算所述训练样本图片属于该gpu中各个图片类别的得分值;

依据每个所述gpu中的训练子模型计算所述训练样本图片属于该gpu中各个图片类别的得分值,确定所述训练样本图片在每个gpu中属于各个图片类别的gpu总得分。

对确定的各个gpu总得分进行求和,确定所述训练样本图片在所有所述gpu中属于各个图片类别的得分值的总得分值。

在本发明的一个实施例中,基于前述方案,收敛单元707配置为:

依据所述总得分值,及所述训练样本图片在每个所述gpu中属于各个图片类别的得分值,及预先设定的所述训练样本图片在每个gpu中与各个图片类别对应的标准概率值,分别计算每个所述gpu中的训练子模型所对应的损失值;

依据每个所述gpu中的训练子模型所对应的损失值,确定所述基础训练模型所对应的损失函数的输出值是否满足预设的收敛条件,若所述基础训练模型对应的损失函数的输出值未满足预设的收敛条件,依据每个所述gpu中的训练子模型所对应的损失值,调整当前每个所述gpu中的训练子模型的权重参数,直至所述基础训练模型对应的损失函数的输出值满足预设的收敛条件。

本发明实施例还提供了一种存储介质,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行上述模型训练方法,包括:

选取基础训练模型,并依据所述基础训练模型所需占用的显存大小,选取多个图像处理器gpu;

将所述基础训练模型分割为多个训练子模型,并为每个所述gpu分配与其对应的训练子模型;

确定目标图片类别集合,所述目标图片类别集合中包含多个图片类别组,每个所述图片类别组中包含多个不同的图片类别;

为每个所述gpu分配与其对应的图片类别组;

选取训练样本集合,所述训练样本集合中包含多个训练样本图片;

从所述训练样本集合中选取训练样本图片分别输入至每个所述gpu中的训练子模型中进行训练,由每个所述gpu中的训练子模型计算所述训练样本图片属于该gpu中各个图片类别的得分值;确定所述训练样本图片在所有所述gpu中属于各个图片类别的得分值的总得分值,并将所述总得分值分别传输至每个所述gpu中;

依据所述总得分值,及所述训练样本图片在每个所述gpu中属于各个图片类别的得分值,及预先设定的所述训练样本图片在每个gpu中与各个图片类别对应的标准概率值,对所述基础训练模型对应的损失函数的输出值进行收敛,并在所述基础训练模型对应的损失函数的输出值满足预设的收敛条件时,完成对每个gpu中训练子模型的训练。

本发明实施例还提供了一种电子设备,其结构示意图如图8所示,具体包括存储器801,以及一个或者一个以上的指令802,其中一个或者一个以上指令802存储于存储器801中,且经配置以由一个或者一个以上处理器803执行所述一个或者一个以上指令802进行以下操作:

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

以上对本发明所提供的一种模型训练方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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