一种神经网络稀疏化方法及装置与流程

文档序号:21548136发布日期:2020-07-17 18:00阅读:160来源:国知局
一种神经网络稀疏化方法及装置与流程

本发明涉及神经网络技术领域,尤其涉及一种神经网络稀疏化方法及装置。



背景技术:

随着人工智能的快速发展,利用机器学习技术,如深度学习技术在诸如图像分类与检测,语音识别,自然语言处理等任务上取得了较好的效果,目前广泛落地于安防,医疗,广告传媒等诸多领域。在相关技术中,神经网络训练方法一般利用固定的神经网络进行训练,训练好之后的神经网络和计算机相结合来工作,但是二者结合使得计算机的运行速度变慢功耗也相对增加,因此需要对训练好的神经网络进行稀疏化处理以降低功耗,现有的神经网络稀疏化方法为在模型训练时使用dropout机制,随机将某层的神经元的输出置零,防止模型过拟合。在神经网络计算时,对模型的权重进行稀疏化,从而达到在损失较小准确度的情况下,提升运行速度降低功耗,同时也方便进行模型压缩,节约内存。这种方法存在以下缺点:单纯的对神经网络权重进行稀疏化处理只能从表面提升运行速度并且降低功耗,实际上其运行速度和功耗并没有很大的改善,进而导致计算机运行速度依旧很慢、功耗依旧很高的。造成高成本低回报的代价。



技术实现要素:

针对上述所显示出来的问题,本方法基于对神经网络每一层的输入特征进行分类进而根据分类结果对每一层的输入特征进行稀疏化处理,然后二次训练神经网络并且保存来实现对神经网络的稀疏化处理。

一种神经网络稀疏化方法,包括以下步骤:

获取预设神经网络并训练所述预设神经网络;

将训练后的预设神经网络中每层的第一输入特征分为n个第一类别;

基于n个第一类别,对每个第一类别中的所述第一输入特征进行稀疏化处理;

稀疏化处理完毕后,对所述训练后的预设神经网络进行二次训练;

保存二次训练后的所述预设神经网络。

优选的,所述将训练后的预设神经网络中每层的第一输入特征分为n个第一类别,包括:

确定所述第一输入特征的第一具体数值;

获取所述第一具体数值的绝对值;

基于所述绝对值根据预设n个数值范围将所述第一具体数值分为所述n个第一类别。

优选的,所述基于n个第一类别,对每个第一类别中的所述第一输入特征进行置零调整,包括:

获取所述n个类别中所述第一输入特征的n个类别的第一具体数值;

利用n个预设稀疏化阈值对所述n个类别的第一具体数值进行稀疏化处理;

获取所述n个类别的第一具体数值的绝对值小于所述n个预设稀疏化阈值的第一具体数值作为第二具体数值;

确认所述第二具体数值的绝对值和所述n个预设稀疏化阈值的差值是否小于预设阈值;

提取所述差值小于所述预设阈值的第二具体数值作为第三具体数值;

将所述第三具体数值进行置零调整。

优选的,所述稀疏化处理完毕后,对所述训练后的预设神经网络进行二次训练,包括:

确定所述第三具体数值的数量是否大于等于预设数量;

若是,保存置零调整后的所述第一输入特征,对所述训练后的预设神经网络进行二次训练;

否则,重复对所述第一输入特征进行置零调整直到确定所述第三具体数值的数量大于等于所述预设数量为止。

优选的,所述方法还包括:

获取所述二次训练好的所述预设神经网络中每层的第二输入特征;

获取所述二次训练好的所述预设神经网络中每层的神经元;

将所述第二输入特征和所述神经元结合构成输出通道;

将所述输出通道按照预设特征顺序排序。

一种神经网络稀疏化装置,该装置包括:

第一训练模块,用于获取预设神经网络并训练所述预设神经网络;

分类模块,用于将训练后的预设神经网络中每层的第一输入特征分为n个第一类别;

处理模块,用于基于n个第一类别,对每个第一类别中的所述第一输入特征进行稀疏化处理;

第二训练模块,用于稀疏化处理完毕后,对所述训练后的预设神经网络进行二次训练;

保存模块,用于保存二次训练后的所述预设神经网络。

优选的,所述分类模块,包括:

第一确定子模块,用于确定所述第一输入特征的第一具体数值;

第一获取子模块,用于获取所述第一具体数值的绝对值;

分类子模块,用于基于所述绝对值根据预设n个数值范围将所述第一具体数值分为所述n个第一类别。

优选的,所述处理模块,包括:

第二获取子模块,用于获取所述n个类别中所述第一输入特征的n个类别的第一具体数值;

处理子模块,用于利用n个预设稀疏化阈值对所述n个类别的第一具体数值进行稀疏化处理;

第三获取子模块,用于获取所述n个类别的第一具体数值的绝对值小于所述n个预设稀疏化阈值的第一具体数值作为第二具体数值;

确认子模块,用于确认所述第二具体数值的绝对值和所述n个预设稀疏化阈值的差值是否小于预设阈值;

提取子模块,用于提取所述差值小于所述预设阈值的第二具体数值作为第三具体数值;

