神经网络自动剪枝方法、装置及电子设备
技术领域
本申请涉及计算机技术领域,尤其涉及深度学习及人工智能技术领域,提出一种神经网络自动剪枝方法、装置及电子设备,可用于图像处理方面。
背景技术
深度学习技术在很多研究方向上都取得了巨大的成功。在深度学习技术中,神经网络结构的好坏对模型的最终效果有非常重要的影响。手工设计神经网络结构不仅需要非常丰富的经验和众多尝试,而且神经网络中的参数非常多,参数的随机组合会生成数量庞大的神经网络模型,通过人工方式选取几乎不可行。
相关技术中,基于NAS(Neural Architecture Search,神经网络架构搜索技术)对超网络的模型结构进行自动搜索,可以大大加速模型搜索速度。然而,由于模型子网络基于超网络的性能与独立训练子网络的性能之间有很大的差异,从而容易造成搜索获得的子网络的性能较差。
发明内容
本申请提供了一种用于神经网络自动剪枝方法、装置、电子设备以及存储介质。
根据本申请的一方面,提供了一种神经网络自动剪枝方法,包括:获取待剪枝的神经网络、样本数据及对应的老师模型,其中,所述待剪枝的神经网络的各层间包含N种特征变换方式,其中,N为大于1的正整数;将所述神经网络的第一层与第二层间的N种特征变换方式依次进行剪枝处理,以获取N个候选剪枝网络;将所述样本数据分别输入所述N个候选剪枝网络及所述老师模型,以获取所述N个候选剪枝网络输出的N个第一软标签及所述老师模型输出的第二软标签;根据所述N个第一软标签分别与所述第二软标签的差异,确定所述第一层与第二层间的N-1特征变换方式;执行将所述神经网络的第二层与第三层间的N种特征变换方式依次进行剪枝处理的操作,以确定所述第二层与第三层间的N-1特征变换方式,直至剪枝后的神经网络的各层间仅包含一种特征变换方式。
根据本申请的另一方面,提供了一种神经网络自动剪枝装置,第一获取模块,用于获取待剪枝的神经网络、样本数据及对应的老师模型,其中,所述待剪枝的神经网络的各层间包含N种特征变换方式,其中,N为大于1的正整数;第一剪枝处理模块,用于将所述神经网络的第一层与第二层间的N种特征变换方式依次进行剪枝处理,以获取N个候选剪枝网络;第二获取模块,用于将所述样本数据分别输入所述N个候选剪枝网络及所述老师模型,以获取所述N个候选剪枝网络输出的N个第一软标签及所述老师模型输出的第二软标签;确定模块,用于根据所述N个第一软标签分别与所述第二软标签的差异,确定所述第一层与第二层间的N-1特征变换方式;第二剪枝处理模块,用于执行将所述神经网络的第二层与第三层间的N种特征变换方式依次进行剪枝处理的操作,以确定所述第二层与第三层间的N-1特征变换方式,直至剪枝后的神经网络的各层间仅包含一种特征变换方式。
根据本申请的再一方面,提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如前所述的神经网络自动剪枝方法。
根据本申请的又一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行如前所述的神经网络自动剪枝方法。
根据本申请的技术方案,解决了相关技术中,基于NAS对超网络的模型结构进行自动搜索,由于模型子网络基于超网络的性能与独立训练子网络的性能之间有很大的差异,从而容易造成搜索获得的子网络的性能较差的问题。通过引入精度高的老师模型作为参考,并对待剪枝的神经网络各层间的特征变化方式进行剪枝处理,之后利用待剪枝的神经网络对应的各候选剪枝网络与老师模型对样本数据进行处理,进而根据各候选剪枝网络输出的第一软标签与老师模型输出的第二软标签的差异,确定待剪枝的神经网络中各层间可以进行剪枝处理的特征变换方式,直至剪枝后的神经网络的各层间仅包含一种特征变换方式。由此,通过利用精度较高的老师模型作为参考,依次剪除待剪枝的神经网络中各层间重要程度较低的特征变换方式,以在各层间均保留性能最佳的一种特征变换方式,形成神经网络的子网络,从而不仅降低了神经网络的规模,而且提升了生成的子网络的性能。
应当理解,本部分所描述的内容并非旨在标识本申请的实施例的关键或重要特征,也不用于限制本申请的范围。本申请的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1为本申请实施例所提供的一种神经网络自动剪枝方法的流程示意图;
图2为本申请实施例所提供的另一种神经网络自动剪枝方法的流程示意图;
图3为本申请实施例所提供的再一种神经网络自动剪枝方法的流程示意图;
图4为本申请实施例提供的一种神经网络自动剪枝装置的结构示意图;
图5为用来实现本申请实施例的神经网络自动剪枝方法的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本申请实施例针对相关技术中,基于NAS对超网络的模型结构进行自动搜索,由于模型子网络基于超网络的性能与独立训练子网络的性能之间有很大的差异,从而容易造成搜索获得的子网络的性能较差的问题,提出一种神经网络自动剪枝方法。
下面参考附图对本申请提供的神经网络自动剪枝方法、装置、电子设备及存储介质进行详细描述。
图1为本申请实施例所提供的一种神经网络自动剪枝方法的流程示意图。
如图1所示,该神经网络自动剪枝方法,包括以下步骤:
步骤101,获取待剪枝的神经网络、样本数据及对应的老师模型,其中,待剪枝的神经网络的各层间包含N种特征变换方式,其中,N为大于1的正整数。
其中,待剪枝的神经网络,可以是指根据神经网络搜索空间,生成的具有多个层级且每两个相邻层级间具有多种特征变化方式的神经网络。
其中,老师模型,可以是指训练完成的规模较大、且精度较高的神经网络模型。
其中,样本数据,可以是指与当前的业务类型对应的数据。比如,当前的业务类型为图像处理,如对图像进行分类,则样本数据可以是大量图像数据。
在本申请实施例中,可以根据当前的业务类型,从神经网络搜索空间中,获取与当前的业务类型相符的神经网络结构,以及神经网络中各层间的特征变换方式,以构成待剪枝的神经网络;以及根据当前的业务类型,从开源的大规模神经网络模型中,获取与当前的业务类型相符的、已训练完成的精度较高的网络模型,作为老师模型。
举例来说,根据当前的业务类型,从神经网络搜索空间中,获取的与当前的业务类型相符的神经网络结构中包括3层,其中,第一层对应的特征变换至第二层对应的特征共包含10种特征变换方式,第二层对应的特征变换至第三层对应的特征共包含6种特征变换方式,从而可以将第一层与第二层间的10种特征变换方式,与第二层与第三层间的6种变换方式进行组合,以生成一个规模较大的待剪枝的神经网络。
步骤102,将神经网络的第一层与第二层间的N种特征变换方式依次进行剪枝处理,以获取N个候选剪枝网络。
其中,候选剪枝网络,可以是指将待剪枝的神经网络中任意相邻两层间的一种特征变换方式进行剪枝处理后,生成的神经网络。
在本申请实施例中,可以对待剪枝的神经网络中各层间的多种特征变换方式依次进行剪枝处理,以从待剪枝的神经网络中获取性能最佳的子网络。
作为一种可能的实现方式,可以首先对待剪枝的神经网络的第一层与第二层间的N种特征变换方式依次进行剪枝处理,以生成N个候选剪枝网络。具体的,可以将第一层与第二层间的第1种特征变换方式剪除,以生成第1个候选剪枝网络;将第一层与第二层间的第2种特征变换方式剪除,以生成第2个候选剪枝网络;依次类推,将第一层与第二层间的第N种特征变换方式剪除,以生成第N个候选剪枝网络。
步骤103,将样本数据分别输入N个候选剪枝网络及老师模型,以获取N个候选剪枝网络输出的N个第一软标签及老师模型输出的第二软标签。
在本申请实施例中,对待剪枝的第一层与第二层间的N种特征变换方式依次进行剪枝处理,生成N个候选剪枝网络之后,可以利用老师模型的性能作为参考,确定N个候选剪枝网络的性能,进而根据N个候选剪枝网络的性能确定第一层与第二层间当前可以剪除的特征变换方式。
作为一种可能的实现方式,可以将大量样本数据分别输入N个候选剪枝网络,以使N个候选剪枝网络对每个样本数据进行识别处理,并获取N个候选剪枝网络输出的每个样本数据对应的第一软标签;以及将大量样本数据输入老师模型,以使老师模型对每个样本数据进行识别处理,并获取老师模型输出的每个样本数据对应的第二软标签。
举例来说,假设共有1000个样本数据,则可以将1000个样本数据依次输入第1个候选剪枝网络,以获取第1个候选剪枝网络输出的1000个样本数据分别对应的第一软标签;将1000个样本数据依次输入第2个候选剪枝网络,以获取第2个候选剪枝网络输出的1000个样本数据分别对应的第一软标签;依次类推,将1000个样本数据依次输入第N个候选剪枝网络,以获取第N个候选剪枝网络输出的1000个样本数据分别对应的第一软标签;进而,将1000个样本数据依次输入老师模型,以获取老师模型输出的1000个样本数据分别对应的第二软标签。
步骤104,根据N个第一软标签分别与第二软标签的差异,确定第一层与第二层间的N-1特征变换方式。
作为一种可能的实现方式,可以预先设置损失函数,对于一个候选剪枝网络,可以根据该候选剪枝网络输出的每个样本数据对应的第一软标签,与老师模型输出的相应样本数据对应的第二软标签的差异,确定出该候选剪枝网络对应的损失函数取值。进而,按照上述相同的方式,可以确定出N个候选剪枝网络分别对应的损失函数取值。
在本申请实施例中,由于候选剪枝网络对应的损失函数取值越小,说明该候选剪枝网络与老师模型的差异越小,即该候选剪枝网络的性能越好。因此,可以根据N个候选剪枝网络中损失函数取值最小的候选剪枝网络,确定待剪枝的神经网络的第一层与第二层间的N-1种特征变换方式。
具体的,假设第i个候选剪枝网络对应的损失函数取值最小,且第i个候选剪枝网络是将待剪枝的神经网络的第一层与第二层间的第i种特征变换方式进行剪枝处理生成的,从而可以确定将第一层与第二层间的第i种特征变换方式进行剪枝处理,不会对待剪枝的神经网络的性能产生较大影响,从而可以将第一层与第二层间的第i种特征变换方式进行剪枝处理,并将第一层与第二层间剩余的特征变换方式,确定为第一层与第二层间的N-1种特征变换方式。
步骤105,执行将神经网络的第二层与第三层间的N种特征变换方式依次进行剪枝处理的操作,以确定第二层与第三层间的N-1特征变换方式,直至剪枝后的神经网络的各层间仅包含一种特征变换方式。
在本申请实施例中,确定出待剪枝的神经网络的第一层与第二层间的N-1种特征变换方式之后,可以对待剪枝的神经网络进行剪枝处理,以保留第一层与第二层间的N-1种特征变换方式,生成剪枝后的神经网络;之后基于剪枝后的神经网络,按照与上述步骤相同的方式,确定第二层与第三层间可以剪除的一个特征变换方式,以确定第二层与第三层间的N-1种特征变换方式;直至遍历待剪枝的神经网络中的所有层级,即将待剪枝的神经网络中各相邻两层间均剪除一个特征变换方式之后,则可以确定完成对待剪枝的神经网络的第一次剪枝过程。
相应的,完成对待剪枝的神经网络的第一次剪枝过程之后,可以再次基于第一次剪枝之后的神经网络,继续对待剪枝的神经网络进行第二次剪枝处理,即确定待剪枝的神经网络的第一层与第二层间的N-2种特征变换方式,确定待剪枝的神经网络的第二层与第三层间的N-2种特征变换方式,待剪枝的神经网络的第三层与第四层间的N-2种特征变换方式,依次类推,直至遍历待剪枝的神经网络中的所有层级,则可以确定完成对待剪枝的神经网络的第二次剪枝过程;按照上述相同的方式,迭代进行多次对待剪枝的神经网络的剪枝过程,直至剪枝后的神经网络的各层仅包含一种特征变换方式,即剪枝后的神经网络的第一层与第二层间仅包含一种特征变换方式,第二层与第三层间仅包含一种特征变换方式,第三层与第四层间仅包含一种特征变换方式,等等,并将剪枝后的神经网络确定为需要生成的子网络。
根据本申请实施例的技术方案,通过引入精度高的老师模型作为参考,并对待剪枝的神经网络各层间的特征变化方式进行剪枝处理,之后利用待剪枝的神经网络对应的各候选剪枝网络与老师模型对样本数据进行处理,进而根据各候选剪枝网络输出的第一软标签与老师模型输出的第二软标签的差异,确定待剪枝的神经网络中各层间可以进行剪枝处理的特征变换方式,直至剪枝后的神经网络的各层间仅包含一种特征变换方式。由此,通过利用精度较高的老师模型作为参考,依次剪除待剪枝的神经网络中各层间重要程度较低的特征变换方式,以在各层间均保留性能最佳的一种特征变化方式,形成神经网络的子网络,从而不仅降低了神经网络的规模,而且提升了生成的子网络的性能。
需要说明的是,采用本申请实施例的神经网络自动剪枝方法获取的神经网络,可以应用在硬件资源有限的电子设备中,如手机、平板电脑等体积小、硬件性能一般的移动终端,以在不占用过多资源的情况,提升电子设备的性能。比如,移动终端利用通过本申请的神经网络自动剪枝方法获取的图像处理模型,进行图像识别,由于模型结构简单、且精度高,从而使得在不占用移动终端过多资源的情况下,提高了移动的终端图像识别的准确性和可靠性,而且提高了图像处理的速度,降低了图像处理模型对电子设备的硬件性能要求,降低了电子设备的硬件成本。
在本申请一种可能的实现形式中,可以从网络搜索空间中获取到各层间的特征变换方式之后,将各层间的特征变换方式进行全连接处理,以生成初始神经网络,并对初始神经网络进行训练,生成待剪枝的神经网络,以通过全连接的方式融合各种特征变换方式中的参数,提升待剪枝的神经网络的规模和精度,进而提升剪枝后生成的子网络的性能。
下面结合图2,对本申请实施例提供的神经网络自动剪枝方法进行进一步说明。
图2为本申请实施例所提供的另一种神经网络自动剪枝方法的流程示意图。
如图2所示,该神经网络自动剪枝方法,包括以下步骤:
步骤201,获取网络搜索空间。
其中,网络搜索空间,可以是任意的基于超网络的神经网络搜索空间,如arts、OneshotNAS等。
在本申请实施例中,网络搜索空间可以是用户或开发人员设定的。因此,可以获取用户通过客户端发送的网络搜索空间设定指令,进而对网络搜索空间设定指令进行解析处理,以确定网络搜索空间设定指令中包含的网络搜索空间。
步骤202,初始化网络搜索空间中各层间的各候选特征变换方式为全连接状态,以获取初始神经网络。
在本申请实施例中,根据当前的业务类型,确定出网络搜索空间中各层间的各候选特征变换方式后,可以将处于同一层级间的各候选特征变换方式进行全连接处理,并为各候选特征变换方式分别赋予相同的权重,以生成初始神经网络。
举例来说,确定网络搜索空间中第一层与第二层间包含6种候选特征变换方式,第二层与第三层间包含4种候选特征变换方式,从而可以将第一层与第二层间的6种候选特征变换方式进行全连接处理,且每个候选特征变换方式的权重为1/6,并将第二层与第三层间的4种候选特征变换方式进行全连接处理,且每个候选特征变换方式的权重为1/4,以生成初始神经网络。
步骤203,利用样本数据对初始神经网络进行训练,以获取待剪枝的神经网络。
在本申请实施例中,确定出初始神经网络之后,可以将每个样本数据依次输入初始神经网络,以使初始神经网络对每个样本数据进行识别处理,并根据初始神经网络对每个样本数据的识别结果,对初始神经网络进行训练,以生成待剪枝的神经网络。
进一步的,为使得对初始神经网络进行训练之后,生成的待剪枝的神经网络模型可以学习到神经网络的中间处理过程,可以根据老师模型的模型结构对初始神经网络进行修正。即在本申请实施例一种可能的实现形式中,上述老师模型中包括M个分别与不同模型块的输出端连接的全连接层,其中,M为大于1的正整数;相应的,上述步骤203,可以包括:
根据老师模型中M个全连接层的位置,对初始神经网络进行修正,以获取修正后的神经网络,其中,修正后的神经网络中包括M个全连接层;
利用样本数据对修正后的神经网络进行训练,以获取待剪枝的神经网络。
需要说明的是,老师模型中可以包括多个模型块,每个模型块可以包括老师模型中的多个层级。比如,老师模型中的每个模型块包括三个层级。在每个模型块的输出端连接全连接层之后,老师模型中的每个全连接层都可以输出软标签,从而可以通过与每个模型块连接的全连接层体现老师模型的中间处理过程。
在本申请实施例中,可以根据老师模型中各个全连接层的位置,在初始神经网络中的相应位置分别引出一个全连接层,以生成包括M个全连接层的修正后的神经网络;之后将每个样本数据分别输入修正后的神经网络,以使修正后的神经网络对每个样本数据进行识别处理,以根据修正后的神经网络对每个样本数据的识别结果,对修正后的神经网络进行训练,从而生成待剪枝的神经网络。
举例来说,假设老师模型中包括10个层级,且老师模型的第1-3层为1个模型块,第3层的输出端连接了1个全连接层;第4-6层为1个模型块,第6层的输出端连接了1个全连接层;第7-9层1个模型块,第9层的输出端连接了1个全连接层;第10层为1个模型块,第10层的输出端连接了1个全连接层,即老师模型中包括4个全连接层。从而,可以在初始神经网络的第3层的输出端连接1个全连接层,在第6层的输出端连接1个全连接层,在第9层的输出端连接1个全连接层,在第10层的输出端连接1个全连接层,以生成修正后的神经网络。
进一步的,对初始神经网络进行修正之后,可以根据修正后的神经网络中各全连接层的输出对修正后的神经网络进行训练,以使生成的待剪枝的神经网络可以学习到模型中间处理过程的细节信息。即在本申请实施例一种可能的实现形式中,上述利用样本数据对修正后的神经网络进行训练,以获取待剪枝的神经网络,可以包括:
将样本数据输入修正后的神经网络,以根据M个全连接层输出的软标签与样本数据对应的目标标签的差异,确定损失值;以及
根据损失值对修正后的神经网络进行训练,直至损失值小于阈值,以获取待剪枝的神经网络。
在本申请实施例中,可以将每个样本数据输入修正后的神经网络,并获取修正后的神经网络中的M个全连接层分别输出的每个样本数据对应的软标签。之后,对于一个全连接层,可以根据该全连接层输出的每个样本数据对应的软标签与相应的样本数据对应的目标标签的差异,确定该全连接层对应的损失值。进而,按照相同的方式,确定出M个全连接层分别对应的损失值,进而对M个全连接层分别对应的损失值进行融合处理,以生成修正后的神经网络对应的损失值,进而根据修正后的神经网络对应的损失值对修正后的神经网络的参数进行更新,进而利用更新后的神经网络模型迭代进行上述训练过程,直至修正后的神经网络对应的损失值小于阈值,则可以结束对修正后的神经网络的训练,并将训练完成的修正后的神经网络确定为待剪枝的神经网络。
需要说明的是,实际使用时,可以根据实际需要及具体的应用场景,确定对M个全连接层分别对应的损失值进行融合的方式,本申请实施例对此不做限定。比如,可以将M个全连接层分别对应的损失值之和,确定为修正后的神经网络对应的损失值;或者,还可以将M个全连接层分别对应的损失值的均值,确定为修正后的神经网络对应的损失值,等等。
进一步的,还可以预先设置对修正后的神经网络进行训练的次数,以降低网络训练的计算复杂度。即在本申请实施例一种可能的实现形式中,上述利用样本数据对修正后的神经网络进行训练,以获取待剪枝的神经网络,可以包括:
利用样本数据对修正后的神经网络训练预设的次数,以获取待剪枝的神经网络。
作为一种可能的实现方式,可以预设对修正后的神经网络进行训练的次数,从而可以将每个样本数据输入修正后的神经网络,并获取修正后的神经网络中的M个全连接层分别输出的每个样本数据对应的软标签。之后确定出M个全连接层分别对应的损失值,进而对M个全连接层分别对应的损失值进行融合处理,以生成修正后的神经网络对应的损失值,进而根据修正后的神经网络对应的损失值对修正后的神经网络的参数进行更新,进而利用更新后的神经网络模型迭代进行上述训练过程,直至训练次数达到预设的次数,则可以结束对修正后的神经网络的训练,并将训练完成的修正后的神经网络确定为待剪枝的神经网络。
需要说明的是,实际使用时,可以根据实际需要与实践经验,确定进行训练的预设的次数,本申请实施例对此不做限定。
步骤204,获取样本数据及对应的老师模型。
步骤205,将神经网络的第一层与第二层间的N种特征变换方式依次进行剪枝处理,以获取N个候选剪枝网络。
步骤206,将样本数据分别输入N个候选剪枝网络及老师模型,以获取N个候选剪枝网络输出的N个第一软标签及老师模型输出的第二软标签。
步骤207,根据N个第一软标签分别与第二软标签的差异,确定第一层与第二层间的N-1种特征变换方式。
上述步骤204-207的具体实现过程及原理,可以参照上述实施例的详细描述,此处不再赘述。
步骤208,利用样本数据,对更新后的待剪枝的神经网络进行训练,以获取新的待剪枝的神经网络,其中,更新后的待剪枝的神经网络的第一层与第二层间包含N-1种特征变换方式。
在本申请实施例中,确定出第一层与第二层间可以进行剪枝的一个特征变换方式,并对该特征变换方式进行剪枝处理,生成第一层与第二层间包含N-1种特征变换方式的更新后的待剪枝的神经网络后,由于更新后的待剪枝的神经网络与待剪枝的神经网络相比,网络结构发生了变化,从而可以重新按照上述步骤描述的方式,对更新后的待剪枝的神经网络进行训练,以生成新的待剪枝的神经网络。从而,本申请实施例的后续步骤可以继续对新的待剪枝的神经网络进行剪枝处理。
需要说明的是,在对每层间的特征变换方式进行剪枝处理之后,均可以对更新后的待剪枝的神经网络进行重新训练后,再进行后面各层的剪枝处理过程,以进一步提升剪枝处理的精确性,提升生成的子网络的性能。
步骤209,执行将新的待剪枝的神经网络的第二层与第三层间的N种特征变换方式依次进行剪枝处理的操作,以确定第二层与第三层间的N-1种特征变换方式,直至剪枝后的神经网络的各层间仅包含一种特征变换方式。
上述步骤209的具体实现过程及原理,可以参照上述实施例的详细描述,此处不再赘述。
根据本申请实施例的技术方案,通过从网络搜索空间中获取到各层间的特征变换方式之后,将各层间的特征变换方式进行全连接处理,以生成初始神经网络,并对初始神经网络进行训练,生成待剪枝的神经网络,之后利用精度较高的老师模型作为参考,依次剪除待剪枝的神经网络中各层间重要程度较低的特征变换方式,以在各层间均保留性能最佳的一种特征变化方式,形成神经网络的子网络。由此,通过全连接的方式融合各种特征变换方式中的参数,提升待剪枝的神经网络的规模和精度,进而进一步提升了剪枝后生成的子网络的性能。
在本申请一种可能的实现形式中,可以通过开源网络模型构建包含多个全连接层的老师模型,进而在对待剪枝的神经网络进行剪枝处理时,仅根据每层所在的模型块与老师模型中相应的模型块的性能差异,确定可以剪除的特征变换方式,以进一步提升神经网络剪枝的准确性。
下面结合图3,对本申请实施例提供的神经网络自动剪枝方法进行进一步说明。
图3为本申请实施例所提供的再一种神经网络自动剪枝方法的流程示意图。
如图3所示,该神经网络自动剪枝方法,包括以下步骤:
步骤301,获取开源网络模型。
其中,开源网络模型,可以是任意开源的、精度较高的大规模网络模型。
在本申请实施例中,开源网络模型可以是用户或开发人员设定的。因此,可以获取用户通过客户端发送的开源网络模型设定指令,进而对开源网络模型设定指令进行解析处理,以确定开源网络模型设定指令中包含的开源网络模型。
步骤302,利用样本数据对开源网络模型进行训练,以获取收敛后的网络模型。
在本申请实施例中,获取的开源网络模型可以是通用模型,因此为使得开源网络模型可以符合当前的业务类型,还可以利用与当前的业务类型对应的样本数据对开源网络模型进行训练,以生成收敛后的网络模型。
步骤303,在收敛后的网络模型的各个模型块的输出端分别引出全连接层,以生成包含多个全连接层的网络模型。
在本申请实施例中,对开源网络模型进行训练并生成收敛后的网络模型后,可以在收敛后的网络模型的各个模型块的输出端分别引出全连接层,以生成包含多个全连接层的网络模型,从而可以通过各个全连接层的输出,学习网络模型的中间处理过程,以学习到网络模型的细节信息。
步骤304,利用样本数据,对包含多个全连接层的网络模型的各全连接层进行训练,以获取老师模型。
在本申请实施例中,可以将每个样本数据输入包含多个全连接层的网络模型,以使包含多个全连接层的网络模型分别对每个样本数据进行识别处理,并获取网络模型的各个全连接层分别输出的每个样本数据对应的软标签。之后,对于一个全连接层,可以根据该全连接层输出的每个样本数据对应的软标签与相应的样本数据的目标标签的差异,确定该全连接层对应的损失值,进而按照相同的方式,确定出每个全连接层分别对应的损失值,并对每个全连接层分别对应的损失值进行融合处理,以生成网络模型对应的损失值。之后根据网络模型对应的损失值对网络模型中各全连接层的参数进行更新,以生成更新后的包含多个全连接层的网络模型,进而利用更新后的包含多个全连接层的网络模型进行迭代训练,直至更新后的网络模型对应的损失值小于阈值,则可以完成对网络模型的训练,生成老师模型。
步骤305,获取待剪枝的神经网络、样本数据,其中,待剪枝的神经网络的各层间包含N种特征变换方式,其中,N为大于1的正整数。
步骤306,将神经网络的第一层与第二层间的N种特征变换方式依次进行剪枝处理,以获取N个候选剪枝网络。
上述步骤305-306的具体实现过程及原理,可以参照上述实施例的详细描述,此处不再赘述。
步骤307,确定与第一层及第二层关联的目标全连接层。
其中,第一层与第二层关联的目标全连接层,是指第一层与第二层所在的模型块的输出端连接的全连接层。
作为一种可能的实现方式,由于待剪枝的神经网络与老师模型都包括多个模型块,因此在对第一层与第二层间的特征变换方式进行剪枝处理时,可以仅根据第一层与第二层所在的模型块,与老师模型中相应模型块的性能差异,确定第一层与第二层中可以剪除的特征变换方式。因此,可以首先根据第一层与第二层所在的模型块,确定与第一层与第二层关联的目标全连接层,即将与第一层及第二层所属的模型块的输出端连接的全连接层,确定为目标全连接层。
需要说明的是,在对待剪枝的神经网络模型的其他层间的特征变换方式在进行剪枝处理时,也可以按照上述相同的方式确定出目标全连接层。
步骤308,将样本数据分别输入N个候选剪枝网络及老师模型,以获取N个候选剪枝网络的目标全连接层分别输出的N个第一软标签及老师模型中对应的全连接层输出的第二软标签,其中,老师模型中包括M个分别与不同模型块的输出端连接的全连接层,其中,M为大于1的正整数。
在本申请实施例中,可以将样本数据分别输入N个候选剪枝网络与老师模型之后,获取N个候选剪枝网络的目标全连接层输出的每个样本数据对应的第一软标签,以及老师模型中与目标全连接层对应的全连接层输出的每个样本数据对应的第二软标签。
举例来说,假设共有1000个样本数据,则可以将1000个样本数据依次输入第1个候选剪枝网络,以获取第1个候选剪枝网络的目标全连接层输出的1000个样本数据分别对应的第一软标签;将1000个样本数据依次输入第2个候选剪枝网络,以获取第2个候选剪枝网络的目标全连接层输出的1000个样本数据分别对应的第一软标签;依次类推,将1000个样本数据依次输入第N个候选剪枝网络,以获取第N个候选剪枝网络的目标全连接层输出的1000个样本数据分别对应的第一软标签;进而,将1000个样本数据依次输入老师模型,以获取老师模型的目标全连接层输出的1000个样本数据分别对应的第二软标签。
步骤309,根据N个第一软标签分别与第二软标签的差异,确定第一层与第二层间的N-1种特征变换方式。
作为一种可能的实现方式,可以预先设置损失函数,对于一个候选剪枝网络,可以根据该候选剪枝网络的目标全连接层输出的每个样本数据对应的第一软标签,与老师模型输出的相应样本数据对应的第二软标签的差异,确定出该候选剪枝网络的目标全连接层对应的损失函数取值。进而,按照上述相同的方式,可以确定出N个候选剪枝网络的目标全连接层分别对应的损失函数取值。
在本申请实施例中,由于候选剪枝网络的目标全连接层对应的损失函数取值越小,说明该候选剪枝网络的目标全连接层与老师模型中对应的全连接层的差异越小,即该候选剪枝网络的目标全连接层的性能越好。因此,可以根据N个候选剪枝网络中的目标全连接层的损失函数取值最小的候选剪枝网络,确定待剪枝的神经网络的第一层与第二层间的N-1种特征变换方式。
具体的,假设第i个候选剪枝网络的目标全连接层对应的损失函数取值最小,且第i个候选剪枝网络是将待剪枝的神经网络的第一层与第二层间的第i种特征变换方式进行剪枝处理生成的,从而可以确定将第一层与第二层间的第i种特征变换方式进行剪枝处理,不会对待剪枝的神经网络的目标全连接层的性能产生较大影响,从而可以将第一层与第二层间的第i种特征变换方式进行剪枝处理,并将第一层与第二层间剩余的特征变换方式,确定为第一层与第二层间的N-1种特征变换方式。
步骤310,执行将神经网络的第二层与第三层间的N种特征变换方式依次进行剪枝处理的操作,以确定第二层与第三层间的N-1种特征变换方式,直至剪枝后的神经网络的各层间仅包含一种特征变换方式。
上述步骤310的具体实现过程及原理,可以参照上述步骤与上述实施例的详细描述,此处不再赘述。
根据本申请实施例的技术方案,通过对开源网络模型进行训练,以构建包含多个全连接层的老师模型作为参考,并在对待剪枝的神经网络进行剪枝处理时,仅根据每层所在的模型块与老师模型中相应的模型块的性能差异,确定每层间可以剪除的特征变换方式。由此,通过利用精度较高的老师模型中的各模型块,分别对待剪枝的神经网络中相应的模型块中的特征变换方式的剪枝处理进行指导,依次剪除待剪枝的神经网络中各层间重要程度较低的特征变换方式,以在各层间均保留性能最佳的一种特征变化方式,形成神经网络的子网络,从而不仅降低了神经网络的规模,提升了生成的子网络的性能,而且进一步提升神经网络剪枝的准确性。
为了实现上述实施例,本申请还提出一种神经网络自动剪枝装置。
图4为本申请实施例提供的一种神经网络自动剪枝装置的结构示意图。
如图4所示,该神经网络自动剪枝装置40,包括:
第一获取模块41,用于获取待剪枝的神经网络、样本数据及对应的老师模型,其中,待剪枝的神经网络的各层间包含N种特征变换方式,其中,N为大于1的正整数;
第一剪枝处理模块42,用于将神经网络的第一层与第二层间的N种特征变换方式依次进行剪枝处理,以获取N个候选剪枝网络;
第二获取模块43,用于将样本数据分别输入N个候选剪枝网络及老师模型,以获取N个候选剪枝网络输出的N个第一软标签及老师模型输出的第二软标签;
确定模块44,用于根据N个第一软标签分别与第二软标签的差异,确定第一层与第二层间的N-1种特征变换方式;
第二剪枝处理模块45,用于执行将神经网络的第二层与第三层间的N种特征变换方式依次进行剪枝处理的操作,以确定第二层与第三层间的N-1种特征变换方式,直至剪枝后的神经网络的各层间仅包含一种特征变换方式。
在实际使用时,本申请实施例提供的神经网络自动剪枝装置,可以被配置在任意电子设备中,以执行前述神经网络自动剪枝方法。
根据本申请实施例的技术方案,通过引入精度高的老师模型作为参考,并对待剪枝的神经网络各层间的特征变化方式进行剪枝处理,之后利用待剪枝的神经网络对应的各候选剪枝网络与老师模型对样本数据进行处理,进而根据各候选剪枝网络输出的第一软标签与老师模型输出的第二软标签的差异,确定待剪枝的神经网络中各层间可以进行剪枝处理的特征变换方式,直至剪枝后的神经网络的各层间仅包含一种特征变换方式。由此,通过利用精度较高的老师模型作为参考,依次剪除待剪枝的神经网络中各层间重要程度较低的特征变换方式,以在各层间均保留性能最佳的一种特征变化方式,形成神经网络的子网络,从而不仅降低了神经网络的规模,而且提升了生成的子网络的性能。
在本申请一种可能的实现形式中,上述第一获取模块41,包括:
第一获取子模块,用于获取网络搜索空间;
初始化子模块,用于初始化网络搜索空间中各层间的各候选特征变换方式为全连接状态,以获取初始神经网络;以及
训练子模块,用于利用样本数据对初始神经网络进行训练,以获取待剪枝的神经网络。
进一步的,在本申请另一种可能的实现形式中,上述老师模型中包括M个分别与不同模型块的输出端连接的全连接层,其中,M为大于1的正整数;相应的,上述训练子模块,包括:
修正单元,用于根据老师模型中M个全连接层的位置,对初始神经网络进行修正,以获取修正后的神经网络,其中,修正后的神经网络中包括M个全连接层;
训练单元,用于利用样本数据对修正后的神经网络进行训练,以获取待剪枝的神经网络。
进一步的,在本申请再一种可能的实现形式中,上述训练单元,包括:
确定子单元,用于将样本数据输入修正后的神经网络,以根据M个全连接层输出的软标签与样本数据对应的目标标签的差异,确定损失值;以及
第一训练子单元,用于根据损失值对修正后的神经网络进行训练,直至损失值小于阈值,以获取待剪枝的神经网络。
进一步的,在本申请又一种可能的实现形式中,上述训练单元,包括:
第二训练子单元,用于利用样本数据对修正后的神经网络训练预设的次数,以获取待剪枝的神经网络。
进一步的,在本申请又一种可能的实现形式中,上述神经网络自动剪枝装置40,还包括:
第一训练模块,用于利用样本数据,对更新后的待剪枝的神经网络进行训练,以获取新的待剪枝的神经网络,其中,更新后的待剪枝的神经网络的第一层与第二层间包含N-1种特征变换方式。
进一步的,在本申请另一种可能的实现形式中,上述老师模型中包括M个分别与不同模型块的输出端连接的全连接层,其中,M为大于1的正整数;相应的,上述第二获取模块43,包括:
确定子模块,用于确定与第一层及第二层关联的目标全连接层;
第二获取子模块,用于将样本数据分别输入N个候选剪枝网络及老师模型,以获取N个候选剪枝网络的目标全连接层分别输出的N个第一软标签及老师模型中对应的全连接层输出的第二软标签。
进一步的,在本申请再一种可能的实现形式中,上述神经网络自动剪枝装置40,还包括:
第三获取模块,用于获取开源网络模型;
第二训练模块,用于利用样本数据对开源网络模型进行训练,以获取收敛后的网络模型;
生成模块,用于在收敛后的网络模型的各个模型块的输出端分别引出全连接层,以生成包含多个全连接层的网络模型;
第三训练模块,用于利用样本数据,对包含多个全连接层的网络模型的各全连接层进行训练,以获取老师模型。
需要说明的是,前述对图1、图2、图3所示的神经网络自动剪枝方法实施例的解释说明也适用于该实施例的神经网络自动剪枝装置40,此处不再赘述。
根据本申请实施例的技术方案,通过从网络搜索空间中获取到各层间的特征变换方式之后,将各层间的特征变换方式进行全连接处理,以生成初始神经网络,并对初始神经网络进行训练,生成待剪枝的神经网络,之后利用精度较高的老师模型作为参考,依次剪除待剪枝的神经网络中各层间重要程度较低的特征变换方式,以在各层间均保留性能最佳的一种特征变化方式,形成神经网络的子网络。由此,通过全连接的方式融合各种特征变换方式中的参数,提升待剪枝的神经网络的规模和精度,进而进一步提升了剪枝后生成的子网络的性能。
根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。
如图5所示,是根据本申请实施例的神经网络自动剪枝方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图5所示,该电子设备包括:一个或多个处理器501、存储器502,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个电子设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图5中以一个处理器501为例。
存储器502即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的神经网络自动剪枝方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的神经网络自动剪枝方法。
存储器502作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的神经网络自动剪枝方法对应的程序指令/模块(例如,附图4所示的第一获取模块41、第一剪枝处理模块42、第二获取模块43、确定模块44及第一剪枝处理模块45)。处理器501通过运行存储在存储器502中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的神经网络自动剪枝方法。
存储器502可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据神经网络自动剪枝方法的电子设备的使用所创建的数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器502可选包括相对于处理器501远程设置的存储器,这些远程存储器可以通过网络连接至神经网络自动剪枝方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
神经网络自动剪枝方法的电子设备还可以包括:输入装置503和输出装置504。处理器501、存储器502、输入装置503和输出装置504可以通过总线或者其他方式连接,图5中以通过总线连接为例。
输入装置503可接收输入的数字或字符信息,以及产生与神经网络自动剪枝方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置504可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS(VirtualPrivate Server,虚拟专用服务器)服务中,存在的管理难度大,业务扩展性弱的缺陷。
根据本申请实施例的技术方案,通过引入精度高的老师模型作为参考,并对待剪枝的神经网络各层间的特征变化方式进行剪枝处理,之后利用待剪枝的神经网络对应的各候选剪枝网络与老师模型对样本数据进行处理,进而根据各候选剪枝网络输出的第一软标签与老师模型输出的第二软标签的差异,确定待剪枝的神经网络中各层间可以进行剪枝处理的特征变换方式,直至剪枝后的神经网络的各层间仅包含一种特征变换方式。由此,通过利用精度较高的老师模型作为参考,依次剪除待剪枝的神经网络中各层间重要程度较低的特征变换方式,以在各层间均保留性能最佳的一种特征变化方式,形成神经网络的子网络,从而不仅降低了神经网络的规模,而且提升了生成的子网络的性能。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。