CN107886164A - 一种卷积神经网络训练、测试方法及训练、测试装置 - Google Patents

一种卷积神经网络训练、测试方法及训练、测试装置 Download PDF

Info

Publication number
CN107886164A
CN107886164A CN201711386149.8A CN201711386149A CN107886164A CN 107886164 A CN107886164 A CN 107886164A CN 201711386149 A CN201711386149 A CN 201711386149A CN 107886164 A CN107886164 A CN 107886164A
Authority
CN
China
Prior art keywords
convolution kernel
mask
neural network
convolution
network structure
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201711386149.8A
Other languages
English (en)
Inventor
贾书军
程帅
袁淮
刘威
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Neusoft Technology (shanghai) Co Ltd
Neusoft Corp
Original Assignee
Neusoft Technology (shanghai) Co Ltd
Neusoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Neusoft Technology (shanghai) Co Ltd, Neusoft Corp filed Critical Neusoft Technology (shanghai) Co Ltd
Priority to CN201711386149.8A priority Critical patent/CN107886164A/zh
Publication of CN107886164A publication Critical patent/CN107886164A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开一种卷积神经网络训练、测试方法及训练、测试装置。该训练方法在第一步初始化各个卷积核时,按照掩码数组和神经网络结构初始化各个卷积核,并且在第五步获得更新卷积核时,也是按照掩码数组和神经网络结构对初始化卷积核进行更新。由于初始化卷积核和更新卷积核均是利用掩码数组进行掩码之后获得的,即初始化卷积核和更新卷积核中的元素有一部分掩码为0。因此,最终获得的卷积神经网络模型中的卷积核数据的存储量得以减少。训练获得的卷积神经网络模型的存储量得以减少。而利用训练之后获得的卷积神经网络模型进行计算时,由于参与计算的卷积核数据的数据量得以减少,利用该卷积神经网络模型进行计算的计算量也得以减少。

Description

