一种CNN模型及其训练方法、终端、计算机可读存储介质技术

技术编号:22884925 阅读:17 留言:0更新日期:2019-12-21 07:38
本发明专利技术公开了一种CNN模型及其训练方法、终端、计算机可读存储介质,属于CNN模型训练领域,要解决的问题为如何在保证模型训练性能的前提下分批量的实现对大批量样本的分析。其方法包括:在每个批量归一化层和与其相邻的上一个网络层之间插入一个同步层,输入层和与其相邻的同步层之间的所有网络层、以及任意相邻的两个同步层之间的所有网络层分别为一段单独的网络层单元;对于上述所有的网络层单元通过数据分批次的方式逐段进行前向传播。该CNN模型为线性结构,且为上述训练方法训练得到的模型。终端中处理器被配置用于调用所述程序指令执行上述训练方法。计算机可读存储介质中,程序指令当被处理器执行时所述处理器执行上述训练方法。

A CNN model and its training method, terminal, computer readable storage medium

【技术实现步骤摘要】
一种CNN模型及其训练方法、终端、计算机可读存储介质
本专利技术涉及CNN模型训练领域,具体地说是一种CNN模型及其训练方法、终端、计算机可读存储介质。
技术介绍
批量归一化(英文全称为BatchNormalization,英文简称为BN)能够加快深度神经网络模型的收敛,降低参数初始化的要求,具有尺度不变性,使得模型损失函数曲面更加平滑,所以这种归一化方法被广泛应用在深度模型中,尤其适用于卷积神经网络层。批量归一化算子一般放在卷积层(或全连接层)与激活层之间,算子对前一层输出的净激活值x进行变换,公式如下:其中,μ和σ分别为净激活值x所属集合的均值和方差,在模型训练过程中统计而来;γ和β分别为尺度超参数和偏移超参数。当BN层放在全连接层之后时,每个神经元的输出值组成一个集合,计算该集合的均值和方差。因此当批量batchsize设定为N个时,计算每个神经元输出的N个净激活值的均值和方差,然后按照上述变换公式进行归一化。当BN层放在卷积层之后是,每个卷积核输出一个通道的特征图,当批量batchsize设定为N个时,该卷积核输出该通道上的N个特征图,统计这N个特征图所有净激活值的均值和方差,然后对该通道的特征图按照上述公式进行归一化。由上可以看出,批量归一化算子在对模型某层的输出进行变换时,按照批量样本在卷积核对应的通道上的特征图或神经元对应的输出统计均值和方差。因此,在训练过程中每一步输入批量样本,模型同时计算出该批量样本在某一层的输出,然后统计输出的均值方差。传统模式下,大批量样本在模型中顺序传递,计算完一层后将结果传递给下一层继续执行。当模型较为复杂时会产生大量的中间变量,因此占用过多的运行时存储,在存储资源受限的计算单元上无法同时输入大批量的样本数据。常规的选择是减小批量样本数量到计算单元存储上限,或者使用更多存储空间的计算单元满足大批量样本的需求。前者导致模型训练性能下降,后者需要付出更高的经济成本。基于上述分析,如何在保证模型训练性能的前提下分批量的实现对大批量样本的分析,是需要解决的技术问题。
技术实现思路
本专利技术的技术任务是针对以上不足,提供一种CNN模型及其训练方法、终端、计算机可读存储介质,来解决如何在保证模型训练性能的前提下分批量的实现对大批量样本的分析的问题。第一方面,本专利技术提供一种CNN模型的训练方法,所述训练方法应用于呈线性结构的CNN模型,且所述CNN模型具有批量归一化层,所述训练方法包括如下步骤:在每个批量归一化层和与其相邻的上一个网络层之间插入一个同步层,所述同步层用于暂存与其相邻的上一个网络层的输出、并用于启动与其相邻的批量归一化层对输入数据的批量运算;输入层和与其相邻的同步层之间的所有网络层、以及任意相邻的两个同步层之间的所有网络层分别为一段单独的网络层单元;对于上述所有的网络层单元通过数据分批次的方式逐段进行前向传播;所述通过数据分批次的方式逐段进行前向传播为:对于每个网络层单元,将其输入数据分批次的输入所述网络层单元并暂存于同步层,汇总同步层的输出组成大批量样本,通过对应的批量归一化层对所述大批量样本进行归一化。通过该CNN模型对批量数据进行分析时,需要先通过批量样本训练该CNN模型的参数,在训练过程中,根据批量训练样本的大小以及计算机存储资源对CNN模型进行模型分段、数据分批,实现资源受限场景下大批量数据的批量归一化效果,以解决在图形显卡等计算单元有限、存储限制下无法训练大批量模型的问题。作为优选,在每个批量归一化层和与其相邻的上一个网络层之间插入一个同步层,包括如下步骤:查找到所述CNN模型中所有的批量归一化层;按照批量归一化层在所述模型中的出现次序组成划分节点;在划分节点插入同步层,所述同步层位于对应批量归一化层之前。作为优选,根据所述CNN模型的模型结构描述文件查找到所述CNN模型中所有的批量归一化层。作为优选,对于每个网络层单元,将其输入数据分批次的输入所述网络层单元并暂存于同步层,汇总同步层的输出组成大批量样本,包括如下步骤:根据所述网络层单元的结构、所述CNN模型的运行环境以及输入数据的大小,将输入数据划分为多个小批量样本;前向传播时,将所述多个小批量样本依次输入所述网络层单元,且每个小批量样本传播至同步层停止继续传播并等待下一个小批量样本,直至所有的小批量样本均传送至所述同步层;汇总同步层的输出,组成大批量样本。作为优选,对于每个网络层单元,通过对应的批量归一化层对所述大批量样本进行归一化,包括:统计计算所述大批量样本的均值和方差;通过变换公式对上述均值和方差进行归一化处理,变换公式为:其中,x表示输入同步层的净激活值,μ和σ分别为净激活值所属集合的均值和方差,μ和σ通过统计而来;γ和β分别为尺度超参数和偏移超参数。第二方面,本专利技术提供一种CNN模型,所述CNN模型为线性结构,且为通过第一方面任一项所述的一种CNN模型的训练方法训练得到的模型。作为优选,所述CNN模型包括:输出层,所述输入层用于输入训练样本;卷积层和/或全连接层,所述卷积层或全连接层至少一个,用于对输入的训练样本进行卷积计算并提取特征;其它类型层,所述其它类型层包括但不限于激活层,卷积层或全连接层与其它类型层顺序堆叠;批量归一化层,所述批量归一化层至少一个,每个批量归一化层无间隔的位于与其对应的卷积层或全连接层之后;同步层,所述同步层至少一个并与批量归一化层一一对应,每个同步层无间隔的位于与其对应的批量归一化层之前,同步层用于暂存与其相邻的上一个网络层的输出、并用于启动与其相邻的批量归一化层对输入数据的批量运算;输出层,所述输出层用于输出训练样本的最终特征。第三方面,本专利技术提供一种终端,包括处理器、输入设备、输出设备和存储器,处理器、输入设备、输出设备和存储器相互连接,存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令执行如第一方面任一项所述的一种CNN模型的训练方法。第四方面,本专利技术提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,程序指令当被处理器执行时所述处理器执行如第一方面任一项所述的一种CNN模型的训练方法。本专利技术的一种CNN模型及其训练方法、终端、计算机可读存储介质具有以下优点:在模型训练过程中,根据批量训练样本的大小以及计算机存储资源对CNN模型进行模型分段、数据分批,保证了资源受限场景下大批量数据的批量归一化效果,实现了计算单元有限、存储限制下对大批量样本分析。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例中描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其本文档来自技高网
...

