神经网络在线模型的验证方法、装置和计算机设备
技术领域
本申请涉及计算机技术领域,尤其涉及一种神经网络在线模型的验证方法、装置和计算机设备。
背景技术
深度学习框架支持多种神经网络在线模型。前向传播和反向传播是神经网络的重要组成部分。前向传播是通过神经网络的输入数据计算输出结果的过程。神经网络中的权值在前向传播阶段不发生变化。反向传播是根据前向传播最后一层的输出数据与目标函数比较得到计算损失函数,计算误差,然后用于更新权值,该过程只有在训练环境下才需要计算。使用人工智能处理器对在线模型进行前向传播验证,对于云上部署和调试具有重要意义。
发明内容
本申请实施例提供一种神经网络在线模型的验证方法、装置、计算机设备和存储介质,可随机生成在线模型所需的验证输入数据,无需提前准备输入数据集,能便捷地对在线模型的前向传播进行验证。
第一方面,本申请实施例提供了一种神经网络在线模型的验证方法,该方法包括:
根据所述在线模型的模型文件获取所述在线模型的输入数据的规模;
根据所述输入数据的规模生成验证输入数据,所述验证输入数据的规模与所述在线模型的输入数据的规模一致;
根据所述验证输入数据验证所述在线模型。
第二方面,本申请实施例提供了一种神经网络在线模型的验证装置,该装置可以包括:
获取单元,用于根据所述在线模型的模型文件获取所述在线模型的输入数据的规模;
处理单元,用于根据所述输入数据的规模生成验证输入数据,所述验证输入数据的规模与所述在线模型的输入数据的规模一致;
验证单元,用于根据所述验证输入数据验证所述在线模型。
第三方面,本申请实施例提供了一种计算机设备,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述处理器包括通用处理器和人工智能处理器,所述存储器用于存储支持计算机设备执行上述方法的计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行上述第一方面的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。
第五方面,本申请实施例提供了一种计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。
实施本申请实施例,计算机设备通过根据在线模型的模型文件获取在线模型的输入数据的规模,根据输入数据的规模生成验证输入数据,其中,验证输入数据的规模与所述在线模型的输入数据的规模一致,根据验证输入数据验证在线模型,如此,通过随机生成在线模型所需的验证输入数据,由于无需提前准备输入数据集,从而,能够便捷地对在线模型的前向传播进行验证。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1是本申请实施例提供的一种计算机设备的结构示意图;
图2是本申请实施例提供的一种神经网络在线模型的验证方法的流程示意图;
图3是本申请实施例公开的另一种神经网络在线模型的验证方法的流程示意图;
图4是本申请实施例公开的另一种神经网络在线模型的验证方法的流程示意图;
图5是本申请实施例提供的一种神经网络在线模型的验证装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应当理解,应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
为了便于更好的理解本申请所描述的技术方案,下面先解释本申请实施例所涉及的技术术语:
(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、Softmax With LossLayer、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可具有比示出的部件更多或更少的部件,可以组合两个或更多个部件,或者可具有部件的不同配置实现。
如图2所示,图2为本申请实施例提供的一种神经网络在线模型的验证方法的流程示意图,所述方法包括:
201、根据所述在线模型的模型文件获取所述在线模型的输入数据的规模。
本申请实施例中,对神经网络在线模型进行验证,可以分别在通用处理器和人工智能处理器上运行在线模型,因此,在通用处理器上运行在线模型时,可通过通用处理器根据在线模型的模型文件获取在线模型的输入数据的规模;在人工智能处理器上运行在线模型时,可通过人工智能处理器根据在线模型的模型文件获取在线模型的输入数据的规模。
其中,上述在线模型是指,基于Caffe框架的神经网络模型,例如,用于进行人脸识别的神经网络模型,用于分类的分类模型等等。
其中,上述模型文件可包括多个算子和各算子之间的连接关系,以及在线模型的输入数据的规模。在线模型的输入数据的规模可包括以下至少一种:输入数据的数量、数据类型、输入数据的位数、输入数据的构成等等。
本申请实施例中,通用处理器或人工智能处理器可读取在线模型的模型文件,从模型文件中获取在线模型的输入数据的规模。
可选地,在使用人工智能处理器对在线模型进行前向传播验证时,还可先构建神经网络并完成编译,再通过对编译完成的神经网络进行运行。
202、根据所述输入数据的规模生成验证输入数据,所述验证输入数据的规模与所述在线模型的输入数据的规模一致。
本申请实施例中,通用处理器或人工智能处理器可根据所述在线模型的输入数据的规模随机生成验证输入数据,如此,可随机生成在线模型所需的验证输入数据,无需提前准备数据集,从而,可更加便捷地进行在线模型验证。
其中,验证输入数据可以是浮点型数据。
其中,验证输入数据的规模与在线模型的输入数据的规模一致,可保证在线模型在运行时得到的输出结果能反映较准确的验证结果,从而,可保证验证结果的准确性。
203、根据所述验证输入数据验证所述在线模型。
本申请实施例中,可根据随机生成的验证输入数据验证在线模型,具体地,可将验证输入数据输入在线模型,然后运行在线模型,根据在线模型运行是否得到运行结果,可验证人工智能处理器是否存在导致错误的位置,以及,在得到运行结果的情况下,根据运行结果是否正确,来验证在线模型中是否存在导致错误的位置。
其中,对在线模型进行前向传播验证,可在通用处理器上运行该在线模型,以及在人工智能处理器上运行该在线模型,具体地,在人工智能处理器上,可包括在逐层模式下运行在线模型和在融合模式下运行在线模型。
可选地,上述步骤203中,根据所述验证输入数据验证所述在线模型,可包括以下步骤31-步骤32:
31、根据所述在线模型的权值文件获取所述在线模型的第一权值数据;
32、根据所述验证输入数据和所述第一权值数据验证所述在线模型。
其中,上述权值文件可包括在线模型的第一权值数据。
本申请实施例中,在通过通用处理器或人工智能处理器运行在线模型的过程中,可通过通用处理器或人工智能处理器读取权值文件中的第一权值数据,然后将第一权值数据和验证输入数据输入在线模型中,运行在线模型,其中,在通过通用处理器运行在线模型时,可得到对应的第一日志文件,在通过人工智能处理器运行在线模型时,可得到对应的第二日志文件,进而,若在线模型运行时出现错误,可根据第一日志文件和第二日志文件对导致错误的位置进行定位。
可选地,上述步骤32中,根据所述验证输入数据和所述第一权值数据验证所述在线模型,可包括以下步骤:
A1、将所述验证输入数据和所述第一权值数据输入所述在线模型,分别在通用处理器和人工智能处理器上运行所述在线模型;
A2、若所述在线模型在所述通用处理器上运行得到第一运行结果,所述在线模型在所述人工智能处理器上运行得到第二运行结果;且根据所述第一运行结果和所述第二运行结果确定的误差不满足预设误差范围,则确定所述在线模型中导致错误的错误层。
其中,第一运行结果可包括通用处理器运行在线模型处理预设任务的精度。第二运行结果可包括人工智能处理器调用在线模型处理预设任务的精度。预设任务例如可以是进行图像识别,该精度可以是指识别图像的正确率。
其中,上述预设误差范围可以为1%,也可以为5%,还可以为其他数值。在实际应用中,可以结合调试需求设置预设误差范围。可以理解的是,预设误差范围越小,表示调试需求更严苛。
本申请实施例中,可将验证输入数据和第一权值数据输入在线模型,分别在通用处理器和人工智能处理器上运行在线模型,具体地,可分别在通用处理器和人工智能处理器上对在线模型进行前向传播运算,若所述在线模型在所述通用处理器上运行得到第一运行结果,所述在线模型在所述人工智能处理器上运行得到第二运行结果,表明在线模型运行到了神经网络在线模型的最后一层,因此,可确定第一运行结果和所述第二运行结果确定的误差是否满足预设误差范围,若根据述第一运行结果和所述第二运行结果确定的误差不满足预设误差范围,表明人工智能处理器上运行在线模型时出现错误,因此,可进一步确定在线模型中导致错误的错误层,具体地,可将第一日志文件与第二日志文件进行对比,确定在线模型中导致错误的错误层。
可选地,上述步骤A2中,确定所述在线模型中导致错误的错误层,可包括以下步骤:
A21、获取所述在线模型在所述通用处理器上运行时多层神经网络对应的多个第一输出数据;以及,获取所述在线模型在所述人工智能处理器上运行时多层神经网络对应的多个第二输出数据,所述多个第一输出数据与所述第二输出数据一一对应;
A22、将所述多个第一输出数据中每一第一输出数据与对应的第二输出数据进行匹配,得到多个匹配值;
A23、确定所述多个匹配值中最小的匹配值对应的网络层为所述导致错误的错误层。
本申请实施例中,可从第一日志文件中获取在线模型在通用处理器上运行时多层神经网络对应的多个第一输出数据,从第二日志文件中获取在线模型在人工智能处理器上运行时多层神经网络对应的多个第二输出数据。然后,将所述多个第一输出数据中每一第一输出数据与对应的第二输出数据进行匹配,得到多个匹配值,其中,匹配值越小,表明对应的第一输出数据与第二输出数据之间差别较大,因此,可确定多个匹配值中最小的匹配值对应的网络层为导致错误的错误层。
可选地,本申请实施例中,在确定所述在线模型中导致错误的错误层之后,还可包括以下步骤A3-步骤A6:
A3、获取错误层中对应的指令序列,所述指令序列包括运行该错误层的多个指令;
A4、确定所述多个指令中每一指令的指令类型,得到多个指令类型;
A5、根据预设的指令类型优先级确定所述多个指令类型中优先级最高的目标指令类型;
A6、确定所述指令序列中与所述目标指令类型对应的目标指令为导致错误的指令。
本申请实施例中,在确定在线模型中导致错误的错误层之后,还可进一步确定错误层中导致错误的指令所在的位置,具体地,在不同的网络层中,包括的指令类型不同,因此,可预先设定多个不同的指令类型之间的指令类型优先级,其中,优先级越高,表明对应的指令类型的指令为导致错误的指令的可能性越高,进而,可在确定指令序列中的多个指令的多个指令类型后,确定多个指令类型中优先级最高的目标指令类型,然后,确定指令序列中与目标指令类型对应的目标指令为导致错误的指令。如此,可缩小定位导致在线模型运行错误的位置范围,进而可指示验证人员根据错误位置进行调试,提高在线模型验证的准确性。
可选地,上述步骤32中,根据所述验证输入数据和所述第一权值数据验证所述在线模型,还可包括以下步骤:
若所述在线模型在所述人工智能处理器上运行没有得到运行结果,确定所述人工智能处理器上在运行过程中出现错误的位置。
本申请实施例中,若所述在线模型在所述人工智能处理器上运行没有得到运行结果,即在线模型在运行过程中产生中断,表明人工智能处理器出现问题,进而,可查询第二日志文件中的报错信息,确定报错信息所在的位置,从而,可确定人工智能处理器运行在线网络时导致错误的位置。
可选地,上述步骤203中,根据所述验证输入数据验证所述在线模型,可包括以下步骤:
33、根据所述模型文件确定所述在线模型的权值信息;
34、根据所述权值信息生成所述在线模型的第二权值数据;
35、根据所述验证输入数据和所述第二权值数据验证所述在线模型。
其中,上述权值信息可以包括权值矩阵大小。
本申请实施例中,可通过正向遍历或反向遍历模型文件中的算子和各算子之间的连接关系,确定每层神经网络所对应的权值矩阵大小。然后,可根据权值信息随机生成在线模型的第二权值数据,如此,由于不需要经过反向传播训练过程得到新的权值数据,可以避免因反向传播训练过程带来的计算机设备资源消耗大的问题。此外,由于生成的第二权值数据为随机数,从而,可以提高在线模型的验证速度。
其中,根据所述验证输入数据和所述第二权值数据验证所述在线模型的方式,可参照根据所述验证输入数据和所述第一权值数据验证所述在线模型的步骤,此处不再赘述。
可以看出,本申请提供的技术方案,通过根据在线模型的模型文件获取在线模型的输入数据的规模,根据输入数据的规模生成验证输入数据,其中,验证输入数据的规模与所述在线模型的输入数据的规模一致,根据验证输入数据验证在线模型,如此,可随机生成在线模型所需的验证输入数据,无需提前准备输入数据集,能够便捷地对在线模型的前向传播进行验证。
如图3所示,图3为本申请实施例提供的另一种神经网络在线模型的验证方法的流程示意图,所述方法包括:
301、根据所述在线模型的模型文件获取所述在线模型的输入数据的规模。
302、根据所述输入数据的规模生成验证输入数据,所述验证输入数据的规模与所述在线模型的输入数据的规模一致。
303、根据所述模型文件确定所述在线模型的权值信息。
304、根据所述权值信息生成所述在线模型的第二权值数据。
305、根据所述验证输入数据和所述第二权值数据验证所述在线模型。
其中,上述步骤301-305的具体实现过程可参照图2所示的方法中相应的描述,在此不再赘述。
可以看出,本申请提供的技术方案,通过根据在线模型的模型文件获取在线模型的输入数据的规模,根据输入数据的规模生成验证输入数据,其中,验证输入数据的规模与在线模型的输入数据的规模一致,根据模型文件确定在线模型的权值信息,根据权值信息生成在线模型的第二权值数据,根据验证输入数据和第二权值数据验证所述在线模型,如此,可通过随机生成在线模型所需的验证输入数据,由于无需提前准备输入数据集,可随机生成在线模型所需的验证输入数据,无需提前准备输入数据集,此外,通过根据权值信息生成在线模型的第二权值数据,可避免因反向传播训练过程带来的计算机设备资源消耗大的问题。此外,由于生成的第二权值数据为随机数,从而,可以提高在线模型的验证速度。
如图4所示,图4为本申请实施例提供的另一种神经网络在线模型的验证方法的流程示意图,所述方法包括:
401、根据所述在线模型的模型文件获取所述在线模型的输入数据的规模。
402、根据所述输入数据的规模生成验证输入数据,所述验证输入数据的规模与所述在线模型的输入数据的规模一致。
403、根据所述在线模型的权值文件获取所述在线模型的第一权值数据。
404、将所述验证输入数据和所述第一权值数据输入所述在线模型,分别在通用处理器和人工智能处理器上运行所述在线模型。
405、若所述在线模型在所述通用处理器上运行得到第一运行结果,所述在线模型在所述人工智能处理器上运行得到第二运行结果;且根据所述第一运行结果和所述第二运行结果确定的误差不满足预设误差范围,则确定所述在线模型中导致错误的错误层。
406、若所述在线模型在所述人工智能处理器上运行没有得到运行结果,确定所述人工智能处理器上在运行过程中出现错误的位置。
其中,上述步骤401-406的具体实现过程可参照图2所示的方法中相应的描述,在此不再赘述。
可以看出,本申请提供的技术方案,通过根据在线模型的模型文件获取在线模型的输入数据的规模,根据输入数据的规模生成验证输入数据,根据在线模型的权值文件获取在线模型的第一权值数据,将验证输入数据和第一权值数据输入在线模型,分别在通用处理器和人工智能处理器上运行在线模型,若在线模型在通用处理器上运行得到第一运行结果,在线模型在人工智能处理器上运行得到第二运行结果;且根据第一运行结果和第二运行结果确定的误差不满足预设误差范围,则确定在线模型中导致错误的错误层,若在线模型在人工智能处理器上运行没有得到运行结果,确定人工智能处理器上在运行过程中出现错误的位置,如此,可通过随机生成在线模型所需的验证输入数据,由于无需提前准备输入数据集,可随机生成在线模型所需的验证输入数据,无需提前准备输入数据集,以及,可快速、准确地对导致在线模型运行错误的位置进行定位。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
进一步需要说明的是,虽然图2-图4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-图4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
下面介绍本申请提供的神经网络在线模型的验证装置。
参见图5,图5是本申请实施例提供的一种神经网络在线模型的验证装置的结构示意图,该装置500至少可以包括获取单元501、处理单元502和验证单元503,其中,
所述获取单元501,用于根据所述在线模型的模型文件获取所述在线模型的输入数据的规模;
所述处理单元502,用于根据所述输入数据的规模生成验证输入数据,所述验证输入数据的规模与所述在线模型的输入数据的规模一致;
所述验证单元503,用于根据所述验证输入数据验证所述在线模型。
在一个可能的实现方式中,所述验证单元503具体用于:
根据所述在线模型的权值文件获取所述在线模型的第一权值数据;
根据所述验证输入数据和所述第一权值数据验证所述在线模型。
在一个可能的实现方式中,所述验证单元503具体用于:
根据所述模型文件确定所述在线模型的权值信息;
根据所述权值信息生成所述在线模型的第二权值数据;
根据所述验证输入数据和所述第二权值数据验证所述在线模型。
在一个可能的实现方式中,在所述根据所述验证输入数据和所述第一权值数据验证所述在线模型方面,所述验证单元503具体用于:
将所述验证输入数据和所述第一权值数据输入所述在线模型,分别在通用处理器和人工智能处理器上运行所述在线模型;
若所述在线模型在所述通用处理器上运行得到第一运行结果,所述在线模型在所述人工智能处理器上运行得到第二运行结果;且根据所述第一运行结果和所述第二运行结果确定的误差不满足预设误差范围,则确定所述在线模型中导致错误的错误层。
在一个可能的实现方式中,在所述确定所述在线模型中导致错误的错误层方面,所述验证单元503具体用于:
获取所述在线模型在所述通用处理器上运行时多层神经网络对应的多个第一输出数据;以及,获取所述在线模型在所述人工智能处理器上运行时多层神经网络对应的多个第二输出数据,所述多个第一输出数据与所述第二输出数据一一对应;
将所述多个第一输出数据中每一第一输出数据与对应的第二输出数据进行匹配,得到多个匹配值;
确定所述多个匹配值中最小的匹配值对应的网络层为所述导致错误的错误层。
在一个可能的实现方式中,所述验证单元503还用于:
若所述在线模型在所述人工智能处理器上运行没有得到运行结果,确定所述人工智能处理器上在运行过程中出现错误的位置。
可以看出,本申请提供的技术方案,通过根据在线模型的模型文件获取在线模型的输入数据的规模,根据输入数据的规模生成验证输入数据,其中,验证输入数据的规模与所述在线模型的输入数据的规模一致,根据验证输入数据验证在线模型,如此,可随机生成在线模型所需的验证输入数据,无需提前准备输入数据集,能够便捷地对在线模型的前向传播进行验证。
应该理解,上述的装置实施例仅是示意性的,本披露的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
所述作为分离部件说明的单元或模块可以是物理上分开的,也可以不是物理上分开的。作为单元或模块说明的部件可以是物理单元,也可以不是物理单元,即可以位于一个装置中,或者也可以分布到多个装置上。本披露中实施例的方案可以根据实际的需要选择其中的部分或者全部单元来实现。
本申请实施例还提供了一种计算机存储介质,用于存储为上述图2-图4所示的计算机设备所用的计算机软件指令,其包含用于执行上述方法实施例所涉及的程序。通过执行存储的程序,可以实现神经网络在线模型的验证,提高验证速度。
本申请实施例还提供了一种计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述图2-图4所示的计算机设备所用的计算机软件指令,其包含用于执行上述方法实施例所涉及的程序。通过执行存储的程序,可以实现神经网络在线模型的验证,提高验证速度。
由上可见,本申请实施例提供神经网络在线模型的验证方法、装置、计算机设备和存储介质,该方法通过随机生成在线模型所需的验证输入数据,无需提前准备输入数据集能便捷地对在线模型的前向传播进行验证。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本申请实施例中集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述人工智能处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,所述存储器可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic Random Access Memory)、静态随机存取存储器SRAM(Static Random-AccessMemory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(Hybrid Memory Cube)等等。
所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本披露的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本披露各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本披露的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本披露各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
进一步地,依据以下条款可更好地理解前述内容:
例如,条款B1,一种神经网络在线模型的验证方法,所述方法包括:
根据所述在线模型的模型文件获取所述在线模型的输入数据的规模;
根据所述输入数据的规模生成验证输入数据,所述验证输入数据的规模与所述在线模型的输入数据的规模一致;
根据所述验证输入数据验证所述在线模型。
B2、根据B1所述的方法,所述根据所述验证输入数据验证所述在线模型,包括:
根据所述在线模型的权值文件获取所述在线模型的第一权值数据;
根据所述验证输入数据和所述第一权值数据验证所述在线模型。
所述权值信息包括权值矩阵大小;所述通过所述神经网络在线模型文件中的算子和各算子之间的连接关系确定所述神经网络在线模型的权值信息,包括:
通过正向遍历或反向遍历所述神经网络在线模型文件中的算子和各算子之间的连接关系,确定所述神经网络在线模型中的每层所对应的权值矩阵大小。
B3、根据B1所述的方法,所述根据所述验证输入数据验证所述在线模型,包括:
根据所述模型文件确定所述在线模型的权值信息;
根据所述权值信息生成所述在线模型的第二权值数据;
根据所述验证输入数据和所述第二权值数据验证所述在线模型。
B4、根据B2所述的方法,所述根据所述验证输入数据和所述第一权值数据验证所述在线模型,包括:
将所述验证输入数据和所述第一权值数据输入所述在线模型,分别在通用处理器和人工智能处理器上运行所述在线模型;
若所述在线模型在所述通用处理器上运行得到第一运行结果,所述在线模型在所述人工智能处理器上运行得到第二运行结果;且根据所述第一运行结果和所述第二运行结果确定的误差不满足预设误差范围,则确定所述在线模型中导致错误的错误层。
B5、根据B4所述的方法,所述确定所述在线模型中导致错误的错误层,包括:
获取所述在线模型在所述通用处理器上运行时多层神经网络对应的多个第一输出数据;以及,获取所述在线模型在所述人工智能处理器上运行时多层神经网络对应的多个第二输出数据,所述多个第一输出数据与所述第二输出数据一一对应;
将所述多个第一输出数据中每一第一输出数据与对应的第二输出数据进行匹配,得到多个匹配值;
确定所述多个匹配值中最小的匹配值对应的网络层为所述导致错误的错误层。
B6、根据B4或B5所述的方法,其特征在于,若所述在线模型在所述人工智能处理器上运行没有得到运行结果,确定所述人工智能处理器上在运行过程中出现错误的位置。
C1、一种神经网络在线模型的验证装置,所述装置包括:
获取单元,用于根据所述在线模型的模型文件获取所述在线模型的输入数据的规模;
处理单元,用于根据所述输入数据的规模生成验证输入数据,所述验证输入数据的规模与所述在线模型的输入数据的规模一致;
验证单元,用于根据所述验证输入数据验证所述在线模型。
C2、根据C1所述的装置,所述验证单元具体用于:
根据所述在线模型的权值文件获取所述在线模型的第一权值数据;
根据所述验证输入数据和所述第一权值数据验证所述在线模型。
C3、根据C1所述的装置,在所述根据所述验证输入数据验证所述在线模型方面,所述验证单元具体用于:
根据所述模型文件确定所述在线模型的权值信息;
根据所述权值信息生成所述在线模型的第二权值数据;
根据所述验证输入数据和所述第二权值数据验证所述在线模型。
C4、根据C2所述的装置,在所述根据所述验证输入数据和所述第一权值数据验证所述在线模型方面,所述验证单元具体用于:
将所述验证输入数据和所述第一权值数据输入所述在线模型,分别在通用处理器和人工智能处理器上运行所述在线模型;
若所述在线模型在所述通用处理器上运行得到第一运行结果,所述在线模型在所述人工智能处理器上运行得到第二运行结果;且根据所述第一运行结果和所述第二运行结果确定的误差不满足预设误差范围,则确定所述在线模型中导致错误的错误层。
C5、根据C4所述的装置,在所述确定所述在线模型中导致错误的错误层方面,所述验证单元具体用于:
获取所述在线模型在所述通用处理器上运行时多层神经网络对应的多个第一输出数据;以及,获取所述在线模型在所述人工智能处理器上运行时多层神经网络对应的多个第二输出数据,所述多个第一输出数据与所述第二输出数据一一对应;
将所述多个第一输出数据中每一第一输出数据与对应的第二输出数据进行匹配,得到多个匹配值;
确定所述多个匹配值中最小的匹配值对应的网络层为所述导致错误的错误层。
C6、根据C4或C5所述的装置,所述验证单元还用于:
若所述在线模型在所述人工智能处理器上运行没有得到运行结果,确定所述人工智能处理器上在运行过程中出现错误的位置。
D1、一种计算机设备,其特征在于,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述处理器包括通用处理器和人工智能处理器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求B1-B6任一项所述的方法。
E1、一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求B1-B6任一项所述的方法。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。