一种卷积神经网络训练、测试方法及训练、测试装置
技术领域
本发明涉及深度学习技术领域,尤其涉及一种卷积神经网络训练、测试方法及训练、测试装置。
背景技术
深度学习在图像检测以及语音识别等领域体现出巨大优势,其中使用的重要算法为使用卷积神经网络模型。
下面简单介绍现有技术中卷积神经网络模型的训练方法。
参见图1,该图为现有技术中卷积神经网络模型的训练流程图。
S101:按照正态分布随机初始化神经网络的各个卷积核初始值数据。
S102:按照神经网络结构前向计算。
S103:如果损失函数达到给定阈值,执行S 107,否则,执行S 104。
S104:按照神经网络结构反向传播计算。
S105:按照网络结构更新卷积核等权重。
S106:重复S102、S103、S 104、S105反复进行训练。
S107:保存神经网络的模型数据,模型数据即为神经网络结构以及各个卷积核相关值。
但是,卷积神经网络巨大的存储量和计算量妨碍其在实际应用领域的推广,例如对于嵌入式设备,其CPU性能较低,卷积神经网络目前的计算方式不利于在嵌入式设备上推广应用。
发明内容
为了解决现有技术中存在的以上问题,本发明提供一种卷积神经网络训练、测试方法及训练、测试装置,能够有效减少卷积神经网络的存储量和计算量,利于其在嵌入式设备上的推广应用。
本发明提供一种卷积神经网络训练方法,包括以下步骤:
第一步:按照掩码数组和神经网络结构初始化各个卷积核,获得各个初始化卷积核;
第二步:按照所述神经网络结构前向计算;
第三步:根据前向运算结果判断损失函数达到给定阈值时,则执行第七步;反之执行第四步;
第四步:按照所述神经网络结构反向传播计算;
第五步:按照所述掩码数组和神经网络结构更新所述各个初始化卷积核,获得各个更新卷积核;所述更新卷积核为掩码后的更新卷积核;
第六步:反复执行所述第二步、第三步、第四步和第五步进行训练;
第七步:保存所述神经网络结构及训练得到的神经网络模型;所述神经网络模型包括训练得到的卷积核数据和对应的掩码数据,所述卷积核数据是按照所述掩码数据掩码后生成的。
可选的,所述按照掩码数组和神经网络结构初始化各个卷积核,获得各个初始化卷积核,具体包括:
按照所述神经网络结构随机获得各个卷积核初始值;
随机生成与所述各个卷积核分别对应的掩码数组;
将所述各个卷积核初始值与对应的掩码数组点乘获得掩码后的卷积核将所述掩码后的卷积核作为所述初始化卷积核。
可选的,所述随机生成与所述各个卷积核分别对应的掩码数组,具体包括:
根据所述神经网络结构中输入MAP的数目确定所述掩码数组的个数,所述掩码数组的个数等于所述输入MAP的数目,每个卷积核对应一个掩码数组,且每个卷积核与对应的掩码数组的维数相同;
根据正态分布随机生成所述掩码数组中的各个值,其中所述掩码数组中元素为1的个数占比小于或等于60%,其余元素为0。
可选的,所述神经网络结构包括卷积的层数以及每层卷积对应卷积核的维数。
本发明还提供一种卷积神经网络测试方法,包括:
基于以上卷积神经网络训练方法训练获得的神经网络模型和所述掩码数组对输入MAP数据进行重新排列;
将重新排列后的输入MAP数据与对应的卷积核进行卷积运算,获得卷积结果。
本发明提供还一种卷积神经网络训练装置,包括:
初始化卷积核获得单元,用于按照掩码数组和神经网络结构初始化各个卷积核,获得各个初始化卷积核;
前向计算单元,用于按照所述神经网络结构前向计算;
判断单元,用于根据前向计算结果判断损失函数达到给定阈值时,则保存单元进行保存;
反向传播计算单元,用于按照所述神经网络结构反向传播计算;
更新单元,用于按照所述掩码数组和神经网络结构更新所述各个初始化卷积核,获得各个更新卷积核;所述更新卷积核为掩码后的更新卷积核;
循环单元,用于使所述前向计算单元、判断单元、反向传播计算单元和更新单元循环进行;
保存单元,用于保存所述神经网络结构及训练得到的神经网络模型;所述神经网络模型包括训练得到的卷积核数据和对应的掩码数据,所述卷积核数据是按照所述掩码数据掩码后生成的。
可选的,所述初始化卷积核获得单元包括:
初始化子单元,按照所述神经网络结构随机获得各个卷积核初始值;
掩码数组生成子单元,用于随机生成与所述各个卷积核分别对应的掩码数组;
掩码子单元,用于将所述各个卷积核初始值与对应的掩码数组点乘获得掩码后的卷积核将所述掩码后的卷积核作为所述初始化卷积核。
可选的,掩码数组生成子单元,具体用于根据所述神经网络结构中输入MAP的数目确定所述掩码数组的个数,所述掩码数组的个数等于所述输入MAP的数目,每个卷积核对应一个掩码数组,且每个卷积核与对应的掩码数组的维数相同;根据正态分布随机生成所述掩码数组中的各个值,其中所述掩码数组中元素为1的个数占比小于或等于60%,其余元素为0。
本发明还提供一种卷积神经网络测试装置,包括:
排列单元,用于按照以上卷积神经网络测试方法中的神经网络模型和所述掩码数组对输入MAP数据进行重新排列;
运算单元,用于将重新排列后的输入MAP数据与对应的卷积核进行卷积运算,获得卷积结果。
本发明还提供一种计算机可读存储介质其上存储有运算机程序,该程序被处理器执行时实现以下步骤:
第一步:按照掩码数组和神经网络结构初始化各个卷积核,获得各个初始化卷积核;
第二步:按照所述神经网络结构前向计算;
第三步:根据前向计算结果判断损失函数达到给定阈值时,则执行第七步;反之执行第四步;
第四步:按照所述神经网络结构反向传播计算;
第五步:按照所述掩码数组和神经网络结构更新所述各个初始化卷积核,获得各个更新卷积核;所述更新卷积核为掩码后的更新卷积核;
第六步:反复执行所述第二步、第三步、第四步和第五步进行训练;
第七步:保存所述神经网络结构及训练得到的神经网络模型;所述神经网络模型包括训练得到的卷积核数据和对应的掩码数据,所述卷积核数据是按照所述掩码数据掩码后生成的。
与现有技术相比,本发明至少具有以下优点:
本发明实施例提供的卷积神经网络训练、测试方法及训练、测试装置,在第一步初始化各个卷积核时,按照掩码数组和神经网络结构初始化各个卷积核,并且在第五步获得更新卷积核时,也是按照掩码数组和神经网络结构对初始化卷积核进行更新。由于初始化卷积核和更新卷积核均是利用掩码数组进行掩码之后获得的,即初始化卷积核和更新卷积核中的元素有一部分掩码为0。因此,最终获得的卷积神经网络模型中的卷积核数据的存储量得以减少。故而,训练获得的卷积神经网络模型的存储量得以减少。而利用训练之后获得的卷积神经网络模型进行计算时,由于参与计算的卷积核数据的数据量得以减少,对应的,利用该卷积神经网络模型进行计算的计算量也得以减少。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为现有技术中卷积神经网络模型的训练流程图;
图2为本发明提供的卷积神经网络训练方法的流程图;
图3为本发明提供的对各个卷积核进行初始化的方法流程图;
图4为本发明提供的输入3个MAP,输出4个MAP的掩码数组示意图;
图5为本发明提供的将卷积核初始值与对应的掩码数组相乘获得掩码后的卷积核的计算方法示意图;
图6为本发明提供的获得更新卷积核的示意图;
图7为本发明提供的保存的掩码数据的示意图;
图8为本发明提供的卷积神经网络测试方法的流程图;
图9为本发明提供的对输入MAP数据进行重新排列的示意图;
图10为本发明提供的卷积神经网络训练装置的示意图;
图11为本发明提供的卷积神经网络测试装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一方面,发明人在研究中发现,随着科学技术的发展,嵌入式设备在实际中的应用越来越普遍,嵌入式设备可以包括移动终端、小型机器人以及车载终端等。例如移动终端可以实现的功能也更加多样化。许多智能手机包含语音识别以及图像识别功能。又如,一些自动驾驶车辆装载的车载终端能够通过图像识别技术自动识别拍摄的图片,从而确定道路状况以及交通信号灯,以便于辅助驾驶员安全驾驶。
语音识别技术和图像识别技术都可以利用卷积神经网络来实现。而许多嵌入式设备,例如智能手机,其存储空间有限、CPU的计算性能也有限。故而,未改进的卷积神经网络模型并不能广泛应用于移动终端等嵌入式设备上。
因此,为了使得卷积神经网络模型能够广泛应用在移动终端等嵌入式设备上,有效降低卷积神经网络模型的存储量和计算量,是目前迫切需要解决的问题。
另一方面,发明人在研究中发现,卷积神经网络模型中包含许多卷积核,在训练获得卷积神经网络模型时,将卷积核中的一部分数据丢弃,并不会影响训练后的卷积神经网络的计算精度,但是,由于丢弃了卷积核中的一部分数据,使得训练后的卷积神经网络模型的存储量得以减少,并且,利用该卷积神经网络模型进行计算的计算量也得以减少。
因此,本发明实施例提供的卷积神经网络训练、测试方法及训练、测试装置,在第一步初始化各个卷积核时,按照掩码数组和神经网络结构初始化各个卷积核,并且在第五步获得更新卷积核时,也是按照掩码数组和神经网络结构对初始化卷积核进行更新。由于初始化卷积核和更新卷积核均是利用掩码数组进行掩码之后获得的,即初始化卷积核和更新卷积核中的元素有一部分掩码为0。因此,最终获得的卷积神经网络模型中的卷积核数据的存储量得以减少。故而,训练获得的卷积神经网络模型的存储量得以减少。而利用训练之后获得的卷积神经网络模型进行计算时,由于参与计算的卷积核数据的数据量得以减少,对应的,利用该卷积神经网络模型进行计算的计算量也得以减少。
训练方法实施例
参见图2,该图为本实施例提供的卷积神经网络训练方法的流程图。
本实施例提供的卷积神经网络训练方法,包括如下步骤:
S201:按照掩码数组和神经网络结构初始化各个卷积核,获得各个初始化卷积核。
需要说明的是,本申请各个实施例提及的神经网络即为卷积神经网络。
本实施例中的掩码数组是指仅包含二进制数据1和0的数组。例如,mask={k0,k1,k2,k3,k4,k5,k6,k7,k8},mask为一个掩码数组,其中k0,k1,k2,k3,k4,k5,k6,k7,k8为该掩码数组中包含的各个元素,各个元素的取值可以为0,也可以为1。
需要说明的是,本实施例中提及的神经网络结构包括卷积的层数以及每层卷积对应的卷积核的维数。卷积核实质上是矩阵,卷积核矩阵的维数即为卷积核的维数。例如,卷积核矩阵为3*3的矩阵,则该卷积核的维数也为3*3。另外卷积核的维数还可以为5*5或者7*7,本申请实施例中不做具体限定。
从整体上来看,神经网络结构包括,输入层,输出层和隐层。其中,神经网络的输入层用于将待处理的数据以MAP的形式输入;神经网络的输出层用于输出对输入数据的处理结果;神经网络的隐层可以包括一个或多个卷积层,每个卷积层包括一个或多个节点,并且每个卷积层都包括对应的卷积核,该卷积核用于对输入层输入的数据进行相应的计算,获得各个节点的计算结果。
需要说明的是,神经网络中每一卷积层的卷积核的数目,与该卷积层的输入MAP的数目和输出MAP的数目有关,具体地,对于某一卷积层,卷积核的数目为输入MAP和输出MAP的乘积。例如,对于某一卷积层,输入MAP的数目为3,输出MAP的数目为4,则该卷积层卷积核的数目为3*4=12。
本实施例不具体限定该神经网络结构的输入层、输出层以及隐层的具体形式,该神经网络的具体结构可以根据实际应用具体设置。
在对神经网络进行训练时,首先要对卷积核进行初始化,本实施例中根据掩码数组对卷积神经网络中的各个卷积核进行初始化。
以下将结合图3对各个卷积核进行初始化的具体实现方法进行介绍。
参见图3,该图为本实施例提供的对各个卷积核进行初始化的方法流程图。
S301:按照所述神经网络结构随机获得各个卷积核初始值。
本实施例中提及的随机获得各个卷积核的初始值是指,对于该神经网络结构中的各个卷积核,每个卷积核矩阵中的每个元素的取值都是随机的。
S302:随机生成与所述各个卷积核分别对应的掩码数组。
需要说明的是,在本实施例中,每一个卷积核对应一个掩码数组,多个卷积核对应的掩码数组可以相同。
S302在具体实现时,可以根据所述神经网络结构中输入MAP的数目确定掩码数组的个数,所述掩码数组的个数等于所述输入MAP的数目,并且,每个卷积核的维数与对应的掩码数组的维数相同。
例如,参见图4,该图为输入3个MAP,输出4个MAP的掩码数组示意图。
其中,神经网络中包括:3个输入MAP,分别为InputMap0、InputMap1和InputMap2。4个输出MAP,分别为OutputMap0、OutputMap1、OutputMap2和OutputMap3。12个卷积核,分别为Kernel0至Kernel11,并且卷积核的维数为3*3。
由于掩码数组的个数与输入MAP的数目相同,因此该神经网络包括3个掩码数组,分别为DropKernelMask0、DropKernelMask1和DropKernelMask2。并且,3个掩码数组的维数均为3*3,其中Kernel0、Kernel1、Kernel2、Kernel3与DropKernelMask0对应,Kernel4、Kernel5、Kernel6、Kernel7与DropKernelMask1对应,Kernel8、Kernel9、Kernel10、Kernel11与DropKernelMask2对应。
随机生成与各个卷积核分别对应的掩码数组时,可以根据正态分布随机生成所述掩码数组中的各个值,其中所述掩码数组中元素为1的个数占比小于或等于60%,其余元素为0。
本实施例中不限定掩码数组中元素为1的个数的占比,当元素为1的占比越小时,则对应的计算量和存储量越小。但是为了保证计算的准确性元素为1的个数的占比也不能太小,例如大于45%小于或等于60%。
结合图4,掩码数组的维数为3*3,则该掩码数组中包含的元素的个数为9,在随机生成该掩码数组时,该掩码数组中元素为1的个数小于或等于5,其余元素为0。图4中掩码数组DropKernelMask1、DropKernelMask2、DropKernelMask3中元素为1的个数为4,并且,各个掩码数组中元素1的位置时随机的。
S303:将所述各个卷积核初始值与对应的掩码数组点乘获得掩码后的卷积核,将所述掩码后的卷积核作为所述初始化卷积核。
参见图5,该图为将卷积核初始值与对应的掩码数组点乘获得掩码后的卷积核的计算方法示意图。
图5中A为进行掩码运算之前的卷积核初始值,B为掩码数组,C为经过掩码运算之后的初始化卷积核。
从图中可以看出,掩码后的卷积核中,与该卷积核对应的掩码数组中,元素取值为1的位置对应的卷积核数据得以保留。与该卷积核对应的掩码数组中,元素取值为0的位置对应的卷积核数据均为0。
S202:按照所述神经网络结构前向计算。
按照所述神经网络结构进行前向计算是指,对于输入层输入的数据,利用当前神经网络结构,计算该神经网络中隐层各个节点的计算结果。
S203:根据前向计算结果判断损失函数达到给定阈值时,执行步骤S207,反之,执行步骤S204。
在本实施例中,若前向计算结果对应的损失函数达到给定阈值,则可以认为当前训练获得的神经网络模型可以根据输入层输入的数据,计算得到比较准确的输出结果。此时,可以结束对该神经网络的训练。反之,则说明当前训练获得的神经网络模型还不能根据输入层输入的数据,计算得到比较准确的输出结果。
本实施例中不具体限定损失函数和给定阈值的具体形式,损失函数和给定阈值均是预先设置好的,具体设置方式可以根据实际应用确定。
S204:按照所述神经网络结构反向传播计算。
反向传播计算为前向计算的逆计算。
可以理解的是,在神经网络训练时,对输入数据进行前向计算的结果会存在一定的误差,反向传播计算则是对前向计算的误差值进行反向传播,直至传播到输入层。
S205:按照所述掩码数组和神经网络结构更新所述各个初始化卷积核,获得各个更新卷积核,所述更新卷积核为掩码后的更新卷积核。
需要说明的是,在S204反向传播计算过程中,会对初始化卷积核进行更新,反向传播计算之后得到的卷积核矩阵中可能每个元素都是有效数据,在本实施例中,在获得更新卷积核时,与S201中初始化各个卷积核类似,均是根据掩码数组对反向传播计算之后得到卷积核进行更新。也就是说,更新卷积核是按照掩码数组进行掩码运算之后的更新卷积核。可以理解的是,与S201中获得的初始化卷积核类似,更新卷积核中也只保留了一部分有效数据。
参见图6,该图为获得更新卷积核的示意图。
图中,DropKernelMask0、DropKernelMask1、DropKernelMask2为掩码数组,UpdateKernel0-UpdateKernel11为反向传播计算之后得到的卷积核,利用各个反向传播计算之后获得卷积核与对应的掩码数组相乘,即可获得对应的更新卷积核Kernel0-Kernel11。
S206:反复执行S202、S203、S204和S205进行训练。
S207:保存所述神经网络结构及训练得到的神经网络模型;所述神经网络模型包括训练得到的卷积核数据和对应的掩码数据,所述卷积核数据时按照所述掩码数据掩码后生成的。
在卷积神经网络训练完成之后,为了便于利用该神经网络进行相应的计算,需要对训练得到的神经网络模型进行保存。
需要说明的是,由于利用该神经网络模型进行计算时,不仅需要使用卷积核数据,还需要使用该卷积核数据的位置信息,即该卷积核数据中各个元素在该卷积核矩阵中的位置,而卷积核对应的掩码数据可以表示卷积核数据的位置信息。因此,在保存神经网络模型时,还需要保存对应的掩码数据,以便于获得卷积核数据的位置信息,从而利用该卷积神经网络模型进行计算。
参见图7,该图为本实施例提供的保存的掩码数据的示意图,其中D为卷积核编码矩阵,E为该卷积核对应的掩码数组,F为该掩码数组对应的掩码数据。
需要说明的是,由于掩码数据可以用于标识卷积核数据中有效数据的位置,因此,本实施例在保存掩码数据时,首先对卷积核进行编码,编码规则可以是如图7所示的编码规则,即,对卷积核矩阵中各个元素按照从左到右、从上到下的顺序进行编号。然后,获得掩码数组中元素为1的位置对应的卷积核矩阵中元素的编号。最后,将获得的编号从小到大排列作为保存的掩码数据。
例如,对于图7所示的3*3的掩码数组,首先,对该掩码数组对应的卷积核矩阵中各个元素从0到8进行编号,然后,获得掩码数组中第一行第二列对应的卷积核矩阵中元素的编号“1”、获得掩码数组中第二行第三列对应的卷积核矩阵中元素的编号“5”、获得掩码数组中第三行第一列对应的卷积核矩阵中元素的编号“6”、获得掩码数组中第三行第二列对应的卷积核矩阵中元素的编号“7”,最后,将“1”、“5”、“6”、“7”从小到大进行排列即可得到掩码数据为{1,5,6,7}。
可以理解的是,由于S205获得的更新卷积核是按照掩码数组进行掩码计算之后的更新卷积核,故而,保存的卷积核数据也是按照掩码数据进行掩码计算之后生成的卷积核数据。也就是说,进行掩码计算之后的卷积核数据中有一部分数据在保存卷积核数据时可以不进行保存,从而使得该神经网络模型的存储量得以减少。
参见表1和表2,表1示出了传统卷积核的保存格式,表2示出了本申请提供的方案对应的卷积核的保存格式。
从表中可以看出,本实施例提供的方案,只保存每个卷积核的有效数据,即DropKernelMaskLen个数据;而传统的卷积核保存格式中,卷积核数据中的每个数据都需要保存,即每个卷积核需要保存X_KernelSize*Y_KernelSize个数据;而DropKernelMaskLen的数值几乎为X_KernelSize*Y_KernelSize的一半,因此,本实施例提供的方案,使得卷积核数据的存储量得以减少。
另外,虽然本实施例提供的方案,还需要存储掩码数据,但是由于增加的掩码数据的数据量比减少的卷积核的数据量少,故而,本实施例提供的方案,整体上使得神经网络模型的存储量得以减少。
表1
表2
以图5所示的神经网络结构为例,该神经网络包括12个卷积核,每个卷积核为3*3的矩阵,因此,利用传统的卷积核保存方法,保存的卷积核数据的个数为12*9=108;利用本实施例提供的方案,保存的卷积核数据的个数为4*12=48,保存的掩码数据的个数为4*3=12,即保存的卷积核数据和掩码数据的总数据的个数为48+12=60。相比于传统的卷积核保存方法,本申请提供的方案使得卷积核的保存的数据的个数减少了108-60=40个。
可以理解的是,输入MAP和输出MAP的数目越多,利用本实施例提供的方案,可以使得卷积核数据的存储量减少的越多。
本实施例提供的卷积神经网络训练方法,最终获得的神经网络模型中的卷积核数据的存储量得以减少。故而,训练获得的神经网络模型的存储量得以减少。而利用训练之后获得的神经网络模型进行计算时,由于参与计算的卷积核数据的数据量得以减少,对应的,利用该卷积神经网络模型进行计算的计算量也得以减少。
由于利用本实施例提供的卷积神经网络训练方法获得的神经网络模型,该神经网络模型的存储量、利用该神经网络模型的计算量均得以减少,故而,该神经网络模型可以应用于存储空间有限、CPU计算性能有限的嵌入式设备上。
测试方法实施例
基于以上实施例提供的卷积神经网络的训练方法,本申请还提供一种卷积神经网络测试方法。以下结合附图对该测试方法进行介绍。
参见图8,该图为本实施提供的卷积神经网络测试方法的流程图。
本实施例提供的神经网络测试方法,包括如下步骤:
S801:按照所述神经网络模型和所述掩码数组对输入MAP数据进行重新排列。
S802:将重新排列后的输入MAP数据与对应的卷积核进行卷积运算,获得卷积结果。
关于S801和S802,需要说明的是,本实施提及的神经网络模型是指利用上述训练方法实施例训练获得的神经网络模型。
本实施例中的输入MAP数据,对于神经网络模型第一层卷积层来说,输入MAP数据是指采集的原始数据,例如图像识别时是指图像数据,语音识别时,是指语音数据。对于神经网络模型的非第一层卷积层来说,输入MAP数据是指上一层卷积层输出的MAP数据,即上一层的输出MAP数据作为下一层的输入MAP数据。
可以理解的是,由于该神经网络模型的卷积核数据中只包括部分有效数据,而对输入MAP数据与对应的卷积核进行卷积运算,实际上是要对输入MAP数据和卷积核进行矩阵的乘法运算。因此,在对输入MAP数据进行运算时,输入MAP中的一部分数据实际上无需参与到运算中,因此,对该神经网络模型进行测试时,可以基于该神经网络模型中保存的掩码数组,对输入MAP数据进行重新排列,从输入MAP数据中选择出实际参与运算的MAP数据。
以下结合图9介绍对输入MAP数据进行重新排列的具体方法。图9为本实施例提供的对输入MAP数据进行重新排列的示意图。
图9对应的输入MAP(即InputMap)数据为4*4的矩阵,掩码数组DropKernelMask为3*3的矩阵,由于输入MAP数据的维数与掩码数组DropKernelMask的维数不同,因此,可以先提取出输入MAP中包含的与掩码数组维数相同的输入MAP数据,提取出的输入MAP数据为InputMap0、InputMap1、InputMap2和InputMap3。然后将InputMap0、InputMap1、InputMap2和InputMap3与分别掩码数组进行点乘计算,得到计算之后的输入MAP数据[2,7,9,10,3,8,10,11,6,11,13,14,7,12,14,15],该经过掩码计算之后的输入MAP数据即为重新排列后的输入MAP数据。
与输入MAP数据相比,重新排列之后的输入MAP数据的数据量得以减少,故而将重新排列后的输入MAP数据与对应的卷积核进行卷积运算的计算量也得以减少。
本实施例提供的卷积神经网络测试方法,在对训练获得的神经网络模型进行测试时,首先根据掩码数组对输入MAP进行重新排列,由于重新排列后的输入MAP数据包含的数据量得以减少,故而对该重新排列之后的MAP进行计算的计算量也得以减少,即利用该卷积神经网络模型进行计算的计算量也得以减少。
利用本实施例提供的卷积神经网络测试方法,利用该神经网络模型的计算量得以减少,故而,该神经网络模型可以应用于存储空间有限、CPU计算性能有限的嵌入式设备上。
基于以上训练方法实施例提供的卷积神经网络训练方法,本申请还提供一种卷积神经网络训练装置,以下将结合附图对该卷积神经网络训练装置进行介绍。
训练装置实施例
参见图10,该图为本实施例提供的卷积神经网络训练装置的示意图。
本实施例提供的卷积神经网络训练装置,包括:初始化卷积核获得单元1010、前向计算单元1020、判断单元1030、反向传播计算单元1040、更新单元1050、循环单元1060以及保存单元1070。
初始化卷积核获得单元1010,用于按照掩码数组和神经网络结构初始化各个卷积核,获得各个初始化卷积核;
前向计算单元1020,用于按照所述神经网络结构前向计算;
判断单元1030,用于根据前向计算结果判断损失函数达到给定阈值时,则保存单元进行保存;
反向传播计算单元1040,用于按照所述神经网络结构反向传播计算;
更新单元1050,用于按照所述掩码数组和神经网络结构更新所述各个初始化卷积核,获得各个更新卷积核;所述更新卷积核为掩码后的更新卷积核;
循环单元1060,用于使所述前向计算单元、判断单元、反向传播计算单元和更新单元循环进行;
保存单元1070,用于保存所述神经网络结构及训练得到的神经网络模型;所述神经网络模型包括训练得到的卷积核数据和对应的掩码数据,所述卷积核数据是按照所述掩码数据掩码后生成的。
可选的,所述初始化卷积核获得单元1010包括:初始化子单元1011、掩码数组生成子单元1012和掩码子单元1013。
初始化子单元1011,按照所述神经网络结构随机获得各个卷积核初始值;
掩码数组生成子单元1012,用于随机生成与所述各个卷积核分别对应的掩码数组;
掩码子单元1013,用于将所述各个卷积核初始值与对应的掩码数组点乘获得掩码后的卷积核将所述掩码后的卷积核作为所述初始化卷积核。
可选的,掩码数组生成子单元1012,具体用于根据所述神经网络结构中输入MAP的数目确定所述掩码数组的个数,所述掩码数组的个数等于所述输入MAP的数目,每个卷积核对应一个掩码数组,且每个卷积核与对应的掩码数组的维数相同;根据正态分布随机生成所述掩码数组中的各个值,其中所述掩码数组中元素为1的个数占比小于或等于60%,其余元素为0。
本实施例提供的卷积神经网络训练装置,最终获得的卷积神经网络模型中的卷积核数据的存储量得以减少。故而,训练获得的卷积神经网络模型的存储量得以减少。而利用训练之后获得的卷积神经网络模型进行计算时,由于参与计算的卷积核数据的数据量得以减少,对应的,利用该卷积神经网络模型进行计算的计算量也得以减少。
由于利用本实施例提供的卷积神经网络训练方法获得的卷积神经网络模型,该卷积神经网络模型的存储量、利用该卷积神经网络模型的计算量均得以减少,故而,该神经网络模型可以应用于存储空间有限、CPU计算性能有限的嵌入式设备上。
基于以上测试方法实施例提供的卷积神经网络测试方法,本申请还提供一种卷积神经网络测试装置,以下将结合附图对该卷积神经网络测试装置进行介绍。
测试装置实施例
参见图11,该图为本实施例提供的卷积神经网络测试装置的示意图。
本实施例提供的卷积神经网络测试装置,包括:排列单元1110、运算单元1120。
排列单元1110,用于按照以上训练装置实施例所述神经网络模型和所述掩码数组对输入MAP数据进行重新排列;
运算单元1120,用于将重新排列后的输入MAP数据与对应的卷积核进行卷积运算,获得卷积结果。
本实施例提供的卷积神经网络测试装置,在对训练获得的卷积神经网络进行测试时,首先根据掩码数组对输入MAP进行重新排列,由于重新排列后的输入MAP数据包含的数据量得以减少,故而对该重新排列之后的MAP进行计算的计算量也得以减少,即利用该卷积神经网络模型进行计算的计算量也得以减少。
利用本实施例提供的卷积神经网络测试装置,利用该卷积神经网络模型的计算量得以减少,故而,该神经网络模型可以应用于存储空间有限、CPU计算性能有限的嵌入式设备上。嵌入式设备可以为移动终端或小型机器人或车载终端。例如移动终端可以为智能手机等。
基于以上训练方法实施例提供的卷积神经网络训练方法,本申请还提供一种可存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:
第一步:按照掩码数组和神经网络结构初始化各个卷积核,获得各个初始化卷积核;
第二步:按照所述神经网络结构前向计算;
第三步:根据前向计算结果判断损失函数达到给定阈值时,则执行第七步;反之执行第四步;
第四步:按照所述神经网络结构反向传播计算;
第五步:按照所述掩码数组和神经网络结构更新所述各个初始化卷积核,获得各个更新卷积核;所述更新卷积核为掩码后的更新卷积核;
第六步:反复执行所述第二步、第三步、第四步和第五步进行训练;
第七步:保存所述神经网络结构及训练得到的神经网络模型;所述神经网络模型包括训练得到的卷积核数据和对应的掩码数据,所述卷积核数据是按照所述掩码数据掩码后生成的。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。