【技术保护点】
1.一种CNN模型的训练方法,其特征在于应用于呈线性结构的CNN模型,且所述CNN模型具有批量归一化层,所述训练方法包括如下步骤:/n在每个批量归一化层和与其相邻的上一个网络层之间插入一个同步层,所述同步层用于暂存与其相邻的上一个网络层的输出、并用于启动与其相邻的批量归一化层对输入数据的批量运算;/n输入层和与其相邻的同步层之间的所有网络层、以及任意相邻的两个同步层之间的所有网络层分别为一段单独的网络层单元;/n对于上述所有的网络层单元通过数据分批次的方式逐段进行前向传播;/n所述通过数据分批次的方式逐段进行前向传播为:对于每个网络层单元,将其输入数据分批次的输入所述网络层单元并暂存于同步层,汇总同步层的输出组成大批量样本,通过对应的批量归一化层对所述大批量样本进行归一化。/n

【技术特征摘要】
1.一种CNN模型的训练方法,其特征在于应用于呈线性结构的CNN模型,且所述CNN模型具有批量归一化层,所述训练方法包括如下步骤:
在每个批量归一化层和与其相邻的上一个网络层之间插入一个同步层,所述同步层用于暂存与其相邻的上一个网络层的输出、并用于启动与其相邻的批量归一化层对输入数据的批量运算;
输入层和与其相邻的同步层之间的所有网络层、以及任意相邻的两个同步层之间的所有网络层分别为一段单独的网络层单元;
对于上述所有的网络层单元通过数据分批次的方式逐段进行前向传播;
所述通过数据分批次的方式逐段进行前向传播为:对于每个网络层单元,将其输入数据分批次的输入所述网络层单元并暂存于同步层,汇总同步层的输出组成大批量样本,通过对应的批量归一化层对所述大批量样本进行归一化。


2.根据权利要求1所述的一种CNN模型的训练方法,其特征在于在每个批量归一化层和与其相邻的上一个网络层之间插入一个同步层,包括如下步骤:
查找到所述CNN模型中所有的批量归一化层;
按照批量归一化层在所述模型中的出现次序组成划分节点;
在划分节点插入同步层,所述同步层位于对应批量归一化层之前。


3.根据权利要求2所述的一种CNN模型的训练方法,其特征在于根据所述CNN模型的模型结构描述文件查找到所述CNN模型中所有的批量归一化层。


4.根据权利要求1所述的一种CNN模型的训练方法,其特征在于对于每个网络层单元,将其输入数据分批次的输入所述网络层单元并暂存于同步层,汇总同步层的输出组成大批量样本,包括如下步骤:
根据所述网络层单元的结构、所述CNN模型的运行环境以及输入数据的大小,将输入数据划分为多个小批量样本;
前向传播时,将所述多个小批量样本依次输入所述网络层单元,且每个小批量样本传播至同步层停止继续传播并等待下一个小批量样本,直至所有的小批量样本均传送至所述同步层;
汇总同步层的输出,组成大批量样本。


5.根据权利要求4所述的一...

【专利技术属性】
技术研发人员:高岩姜凯郝虹于治楼李朋
申请(专利权)人:山东浪潮人工智能研究院有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1