神经网络模型验证方法、装置、计算机设备和存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种神经网络模型验证方法、装置、计算机设备和存储介质。
背景技术
神经网络的前向推理是指,针对待推理神经网络在推理平台上创建推理实例(也即神经网络模型文件)和推理引擎,推理引擎基于神经网络输入层的输入数据和推理实例对神经网络的各层进行运算。
现有的神经网络的前向推理方案为:针对待推理神经网络创建一个推理实例,并在该推理实例内创建一个推理引擎,推理引擎接收输入数据,基于推理实例对整个神经网络的各层按顺序进行运算,即,一个输入数据在不同层上的操作严格串行,并且,不同输入之间也严格串行,即后一输入数据必须等前一输入数据的输出结果获取后才能运算。
在实际前向推理应用中,用户往往会根据需要定义多种不同的神经网络模型文件,然后通过反向传播训练方法获取权值数据,从而可以确定神经网络模型。由于上述训练过程涉及大量的链式求导操作,这无疑加大了计算机设备的资源消耗。
发明内容
本申请实施例提供一种神经网络模型验证方法、装置、计算机设备和存储介质,可以避免现有技术中通过反向传播训练方法获取权值数据时带来的计算机设备资源消耗大的问题,提高神经网络模型的验证速度,从而缩小了神经网络模型的开发时间。
第一方面,本申请实施例提供了一种神经网络模型验证方法,该方法包括:
获取神经网络模型的模型文件,所述模型文件包括多个算子和各算子之间的连接关系;
通过所述模型文件中的算子和各算子之间的连接关系确定所述神经网络模型的权值信息;
根据所述权值信息填充伪权值,生成所述神经网络模型的权值文件;
根据所述模型文件和所述权值文件验证所述神经网络模型。
第二方面,本申请实施例提供了一种神经网络模型验证装置,该装置包括用于执行上述第一方面的方法的单元。具体地,该装置可以包括:
获取单元,用于获取神经网络模型的模型文件,所述模型文件包括多个算子和各算子之间的连接关系;
确定单元,用于通过所述模型文件中的算子和各算子之间的连接关系确定所述神经网络模型的权值信息;
伪权值填充单元,用于根据所述权值信息填充伪权值,生成所述神经网络模型的权值文件;
模型验证单元,用于根据所述模型文件和所述权值文件验证所述神经网络模型。
第三方面,本申请实施例提供了一种计算机设备,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述处理器包括通用处理器和人工智能处理器,所述存储器用于存储支持计算机设备执行上述方法的计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行上述第一方面的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。
第五方面,本申请实施例提供了一种计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。
实施本申请实施例,计算机设备通过模型文件中的算子和各算子之间的连接关系确定神经网络模型的权值信息,之后,根据权值信息填充随机生成的伪权值,从而计算机设备可以根据模型文件和权值文件验证神经网络模型。由于本申请所描述的技术方案不通过反向传播训练方法获取权值数据,而是随机产生权值数据,可以避免现有技术中通过反向传播训练方法获取权值数据时带来的计算机设备资源消耗大的问题,可以提高神经网络模型的验证速度,从而缩小了神经网络模型的开发时间。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1是本申请实施例提供的一种计算机设备的结构示意图;
图2是本申请提供的一种人脸识别神经网络模型中的算子连接关系示意图;
图3是本申请实施例提供的一种神经网络架构的结构示意图;
图4是本申请实施例提供的一种车牌字符识别神经网络模型中的算子连接关系示意图;
图5是本申请实施例提供的一种神经网络模型验证方法的流程示意图;
图6是本申请实施例提供的一种神经网络模型验证装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应当理解,本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
为了便于更好的理解本申请所描述的技术方案,下面先解释本申请实施例所涉及的技术术语:
(1)卷积神经网络框架Caffe(Convolutional Architecture for Fast FeatureEmbedding)。
Caffe,是一个深度学习框架。在实际应用中,Caffe支持多种类型的深度学习架构、面向图像分类和图像分割,还可以支持卷积神经网络(Convolutional NeuralNetworks,CNN)、用于目标检测的卷积神经网络(Region-CNN,RCNN)、长短期记忆神经网络(Long Short-Term Memory,LSTM)和全连接神经网络设计。
在本申请实施例中,Caffe框架可以支持多种类型的基本算子,具体地,这里所涉及的多种类型的基本算子可以包括:常见的神经网络算子。例如,常见的神经网络算子有:卷积/反卷积算子,池化算子,激活算子、softmax(分类器)算子,全连接算子。其中,激活算子可以包括但不限于ReLU、Sigmoid、Tanh以及其他可以用插值方式实现的算子。
在本申请实施例中,对任何函数进行某一项操作都可以认为是一个算子。
在本申请实施例中,Caffe框架下的函数可以包括:Caffe Blob函数、Caffe Layer函数和Caffe Net函数。其中,Blob用于存储、交换和处理网络中正向和反向迭代的数据和导数信息;Layer用于执行计算,可以包括卷积(convolve)、池化(pool)、内积(innerproduct)、rectified-linear和sigmoid等非线性运算,还可以包括元素级的数据变换、归一化(normalize)、数据加载(load data)、分类(softmax)和hinge等损失计算(losses)。
具体实现中,每个Layer都定义了3种重要的运算,这3种运算为初始化设置(setup),前向传播(forward),反向传播(backward)。其中,setup用于模型初始化时重置layers及互相之间的连接;forward用于从底部(bottom)层中接受输入数据,计算后输出送到顶部(top)层;backward用于给定top层的输出梯度,计算其输入的梯度,并传递到bottom层。例如,Layer可以包括Date Layer、Convolution Layers、Pooling Layer、InnerProductLayer、ReLU Layer、Sigmoid Layer、LRN Layer、Dropout Layer、SoftmaxWithLoss Layer、Softmax Layer、Accuracy Layers等。一个Net开始于data layer,也即从磁盘中加载数据,终止于loss layer,也即计算如分类和重构这些任务的目标函数。具体来说,Net是由一系列层组成的有向无环计算图,Caffe保留了计算图中所有的中间值以确保前向和反向迭代的准确性。
(2)人工智能处理器
人工智能处理器,也称之为专用处理器,在本申请实施例中,人工智能处理器是指针对特定应用或者领域的处理器。例如:图形处理器(GPU,Graphics Processing Unit),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的专用处理器。又例如:神经网络处理器(NPU,Neural Processing Unit),是一种在人工智能领域的应用中针对矩阵乘法运算的专用处理器,采用“数据驱动并行计算”的架构,特别擅长处理视频、图像类的海量多媒体数据。
参见图1,是本申请实施例提供的一种计算机设备的结构示意图。如图1所示,计算机设备10可以包括通用处理器101、存储器102、通信总线103、通信接口104和至少一个人工智能处理器105,通用处理器101、人工智能处理器105通过所述通信总线连接所述存储器102和所述通信接口103。
通用处理器101可以是中央处理单元(Central Processing Unit,CPU),该通用处理器101还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该通用处理器101也可以是任何常规的处理器等。
通用处理器101还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请的资源配置方法的各个步骤可以通过通用处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。
存储器102可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)或其他存储器。本申请实施例中,存储器102用于存储数据以及各种软件程序,例如本申请实施例中根据神经网络的模型文件和权值文件实现神经网络模型验证的程序等。
可选的,在本申请实施例中,所述存储器可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方法的媒体加以存储。本实施方式所述的存储器又可以包括:利用电能方式存储信息的装置,如RAM、ROM等;利用磁能方式存储信息的装置,如硬盘、软盘、磁带、磁芯存储器、磁泡存储器、U盘;利用光学方式存储信息的装置,如CD或DVD。当然,还有其他方式的存储器,例如量子存储器、石墨烯存储器等等。
通信接口104使用例如但不限于收发器一类的收发装置,来实现计算机设备10与其他设备或通信网络之间的通信。例如,可以通过通信接口104接收其他设备发送的模型文件。
人工智能处理器105可以作为协处理器挂载到主CPU(Host CPU)上,由主CPU为其分配任务。在实际应用中,人工智能处理器105可以实现一种或多种运算。例如,以神经网络处理器(network processing unit,NPU)NPU为例,NPU的核心部分为运算电路,通过控制器控制运算电路提取存储器102中的矩阵数据并进行乘加运算。
可选的,人工智能处理器105可以包括8个集群(cluster),每个cluster中包括4个人工智能处理器核。
可选的,人工智能处理器105可以是可重构体系结构的人工智能处理器。这里,可重构体系结构是指,如果某一人工智能处理器能够利用可重用的硬件资源,根据不同的应用需求,灵活的改变自身的体系结构,以便为每个特定的应用需求提供与之相匹配的体系结构,那么这一人工智能处理器就称为可重构的计算系统,其体系结构称为可重构的体系结构。
应当理解,计算机设备10仅为本申请实施例提供的一个例子,并且,计算机设备10可具有比示出的部件更多或更少的部件,可以组合两个或更多个部件,或者可具有部件的不同配置实现。
下面示例性地描述具体的应用场景:
第一应用场景:
用户想要基于Caffe框架开发一种用于识别人脸的神经网络模型,在实际开发时,用户根据自身需求定义了人脸识别神经网络模型对应的模型文件,这里,该模型文件可以表示为model001.prototxt。具体地,该模型文件中包括多个算子和各算子之间的连接关系。可以理解的是,各算子之间的连接关系可以用于描述神经网络模型的网络结构。例如,如图2所示,该模型文件包括5个卷积层、5个Relu激活函数层、5个最大池化层、1个全连接层、1个softmax层、输出层。需要说明的是,神经网络模型中每层神经网络架构由相应地的算子组成,例如,卷积层由卷积算子组成。其中,各算子之间的连接关系为:卷积层1-激活函数Relu-最大池化层1-卷积层2-激活函数Relu-最大池化层2-卷积层3-激活函数Relu-最大池化层3-卷积层4-激活函数-最大池化层4-卷积层5-激活函数-最大池化层5-全连接层1-softmax层-输出层。计算机设备获取上述人脸识别神经网络模型,并通过模型文件中的算子和算子之间的连接关系确定人脸识别神经网络模型的权值信息,例如,以“softmax分类器层-输出层”这一神经网络结构为例,如图3所示,计算机设备根据softmax分类器与输出层之间的连接关系确定该层神经网络模型的权值矩阵大小为4*2,继而,计算机设备可以根据该层神经网络模型的权值矩阵大小填充随机生成的伪权值,从而可以生成人脸识别神经网络模型的权值文件,之后,计算机设备可以根据模型文件和权值文件验证人脸识别神经网络模型是否正确。
在验证了人脸神经网络模型的正确性之后,下面具体介绍本申请所涉及的人脸识别神经网络模型是如何识别人脸的:
首先,将人脸图像输入人脸识别神经网络模型,人脸识别神经网络模型通过“卷积层1-激活函数Relu-最大池化层1,......,卷积层5-激活函数-最大池化层5”逐级提取人脸图像中的人脸特征,得到人脸特征向量;之后,将人脸特征向量送入softmax分类器;那么,经过softmax分类器之后,可以通过输出层输出当前人脸图像属于每一类的得分或者概率,从而可以识别人脸图像中的人物。
第二应用场景:
用户想要基于Caffe框架开发一种用于识别车牌字符的神经网络模型,在实际开发时,用户根据自身需求定义了车牌字符识别神经网络模型对应的模型文件,这里,该模型文件可以表示为model002.prototxt。具体地,该模型文件中包括多个算子和各算子之间的连接关系。可以理解的是,各算子之间的连接关系可以用于描述神经网络模型的网络结构。例如,如图4所示,该模型文件包括2个卷积层、2个池化层、2个全连接层。其中,各算子之间的连接关系为:卷积层1-池化层1-卷积层2-池化层2-全连接层1-全连接层2。计算机设备获取上述车牌字符识别神经网络模型,并通过模型文件中的算子和算子之间的连接关系确定车牌字符识别神经网络模型的权值信息,继而,计算机设备可以根据该权值信息填充随机生成的伪权值,从而可以生成车牌字符识别神经网络模型的权值文件,之后,计算机设备可以根据模型文件和权值文件验证车牌字符识别神经网络模型是否正确。
在验证了车牌字符识别神经网络模型的正确性之后,下面具体介绍本申请所涉及的车牌字符识别神经网络模型是如何识别车牌字符的:
首先,获取原始样本图像,具体地,原始样本图像可以为不同光照强度、倾斜角度、遮挡程度等条件下拍摄得到的图像;其次,对获得的原始样本图像进行预处理,得到分割后的子图像样本,并挑选出其中包含字符的子图像样本;然后,将子图像样本输入车牌字符识别神经网络模型,该神经网络模型通过“卷积层1-池化层1-卷积层2-池化层2”逐级提取子图像样本中的特征,得到特征向量;最后,在全连接层1与全连接层2的作用下,获得字符子图像样本的识别结果。
此外,需要说明的是,本申请中的神经网络模型的应用场景并不限于上述应用场景。在上述应用场景中提及的人脸识别神经网络模型、车牌字符识别神经网络模型均为基于Caffe框架开发得到的神经网络模型。
下面结合图5所示的本申请实施例提供的一种神经网络模型验证方法的流程示意图,具体说明在本申请实施例中是如何实现神经网络模型的验证的,该方法可以包括但不限于如下步骤:
步骤S500、获取神经网络模型的模型文件,所述模型文件包括多个算子和各算子之间的连接关系。
在本申请实施例中,模型文件中包括多个算子和各算子之间的连接关系,其描述了神经网络模型的网络结构,计算机设备通过获取神经网络模型的模型文件可以构建模型文件中所描述的神经网络的网络结构。
在本申请实施例中,不同的神经网络模型,意味着神经网络模型对应的模型文件不同。例如,以前文所述的人脸识别神经网络模型和车牌字符识别神经网络模型为例,其中,人脸识别神经网络模型的模型文件中所包括的内容为:人脸识别神经网络模型包括5个卷积层、5个Relu激活函数、5个最大池化层、1个全连接层、1个softmax层、输出层。人脸识别神经网络模型中多个算子之间的连接关系为:卷积层1-激活函数Relu-最大池化层1-卷积层2-激活函数Relu-最大池化层2-卷积层3-激活函数Relu-最大池化层3-卷积层4-激活函数-最大池化层4-卷积层5-激活函数-最大池化层5-全连接层1-softmax分类器层-输出层。车牌字符识别神经网络模型的模型文件中所包括的内容为:车牌字符识别神经网络模型包括2个卷积层、2个池化层、2个全连接层,车牌字符识别神经网络模型的多个算子之间的连接关系为:卷积层1-池化层1-卷积层2-池化层2-全连接层1-全连接层2。
步骤S502、通过所述模型文件中的算子和各算子之间的连接关系确定所述神经网络模型的权值信息。
如前所述,算子和算子之间的连接关系可以用于描述神经网络模型的网络结构,并且神经网络模型中的每层神经网络架构由相应的算子组成。以神经网络模型中的全连接层为例,现有中,可以通过数学表达关系式y=wx+b描述全连接层的工作过程,其中,w表示权值,x表示输入,b表示偏置,y表示输出。例如,输出y的矩阵大小为4*2,输入x的矩阵大小为4*4,那么,在这种情况下,可以确定权值w的矩阵大小为4*2。
在本申请实施例中,权值信息可以包括权值矩阵大小。
具体实现中,可以通过所述模型文件中的算子和各算子之间的连接关系确定所述神经网络模型的权值信息,包括:
通过正向遍历或反向遍历所述神经网络模型文件中的算子和各算子之间的连接关系,确定所述神经网络模型中的每层所对应的权值矩阵大小。
具体实现中,以图4所示的车牌字符识别神经网络模型为例,通过正向遍历的方式确定神经网络模型中的每层所对应的权值矩阵大小是指:按照“卷积层1-池化层1-卷积层2-池化层2-全连接层1-全连接层2”的顺序确定神经网络模型中每层所对应的权值矩阵大小。
这里,通过反向遍历的方式确定神经网络模型中每层所对应的权值矩阵大小是指:按照“全连接层2-全连接层1-池化层2卷积层2-池化层1-卷积层1”的顺序确定神经网络模型中每层所对应的权值矩阵大小。
例如,计算机设备确定“全连接层1-全连接层2”这一网络结构对应的权值矩阵为4*4的权值矩阵。
步骤S504、根据所述权值信息填充伪权值,生成所述神经网络模型的权值文件。
在其中一种可能的实现方式中,伪权值可以为随机数。
在其中一种可能的实现方式中,计算机设备可以通过调用随机函数来生成伪权值。这里,随机函数可以包括但不限于rand()函数。例如,计算机设备可以调用rand(n)函数,生成0到1之间的n阶随机数方阵;又例如,计算机设备可以调用rand(m,n)函数,生成0到1之间的m*n的随机数矩阵。
在其中一种可能的实现方式中,计算机设备可以先从多个数据源获取多个源随机数,其中,多个源随机数中至少存在一个源随机数为随机产生;然后,通过哈希算法对多个源随机数进行计算,生成一个随机数序列,这里,随机数序列即为可以在权值矩阵中填入的伪权值。
在其中一种可能的实现方式中,伪权值可以为预设数值。具体地,该预设数值可以为整形数值,也可以为浮点型数值,等等,本申请实施例不作具体限定。以预设数值为浮点型数值为例,例如,该预设数值可以为1.5,也可以为1.65等等。
在生成了伪权值之后,计算机设备根据权值信息填充伪权值,从而可以得到神经网络模型的权值文件。
可以理解的是,上述生成权值文件的方法,由于不需要经过反向传播训练过程得到权值,可以避免因反向传播训练过程带来的计算机设备资源消耗大的问题。与此同时,由于生成的伪权值为随机数,这一实现方式可以提高神经网络模型的验证速度,减少神经网络模型的开发时间。
步骤S506、根据所述模型文件和所述权值文件验证所述神经网络模型。
在本申请实施例中,根据模型文件和权值文件验证神经网络模型可以包括如下两个阶段:
第一阶段,在通用处理器或人工智能处理器上运行神经网络模型,以确定该神经网络模型是否可以正常工作;
第二阶段,分别在通用处理器和人工智能处理器上运行上述神经网络模型,可以得到两个运行结果,然后,通过判断两个运行结果是否一致或是否满足预设误差范围来验证模型的准确性。
在本申请实施例中,以两个运行结果分别为第一运行结果和第二运行结果为例,计算机设备可以先根据第一运行结果和第二运行结果确定误差,然后,判断这两个结果之间的误差是否在预设误差范围之内。如果这两个结果之间的误差在预设误差范围之内,则说明第一运行结果和第二运行结果满足预设误差范围;那么,相应地,如果这两个结果之间的误差不在预设误差范围之内,则说明第一运行结果和第二运行结果不满足预设误差范围。
实施本申请实施例,计算机设备通过模型文件中的算子和各算子之间的连接关系确定神经网络模型的权值信息,之后,根据权值信息填充随机生成的伪权值,从而计算机设备可以根据模型文件和权值文件验证神经网络模型。由于本申请所描述的技术方案不通过反向传播训练方法获取权值数据,而是随机产生权值数据,可以避免现有技术中通过反向传播训练方法获取权值数据时带来的计算机设备资源消耗大的问题,可以提高神经网络模型的验证速度,从而缩小了神经网络模型的开发时间。
进一步地,为了更好的理解本申请如何根据神经网络模型文件和权值文件验证神经网络模型,下面对其进行详细阐述:
具体实现中,所述根据所述神经网络模型文件和所述权值文件验证所述神经网络模型,可以包括:
分别在通用处理器和人工智能处理器上运行所述神经网络模型,得到第一运行结果和第二运行结果;
若所述第一运行结果与所述第二运行结果不满足预设误差范围,则调整所述神经网络模型的模型文件,直至所述第一运行结果和所述第二运行结果满足所述预设误差范围。
这里,根据神经网络模型文件和权值文件验证神经网络模型是指,验证神经网络模型是否正确(也即,上文中的第二阶段)。
在本申请实施例中,运行结果包括处理器调用神经网络模型处理预定任务的精度。具体地,第一运行结果是指,通用处理器调用神经网络模型处理预定任务的精度。第二运行结果是指,人工智能处理器调用神经网络模型处理预定任务的精度。以图像识别为例,该精度是指识别图像的正确率。
在本申请实施例中,预设误差范围可以为1%,也可以为5%,还可以为其他数值。在实际应用中,可以结合调试需求设置预设误差范围。可以理解的是,预设误差范围越小,表示调试需求更严苛。
在本申请实施例中,调整神经网络模型的模型文件包括调整算子类型、调整各算子之间的连接关系中的至少一种,本申请实施例不作具体限定。
在其中一个可能的实现方式中,当在通用处理器上运行上述神经网络模型得到的第一运行结果与在人工智能处理器上运行上述神经网络模型得到的第二运行结果一致。在这种情形下,表明该神经网络模型是正确的。在其中一个可能的实现方式中,当在通用处理器上运行上述神经网络模型得到的第一运行结果与在人工智能处理器上运行上述神经网络模型得到的第二运行结果满足预设误差范围,例如,该预设误差范围为1%。在这种情况下,表明该神经网络模型是正确的。
在其中一个可能的实现方式中,当在通用处理器上运行上述神经网络模型得到的第一运行结果与在人工智能处理器上运行上述神经网络模型得到的第二运行结果不满足预设误差范围,在这种情况下,表明该神经网络模型不正确。此时,调整神经网络模型的模型文件,得到调整后的神经网络模型文件,计算机设备基于调整后的神经网络模型文件和随机生成的权值文件重新验证神经网络模型的正确性,直至第一运行结果和第二运行结果一致或满足预设误差范围。
在本申请实施例中,当神经网络模型完成了验证之后,计算机设备可以获取输入数据、模型文件和权值文件,以执行神经网络运算,得到神经网络运算的结果(即输出神经元数据)。
在实际应用中,对于神经网络运算,如果该神经网络运算具有多层运算,多层运算的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络正向运算下层中的神经元即为输入神经元,处于网络正向运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有L层,K=1,2,...,L-1,对于第K层和第K+1层来说,我们将第K层称为输入层,其中的神经元为所述输入神经元,第K+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。
对于多层神经网络运算,其实现过程是,在正向运算中,当上一层神经网络执行完成之后,下一层的运算指令会将上一层神经网络中计算出的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值;在反向运算中,当上一层神经网络的反向运算执行完成后,下一层运算指令会将上一层神经网络中计算出的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。
在本申请实施例中,例如,以图像识别为例,输入数据可以为图像样本集。当神经网络模型为前文所述的人脸识别神经网络模型,计算机设备在执行完神经网络运算之后,得到的运算结果为:当前人脸图像属于每一类的得分或者概率,从而可以识别人脸图像中的人物。
实施本申请实施例,当计算机设备采用上述方法验证神经网络模型的正确性时,相较于现有技术中通过多次调试过程验证神经网络模型来说,可以提高神经网络模型的验证速度,从而缩小了神经网络模型的开发时间。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
进一步需要说明的是,虽然图5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
上述详细阐述了本申请实施例的方法,为了便于更好地实施本申请实施例的上述方案,相应地,下面还提供用于配合实施上述方案的相关装置。
参见图6,图6是本申请实施例提供的一种神经网络模型验证装置的结构示意图,该装置60至少可以包括:
获取单元600,用于获取神经网络模型的模型文件,所述模型文件包括多个算子和各算子之间的连接关系;
确定单元602,用于通过所述模型文件中的算子和各算子之间的连接关系确定所述神经网络模型的权值信息;
伪权值填充单元604,用于根据所述权值信息填充伪权值,生成所述神经网络模型的权值文件;
模型验证单元606,用于根据所述模型文件和所述权值文件验证所述神经网络模型。
在其中一个可能的实现方式中,所述权值信息包括权值矩阵大小;所述确定单元602具体用于:
通过正向遍历或反向遍历所述神经网络模型文件中的算子和各算子之间的连接关系,确定所述神经网络模型中的每层所对应的权值矩阵大小。
在其中一个可能的实现方式中,所述伪权值为随机数。
在其中一个可能的实现方式中,所述模型验证单元606包括执行单元6061和调整单元6062,其中,
所述执行单元6061,用于分别在通用处理器和人工智能处理器上运行所述神经网络模型,得到第一运行结果和第二运行结果;
调整单元6062,用于在所述第一运行结果与所述第二运行结果不满足预设误差范围时,调整所述神经网络模型的模型文件,直至所述第一运行结果和所述第二运行结果满足所述预设误差范围。
应该理解,上述的装置实施例仅是示意性的,本披露的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
所述作为分离部件说明的单元或模块可以是物理上分开的,也可以不是物理上分开的。作为单元或模块说明的部件可以是物理单元,也可以不是物理单元,即可以位于一个装置中,或者也可以分布到多个装置上。本披露中实施例的方案可以根据实际的需要选择其中的部分或者全部单元来实现。
此外,这里需要指出的是,本申请实施例还提供了一种计算机存储介质,用于存储为上述图5所示的计算机设备所用的计算机软件指令,其包含用于执行上述方法实施例所涉及的程序。通过执行存储的程序,可以实现神经网络模型的验证,提高验证速度。
由上可见,本申请实施例提供神经网络模型验证方法、装置、计算机设备和存储介质,该方法跳过反向传播训练获取权值数据,可以避免现有技术中通过反向传播训练方法获取权值数据时带来的计算机设备资源消耗大的问题,可以提高神经网络模型的验证速度,从而缩小了神经网络模型的开发时间。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
进一步地,依据以下条款可更好地理解前述内容:
例如,条款A1,一种神经网络模型验证方法,所述方法包括:
获取神经网络模型的模型文件,所述模型文件包括多个算子和各算子之间的连接关系;
通过所述模型文件中的算子和各算子之间的连接关系确定所述神经网络模型的权值信息;
根据所述权值信息填充伪权值,生成所述神经网络模型的权值文件;
根据所述模型文件和所述权值文件验证所述神经网络模型。
A2.根据A1所述的方法,所述权值信息包括权值矩阵大小;所述通过所述神经网络模型文件中的算子和各算子之间的连接关系确定所述神经网络模型的权值信息,包括:
通过正向遍历或反向遍历所述神经网络模型文件中的算子和各算子之间的连接关系,确定所述神经网络模型中的每层所对应的权值矩阵大小。
A3.根据A1所述的方法,所述伪权值为随机数。
A4.根据A1-A3任一项所述的方法,所述根据所述神经网络模型文件和所述权值文件验证所述神经网络模型,包括:
分别在通用处理器和人工智能处理器上运行所述神经网络模型,得到第一运行结果和第二运行结果;
若所述第一运行结果与所述第二运行结果不满足预设误差范围,则调整所述神经网络模型的模型文件,直至所述第一运行结果和所述第二运行结果满足所述预设误差范围。
B5.一种神经网络模型验证装置,所述装置包括:
获取单元,用于获取神经网络模型的模型文件,所述模型文件包括多个算子和各算子之间的连接关系;
确定单元,用于通过所述模型文件中的算子和各算子之间的连接关系确定所述神经网络模型的权值信息;
伪权值填充单元,用于根据所述权值信息填充伪权值,生成所述神经网络模型的权值文件;
模型验证单元,用于根据所述模型文件和所述权值文件验证所述神经网络模型。
B6.根据B5所述的装置,所述权值信息包括权值矩阵大小;所述确定单元具体用于:
通过正向遍历或反向遍历所述神经网络模型文件中的算子和各算子之间的连接关系,确定所述神经网络模型中的每层所对应的权值矩阵大小。
B7.根据B5所述的装置,所述伪权值为随机数。
B8.根据B5-B7任一项所述的装置,所述模型验证单元包括执行单元和调整单元,其中,
所述执行单元,用于分别在通用处理器和人工智能处理器上运行所述神经网络模型,得到第一运行结果和第二运行结果;
调整单元,用于在所述第一运行结果与所述第二运行结果不满足预设误差范围时,调整所述神经网络模型的模型文件,直至所述第一运行结果和所述第二运行结果满足所述预设误差范围。
C1.一种计算机设备,其特征在于,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述处理器包括通用处理器和人工智能处理器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求A1-A4任一项所述的方法。
D1.一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求A1-A4任一项所述的方法。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。