Claims (10)

1.一种卷积神经网络训练方法,其特征在于,包括以下步骤:
第一步:按照掩码数组和神经网络结构初始化各个卷积核,获得各个初始化卷积核;
第二步:按照所述神经网络结构前向计算;
第三步:根据前向运算结果判断损失函数达到给定阈值时,则执行第七步;反之执行第四步;
第四步:按照所述神经网络结构反向传播计算;
第五步:按照所述掩码数组和神经网络结构更新所述各个初始化卷积核,获得各个更新卷积核;所述更新卷积核为掩码后的更新卷积核;
第六步:反复执行所述第二步、第三步、第四步和第五步进行训练;
第七步:保存所述神经网络结构及训练得到的神经网络模型;所述神经网络模型包括训练得到的卷积核数据和对应的掩码数据,所述卷积核数据是按照所述掩码数据掩码后生成的。
2.根据权利要求1所述的卷积神经网络训练方法,其特征在于,所述按照掩码数组和神经网络结构初始化各个卷积核,获得各个初始化卷积核,具体包括:
按照所述神经网络结构随机获得各个卷积核初始值;
随机生成与所述各个卷积核分别对应的掩码数组;
将所述各个卷积核初始值与对应的掩码数组点乘获得掩码后的卷积核将所述掩码后的卷积核作为所述初始化卷积核。
3.根据权利要求2所述的卷积神经网络训练方法,其特征在于,所述随机生成与所述各个卷积核分别对应的掩码数组,具体包括:
根据所述神经网络结构中输入MAP的数目确定所述掩码数组的个数,所述掩码数组的个数等于所述输入MAP的数目,每个卷积核对应一个掩码数组,且每个卷积核与对应的掩码数组的维数相同;
根据正态分布随机生成所述掩码数组中的各个值,其中所述掩码数组中元素为1的个数占比小于或等于60%,其余元素为0。
4.根据权利要求1-3任一项所述的卷积神经网络测试方法,其特征在于,所述神经网络结构包括卷积的层数以及每层卷积对应卷积核的维数。
5.一种卷积神经网络测试方法,其特征在于,包括:
按照权利要求1-4任一项所述神经网络模型和所述掩码数组对输入MAP数据进行重新排列;
将重新排列后的输入MAP数据与对应的卷积核进行卷积运算,获得卷积结果。
6.一种卷积神经网络训练装置,其特征在于,包括:
初始化卷积核获得单元,用于按照掩码数组和神经网络结构初始化各个卷积核,获得各个初始化卷积核;
前向计算单元,用于按照所述神经网络结构前向计算;
判断单元,用于根据前向计算结果判断损失函数达到给定阈值时,则保存单元进行保存;
反向传播计算单元,用于按照所述神经网络结构反向传播计算;
更新单元,用于按照所述掩码数组和神经网络结构更新所述各个初始化卷积核,获得各个更新卷积核;所述更新卷积核为掩码后的更新卷积核;
循环单元,用于使所述前向计算单元、判断单元、反向传播计算单元和更新单元循环进行;
保存单元,用于保存所述神经网络结构及训练得到的神经网络模型;所述神经网络模型包括训练得到的卷积核数据和对应的掩码数据,所述卷积核数据是按照所述掩码数据掩码后生成的。
7.根据权利要求6所述的卷积神经网络训练装置,其特征在于,所述初始化卷积核获得单元包括:
初始化子单元,按照所述神经网络结构随机获得各个卷积核初始值;
掩码数组生成子单元,用于随机生成与所述各个卷积核分别对应的掩码数组;
掩码子单元,用于将所述各个卷积核初始值与对应的掩码数组点乘获得掩码后的卷积核将所述掩码后的卷积核作为所述初始化卷积核。
8.根据权利要求7所述的卷积神经网络训练装置,其特征在于,掩码数组生成子单元,具体用于根据所述神经网络结构中输入MAP的数目确定所述掩码数组的个数,所述掩码数组的个数等于所述输入MAP的数目,每个卷积核对应一个掩码数组,且每个卷积核与对应的掩码数组的维数相同;根据正态分布随机生成所述掩码数组中的各个值,其中所述掩码数组中元素为1的个数占比小于或等于60%,其余元素为0。
9.一种卷积神经网络测试装置,其特征在于,包括:
排列单元,用于按照权利要求6-8任一项所述神经网络模型和所述掩码数组对输入MAP数据进行重新排列;
运算单元,用于将重新排列后的输入MAP数据与对应的卷积核进行卷积运算,获得卷积结果。
10.一种计算机可读存储介质,其特征在于,其上存储有运算机程序,该程序被处理器执行时实现以下步骤:
第一步:按照掩码数组和神经网络结构初始化各个卷积核,获得各个初始化卷积核;
第二步:按照所述神经网络结构前向计算;
第三步:根据前向计算结果判断损失函数达到给定阈值时,则执行第七步;反之执行第四步;
第四步:按照所述神经网络结构反向传播计算;
第五步:按照所述掩码数组和神经网络结构更新所述各个初始化卷积核,获得各个更新卷积核;所述更新卷积核为掩码后的更新卷积核;
第六步:反复执行所述第二步、第三步、第四步和第五步进行训练;
第七步:保存所述神经网络结构及训练得到的神经网络模型;所述神经网络模型包括训练得到的卷积核数据和对应的掩码数据,所述卷积核数据是按照所述掩码数据掩码后生成的。
CN201711386149.8A 2017-12-20 2017-12-20 一种卷积神经网络训练、测试方法及训练、测试装置 Pending CN107886164A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711386149.8A CN107886164A (zh) 2017-12-20 2017-12-20 一种卷积神经网络训练、测试方法及训练、测试装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711386149.8A CN107886164A (zh) 2017-12-20 2017-12-20 一种卷积神经网络训练、测试方法及训练、测试装置