第一调整子模块,用于将所述第三具体数值进行置零调整。

优选的,所述第二训练模块,包括:

第二确定子模块,用于确定所述第三具体数值的数量是否大于等于预设数量;

训练子模块,用于当所述第二确定子模块确定所述第三具体数值的数量大于等于所述预设数量时,保存置零调整后的所述第一输入特征,对所述训练后的预设神经网络进行二次训练;

第二调整子模块,用于当所述第二确定子模块确定所述第三具体数值的数量小于所述预设数量时,重复对所述第一输入特征进行置零调整直到确定所述第三具体数值的数量大于等于所述预设数量为止。

优选的,所述装置还包括:

第一获取模块,用于获取所述二次训练好的所述预设神经网络中每层的第二输入特征;

第二获取模块,用于获取所述二次训练好的所述预设神经网络中每层的神经元;

结合模块,用于将所述第二输入特征和所述神经元结合构成输出通道;

排序模块,用于将所述输出通道按照预设特征顺序排序。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书以及附图中所特别指出的结构来实现和获得。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制,在附图中:

图1为本发明所提供的一种神经网络稀疏化方法的工作流程图;

图2为本发明所提供的一种神经网络稀疏化方法的另一工作流程图;

图3为本发明所提供的一种神经网络稀疏化装置的结构图;

图4为本发明所提供的一种神经网络稀疏化装置的另一结构图;

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

随着人工智能的快速发展,利用机器学习技术,如深度学习技术在诸如图像分类与检测,语音识别,自然语言处理等任务上取得了较好的效果,目前广泛落地于安防,医疗,广告传媒等诸多领域。在相关技术中,神经网络训练方法一般利用固定的神经网络进行训练,训练好之后的神经网络和计算机相结合来工作,但是二者结合使得计算机的运行速度变慢功耗也相对增加,因此需要对训练好的神经网络进行稀疏化处理以降低功耗,现有的神经网络稀疏化方法为在模型训练时使用dropout机制,随机将某层的神经元的输出置零,防止模型过拟合。在神经网络计算时,对模型的权重进行稀疏化,从而达到在损失较小准确度的情况下,提升运行速度降低功耗,同时也方便进行模型压缩,节约内存。这种方法存在以下缺点:单纯的对神经网络权重进行稀疏化处理只能从表面提升运行速度并且降低功耗,实际上其运行速度和功耗并没有很大的改善,进而导致计算机运行速度依旧很慢、功耗依旧很高的。造成高成本低回报的代价。为了解决上述问题,本实施例公开了一种基于对神经网络每一层的输入特征进行分类进而根据分类结果对每一层的输入特征进行稀疏化处理,然后二次训练神经网络并且保存来实现对神经网络的稀疏化处理的方法。

一种神经网络稀疏化方法,如图1所示,包括以下步骤:

步骤s101、获取预设神经网络并训练预设神经网络;

步骤s102、将训练后的预设神经网络中每层的第一输入特征分为n个第一类别;

步骤s103、基于n个第一类别,对每个第一类别中的第一输入特征进行稀疏化处理;

步骤s104、稀疏化处理完毕后,对训练后的预设神经网络进行二次训练;

步骤s105、保存二次训练后的预设神经网络;

在本实施例中,上述n个第一类别对应的是n个低于输入特征对应的类别,而非熟知的第一第二类别,其名称对应于第一输入特征。

上述技术方案的工作原理为:预先获取预设神经网络进行训练,然后将训练后的预设神经网络中每层的第一输入特征进行分类,分为n个第一类别,对每个第一类别中的第一输入特征进行稀疏化处理,稀疏化处理完毕后对预设神经网络进行二次训练,训练完毕后保存预设神经网络。

上述技术方案的有益效果为:通过对预设神经网络中每层的第一输入特征进行分类并且进行稀疏化处理,更大程度的实现对神经网络的稀疏化处理,解决了现有技术中单纯的对神经网络进行稀疏化处理效果不佳导致计算机运行速度依旧很慢、功耗依旧很高的问题,进一步的提高了计算机的运行速度的同时降低了功耗。

在一个实施例中,如图2所示,将训练后的预设神经网络中每层的第一输入特征分为n个第一类别,包括:

步骤s201、确定第一输入特征的第一具体数值;

步骤s202、获取第一具体数值的绝对值;

步骤s203、基于绝对值根据预设n个数值范围将第一具体数值分为所述n个第一类别。

上述技术方案的有益效果为:根据第一具体数值可以准确的根据预设n个数值范围将第一输入特征进行分类,提高了准确性。

在一个实施例中,,基于n个第一类别,对每个第一类别中的第一输入特征进行稀疏化处理,包括:

获取n个类别中第一输入特征的n个类别的第一具体数值;

利用n个预设稀疏化阈值对n个类别的第一具体数值进行稀疏化处理;

获取n个类别的第一具体数值的绝对值小于n个预设稀疏化阈值的第一具体数值作为第二具体数值;

确认第二具体数值的绝对值和n个预设稀疏化阈值的差值是否小于预设阈值;

提取差值小于预设阈值的第二具体数值作为第三具体数值;