Publications (1)

Publication Number Publication Date
CN107886164A true CN107886164A (zh) 2018-04-06

Family

ID=61772121

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711386149.8A Pending CN107886164A (zh) 2017-12-20 2017-12-20 一种卷积神经网络训练、测试方法及训练、测试装置

Country Status (1)

Country Link
CN (1) CN107886164A (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110188795A (zh) * 2019-04-24 2019-08-30 华为技术有限公司 图像分类方法、数据处理方法和装置
CN110399972A (zh) * 2019-07-22 2019-11-01 上海商汤智能科技有限公司 数据处理方法、装置及电子设备
CN110826704A (zh) * 2020-01-13 2020-02-21 中科寒武纪科技股份有限公司 一种用于防止神经网络过拟合的处理装置及系统
CN112102200A (zh) * 2020-09-21 2020-12-18 腾讯科技(深圳)有限公司 图像补全模型初始化方法、训练方法和图像补全方法
CN112236779A (zh) * 2019-03-20 2021-01-15 华为技术有限公司 基于卷积神经网络的图像处理方法和图像处理装置
WO2021139156A1 (zh) * 2019-11-07 2021-07-15 深圳云天励飞技术股份有限公司 卷积计算方法及相关设备
WO2021253941A1 (zh) * 2020-06-18 2021-12-23 华为技术有限公司 神经网络模型训练、图像分类、文本翻译方法及装置、设备
CN114239814A (zh) * 2022-02-25 2022-03-25 杭州研极微电子有限公司 用于图像处理的卷积神经网络模型的训练方法
WO2022095675A1 (zh) * 2020-11-04 2022-05-12 安徽寒武纪信息科技有限公司 神经网络稀疏化的装置、方法及相关产品

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112236779A (zh) * 2019-03-20 2021-01-15 华为技术有限公司 基于卷积神经网络的图像处理方法和图像处理装置
CN110188795A (zh) * 2019-04-24 2019-08-30 华为技术有限公司 图像分类方法、数据处理方法和装置
CN110188795B (zh) * 2019-04-24 2023-05-09 华为技术有限公司 图像分类方法、数据处理方法和装置
CN110399972A (zh) * 2019-07-22 2019-11-01 上海商汤智能科技有限公司 数据处理方法、装置及电子设备
WO2021139156A1 (zh) * 2019-11-07 2021-07-15 深圳云天励飞技术股份有限公司 卷积计算方法及相关设备
CN110826704A (zh) * 2020-01-13 2020-02-21 中科寒武纪科技股份有限公司 一种用于防止神经网络过拟合的处理装置及系统
WO2021253941A1 (zh) * 2020-06-18 2021-12-23 华为技术有限公司 神经网络模型训练、图像分类、文本翻译方法及装置、设备
CN112102200A (zh) * 2020-09-21 2020-12-18 腾讯科技(深圳)有限公司 图像补全模型初始化方法、训练方法和图像补全方法
CN112102200B (zh) * 2020-09-21 2024-05-07 腾讯科技(深圳)有限公司 图像补全模型初始化方法、训练方法和图像补全方法
WO2022095675A1 (zh) * 2020-11-04 2022-05-12 安徽寒武纪信息科技有限公司 神经网络稀疏化的装置、方法及相关产品
WO2022095676A1 (zh) * 2020-11-04 2022-05-12 安徽寒武纪信息科技有限公司 神经网络稀疏化的设备、方法及相应产品
CN114239814A (zh) * 2022-02-25 2022-03-25 杭州研极微电子有限公司 用于图像处理的卷积神经网络模型的训练方法

Similar Documents

Publication Publication Date Title
CN107886164A (zh) 一种卷积神经网络训练、测试方法及训练、测试装置
WO2021004366A1 (zh) 基于结构化剪枝和低比特量化的神经网络加速器及方法
US20180157969A1 (en) Apparatus and Method for Achieving Accelerator of Sparse Convolutional Neural Network
CN106529670A (zh) 一种基于权重压缩的神经网络处理器、设计方法、芯片
CN109145983A (zh) 一种基于轻量化网络的实时场景图像语义分割方法
CN109086722A (zh) 混合车牌识别方法、装置、电子设备
CN111831254A (zh) 图像处理加速方法、图像处理模型存储方法及对应装置
CN107844826A (zh) 神经网络处理单元及包含该处理单元的处理系统
CN109791628B (zh) 神经网络模型分块压缩方法、训练方法、计算装置及系统
CN111582007A (zh) 物体识别方法、装置和网络
CN107256424A (zh) 三值权重卷积网络处理系统及方法
CN105184367A (zh) 深度神经网络的模型参数训练方法及系统
CN109063824B (zh) 深层三维卷积神经网络的创建方法、装置、存储介质及处理器
CN110147252A (zh) 一种卷积神经网络的并行计算方法及装置
CN113222150A (zh) 一种量子态的变换方法及装置
CN110874626B (zh) 一种量化方法及装置
CN107578055A (zh) 一种图像预测方法和装置
CN108108190A (zh) 一种计算方法及相关产品
CN108491924B (zh) 一种面向人工智能计算的神经网络数据串行流水处理装置
CN110009644B (zh) 一种特征图行像素分段的方法和装置
CN109447254A (zh) 一种卷积神经网络推理硬件加速方法及其装置
CN104536831B (zh) 一种基于多目标优化的多核SoC软件映射方法
CN107957977A (zh) 一种计算方法及相关产品
CN110009103B (zh) 一种深度学习卷积计算的方法和装置
CN112200310B (zh) 智能处理器、数据处理方法及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20180406