将第三具体数值进行置零调整。

上述技术方案的有益效果为:通过多次筛选确定第三具体数值并对其进行置零调整避免了将无需进行置零调整的第一输入特征一并进行置零调整导致周期长和效率低的问题,有效的提高了效率并且同时降低了成本。

在一个实施例中,稀疏化处理完毕后,对训练后的预设神经网络进行二次训练,包括:

确定第三具体数值的数量是否大于等于预设数量;

若是,保存置零调整后的第一输入特征,对训练后的预设神经网络进行二次训练;

否则,重复对第一输入特征进行置零调整直到确定第三具体数值的数量大于等于预设数量为止;

在本实施例中,上述预设数量可以为第三具体数值数量的80%。

上述技术方案的有益效果为:通过多次进行置零调整保证第一输入特征尽可能多的进行置零调整,从而可以使计算机的运行速度更快,功耗更低。

在一个实施例中,上述方法还包括:

获取二次训练好的预设神经网络中每层的第二输入特征;

获取二次训练好的预设神经网络中每层的神经元;

将第二输入特征和神经元结合构成输出通道;

将输出通道按照预设特征顺序排序。

上述技术方案的有益效果为:按照预设特征顺序进行排序可以使得神经网络在计算机上运行时能获得最大效率,最大化的激发了神经网络的作用。

在一个实施例中,包括:

第1步:将神经网络模型训练到收敛状态;

第2步:对神经网络每层的输入进行分类(在channel方向上分类,将数值的绝对值分布范围相近的channel分为一类),不同类使用不同的稀疏化阈值,将每类中数值的绝对值小于该类阈值的数置零,同时考虑神经网络输出的精度,采用稀疏化导致的精度损失不应大于某一阈值;

第3步:不断重复第2步,保证神经网络精度损失不大于某一阈值前提下,不断调整神经网络每层的分类和每类的稀疏化阈值,使得稀疏化后每层输入数据中为零的数据越多越好;

第4步:对第3步得到的网络进行再次训练,对调节神经网络的权重进行微调,提升网络精度;

第5步:根据第4步对神经网络每层输入(即上一层输出)的分类,对上一层的神经元进行排序(注:每个神经元与输入特征卷积,结果就是一个输出通道),使得每层输入信息的相同类的通道按特定顺序排序(如相同类的通道在顺序上相挨着),该特定顺序使得在硬件上运行时能获得最大效率。

上述技术方案的有益效果为:在保证精度的前提下,对神经网络每层的输入信息进行分类,不同类采用不同的稀疏阈值,提升每层输入数据中为零的比例,从而提高网络(在硬件上)的运行速度、降低功耗。

本实施例还公开了一种神经网络稀疏化装置,如图3所示,该装置包括:

第一训练模块301,用于获取预设神经网络并训练预设神经网络;

分类模块302,用于将训练后的预设神经网络中每层的第一输入特征分为n个第一类别;

处理模块303,用于基于n个第一类别,对每个第一类别中的第一输入特征进行稀疏化处理;

第二训练模块304,用于稀疏化处理完毕后,对训练后的预设神经网络进行二次训练;

保存模块305,用于保存二次训练后的预设神经网络。

在一个实施例中,如图4所示,分类模块,包括:

第一确定子模块3021,用于确定第一输入特征的第一具体数值;

第一获取子模块3022,用于获取第一具体数值的绝对值;

分类子模块3023,用于基于绝对值根据预设n个数值范围将第一具体数值分为n个第一类别。

在一个实施例中,处理模块,包括:

第二获取子模块,用于获取n个类别中第一输入特征的n个类别的第一具体数值;

处理子模块,用于利用n个预设稀疏化阈值对n个类别的第一具体数值进行稀疏化处理;

第三获取子模块,用于获取所述n个类别的第一具体数值的绝对值小于所述n个预设稀疏化阈值的第一具体数值作为第二具体数值;

确认子模块,用于确认第二具体数值的绝对值和n个预设稀疏化阈值的差值是否小于预设阈值;

提取子模块,用于提取所述差值小于所述预设阈值的第二具体数值作为第三具体数值;

第一调整子模块,用于将第三具体数值进行置零调整。

在一个实施例中,第二训练模块,包括:

第二确定子模块,用于确定第三具体数值的数量是否大于等于预设数量;

训练子模块,用于当第二确定子模块确定第三具体数值的数量大于等于预设数量时,保存置零调整后的第一输入特征,对训练后的预设神经网络进行二次训练;

第二调整子模块,用于当第二确定子模块确定第三具体数值的数量小于预设数量时,重复对第一输入特征进行置零调整直到确定第三具体数值的数量大于等于预设数量为止。

在一个实施例中,上述装置还包括:

第一获取模块,用于获取二次训练好的预设神经网络中每层的第二输入特征;

第二获取模块,用于获取二次训练好的预设神经网络中每层的神经元;

结合模块,用于将第二输入特征和神经元结合构成输出通道;

排序模块,用于将输出通道按照预设特征顺序排序。

本领域技术人员应当理解的是,本发明中的第一、第二指的是不同应用阶段而已。

本领域技术用户员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

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