一种仿真实现方法、神经网络编译器以及计算机可读存储介质转让专利

申请号 : CN202111653883.2

文献号 : CN114004352B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 朱旭东吴春选

申请人 : 杭州雄迈集成电路技术股份有限公司

摘要 :

本申请公开了一种仿真实现方法、神经网络编译器以及计算机可读存储介质,涉及深度学习技术领域,其中,仿真实现方法包括以下步骤:量化集图片通过神经网络编译器对神经网络模型进行量化生成可执行文件,万人测试集通过神经网络编译器生成第一输入数据、第一定点特征文件和浮点特征文件,若精度表格的统计结果符合预设的精度范围,则读取可执行文件和第一输入数据进行神经网络模型的仿真。有益效果在于实现多个不同类型的神经网络模型的批量仿真,确保移植到芯片或FPGA的正确性,针对不同类型的神经网络模型逐层进行仿真,覆盖了更多的仿真验证点,防止芯片流片的风险,同时用于统计神经网络模型的精度表格进行了全面的精度验证。

权利要求 :

1.一种仿真实现方法,其特征在于,包括以下步骤:构建神经网络编译器,用于接收量化集图片、多个不同类型的神经网络模型以及万人测试集,所述神经网络编译器进行精度验证后,对所述神经网络模型逐层进行仿真;

所述量化集图片通过所述神经网络编译器对所述神经网络模型进行量化生成可执行文件,所述万人测试集通过所述神经网络编译器生成第一输入数据、第一定点特征文件和浮点特征文件;

对比所述第一定点特征文件和所述浮点特征文件,输出用于统计所述神经网络模型的精度表格;

若所述精度表格的统计结果符合预设的精度范围,则读取所述可执行文件和所述第一输入数据进行所述神经网络模型的仿真;

其中,量化集图片为不同类型的神经网络模型以及不同场景下采集的图片,万人测试集为图片集合。

2.如权利要求1所述的一种仿真实现方法,其特征在于,还包括步骤:搭建所述神经网络编译器的环境,安装所述神经网络编译器,测试所述神经网络编译器是否安装成功;

其中,所述神经网络编译器的搭建环境设置为与仿真系统相同的操作系统。

3.如权利要求1所述的一种仿真实现方法,其特征在于,所述量化集图片通过所述神经网络编译器对所述神经网络模型进行量化生成可执行文件,具体包括以下步骤:准备不同类型的神经网络模型以及不同场景下的量化集图片;

运行所述神经网络编译器,根据所述量化集图片对所述神经网络模型进行量化生成所述可执行文件;

其中,所述可执行文件包括神经网络名标识、输入层的层标识、中间层的层标识、输出层的层标识、量化后的权重值、量化后的偏移值、层操作名、层参数信息、层关联信息和层内存信息。

4.如权利要求1所述的一种仿真实现方法,其特征在于,还包括步骤:预设所述神经网络模型的数量,设置初始的循环次数为0,判断循环次数是否符合预设的所述神经网络模型的数量;

若循环次数不符合预设的所述神经网络模型的数量,则所述量化集图片通过所述神经网络编译器对所述神经网络模型进行量化生成所述可执行文件,所述万人测试集通过所述神经网络编译器生成所述第一输入数据、所述第一定点特征文件和所述浮点特征文件;

若循环次数符合预设的所述神经网络模型的数量,则结束流程。

5.如权利要求1所述的一种仿真实现方法,其特征在于,所述万人测试集通过所述神经网络编译器生成第一输入数据、第一定点特征文件和浮点特征文件,具体包括以下步骤:根据不同的所述神经网络模型准备不同的万人测试集;

所述万人测试集通过缩放函数生成网络分辨率大小的第一输入数据,对所述万人测试集进行仿真生成第一定点特征文件和浮点特征文件。

6.如权利要求1所述的一种仿真实现方法,其特征在于,对比所述第一定点特征文件和所述浮点特征文件,输出用于统计所述神经网络模型的精度表格,具体包括以下步骤:所述浮点特征文件包含第一浮点特征数据,将所述第一定点特征文件中的定点特征数据转成换浮点特征数据,生成第二浮点特征数据;

对比所述第一浮点特征数据和所述第二浮点特征数据的相似度,若相似度在预设的变量内,则满足精度需求;若相似度不在预设的变量内,则不满足精度需求;

将所述第一浮点特征数据和所述第二浮点特征数据的相似度统计结果以表格的形式输出。

7.如权利要求1所述的一种仿真实现方法,其特征在于,若所述精度表格的统计结果符合预设的精度范围,则读取所述可执行文件和所述第一输入数据进行所述神经网络模型的仿真,具体包括以下步骤:

对所述精度表格进行计数,计数的统计结果需符合预设的精度范围;

读取所述可执行文件,根据所述可执行文件对硬件进行配置,读取所述第一输入数据,根据所述第一输入数据启动对所述神经网络模型的仿真,生成第二定点特征文件;

对比所述第一定点特征文件和所述第二定点特征文件,若不相同,则保存所述第二定点特征文件中的错误数据。

8.如权利要求1所述的一种仿真实现方法,其特征在于,还包括步骤:建立第一文件夹,在第一文件夹下自动生成第一主文件夹,所述第一主文件夹用于存放所述可执行文件;

在第一文件夹下自动生成第一副文件夹,所述第一副文件夹用于存放所述第一定点特征文件;

在第一文件夹下自动生成输入数据文件夹,所述输入数据文件夹用于存放所述第一输入数据。

9.如权利要求3所述的一种仿真实现方法,其特征在于,准备不同类型的神经网络模型和量化集图片,具体包括以下步骤:建立第二文件夹,在第二文件夹下生成第二主文件夹,所述第二主文件夹用于存放所述不同类型的神经网络模型、所述量化集图片和所述浮点特征文件。

10.如权利要求5所述的一种仿真实现方法,其特征在于,根据不同的所述神经网络模型准备不同的万人测试集,具体包括以下步骤:建立第二文件夹,在所述第二文件夹下生成第二主文件夹,在所述第二主文件夹下建立第二副文件夹,所述第二副文件夹用于存放所述万人测试集。

11.一种神经网络编译器,其特征在于,应用于如权利要求1所述的仿真实现方法,包括:依次连接的网络解析模组、网络量化模组、网络合并模组、网络存储模组和网络前向执行模组;

网络解析模组,用于接收量化集图片、多个不同类型的神经网络模型以及万人测试集,逐层解析并重构神经网络模型的结构,至少获取所述神经网络模型的输入层、输出层以及中间层的层操作名、层参数信息和层关联信息中的一种;

网络量化模组,用于根据重构后的神经网络模型的结构生成偏移值、转换值以及将浮点型的权重值转化为定点型的权重值;

网络合并模组,用于合并所述神经网络模型中卷积层、池化层和激活层的流水操作指令;

网络存储模组,用于将所述网络解析模组、所述网络量化模组和所述网络合并模组中的数据存储生成可执行文件;

网络前向执行模组,用于所述万人测试集通过所述网络前向执行模组生成所述第一输入数据、所述第一定点特征文件和所述浮点特征文件,对比所述第一定点特征文件和所述浮点特征文件,输出用于统计所述神经网络模型的精度表格;

其中,量化集图片为不同类型的神经网络模型以及不同场景下采集的图片,万人测试集为图片集合。

12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机指令,所述计算机指令被处理器执行时实现如权利要求1至10中任一项所述的仿真实现方法的步骤。

说明书 :

一种仿真实现方法、神经网络编译器以及计算机可读存储

介质

技术领域

[0001] 本申请属于深度学习技术领域,更具体地说,本申请涉及一种仿真实现方法、神经网络编译器以及计算机可读存储介质。

背景技术

[0002] 随着互联网技术的发展,搜集到的海量数据为深度学习训练提供足够多的场景,以卷积神经网络为主的智能算法的发展依托于海量数据,在图像分类以及物体识别等领
域,智能算法的精度已经超过了人类的识别精度。
[0003] 神经网络算法想要在安防领域落地,需要将服务器上训练好的算法模型,解析成嵌入式芯片可识别的计算机语言,以方便安防摄像头的安装监控。
[0004] 将卷积神经网络算法在CPU  (Central Processing Unit,中央处理器)或GPU(Graphics Processing Unit,图形处理器)上实现的过程,移植到FPGA(Programmable 
Gate Array,现场可编程门阵列)或者芯片中实现,以方便便携式携带与安装,CPU中实现的
算力无法满足目前的需求,且GPU的实现方式无法应用到嵌入式设备中,又采用python语言
或C++语言进行32bit浮点的前向实现过程,因此为了降低芯片面积来降低成本以及满足精
度不丢失,需要量化成8bit定点来实现,FPGA或芯片采用verilog(HDL是一种硬件描述语
言)实现,因此需要对整个神经网络模型进行仿真,并验证精度是否满足需求。
[0005] 目前的技术方案具有以下缺陷:第一,只能仿真一个神经网络模型的各个中间层,前期只能人工检索出每层信息并配置成文件,不能进行万人测试集的精度测试,更加没有
仿真不同数据集的范围分布。第二,当更换其他类型的神经网络模型或者不同场景的测试
集时,不能确保芯片或FPGA运行的正确性,增加了芯片流片成本,而且没有量化神经网络,
采用浮点乘法器,导致运行性能降低。

发明内容

[0006] 本申请的目的在于提供一种仿真实现方法、神经网络编译器以及计算机可读存储介质,以解决上述现有技术中存在的只能仿真一个神经网络模型的各个中间层且不能进行
万人测试集的精度测试的技术问题。
[0007] 为实现上述技术目的,本申请采用的技术方案如下:
[0008] 一种仿真实现方法,包括以下步骤:
[0009] 构建神经网络编译器,用于接收量化集图片、多个不同类型的神经网络模型以及万人测试集,所述神经网络编译器进行精度验证后,对所述神经网络模型逐层进行仿真;
[0010] 所述量化集图片通过所述神经网络编译器对所述神经网络模型进行量化生成可执行文件,所述万人测试集通过所述神经网络编译器生成第一输入数据、第一定点特征文
件和浮点特征文件;
[0011] 对比所述第一定点特征文件和所述浮点特征文件,输出用于统计所述神经网络模型的精度表格;
[0012] 若所述精度表格的统计结果符合预设的精度范围,则读取所述可执行文件和所述第一输入数据进行所述神经网络模型的仿真。
[0013] 优选地,还包括步骤:
[0014] 搭建所述神经网络编译器的环境,安装所述神经网络编译器,测试所述神经网络编译器是否安装成功;
[0015] 其中,所述神经网络编译器的搭建环境设置为与仿真系统相同的操作系统。
[0016] 优选地,所述量化集图片通过所述神经网络编译器对所述神经网络模型进行量化生成可执行文件,具体包括以下步骤:
[0017] 准备不同类型的神经网络模型以及不同场景下的量化集图片;
[0018] 运行所述神经网络编译器,根据所述量化集图片对所述神经网络模型进行量化生成所述可执行文件;
[0019] 其中,所述可执行文件包括神经网络名标识、输入层的层标识、中间层的层标识、输出层的层标识、量化后的权重值、量化后的偏移值、层操作名、层参数信息、层关联信息和
层内存信息。
[0020] 优选地,还包括步骤:
[0021] 预设所述神经网络模型的数量,设置初始的循环次数为0,判断循环次数是否符合预设的所述神经网络模型的数量;
[0022] 若循环次数不符合预设的所述神经网络模型的数量,则所述量化集图片通过所述神经网络编译器对所述神经网络模型进行量化生成所述可执行文件,所述万人测试集通过
所述神经网络编译器生成所述第一输入数据、所述第一定点特征文件和所述浮点特征文
件;
[0023] 若循环次数符合预设的所述神经网络模型的数量,则结束流程。
[0024] 优选地,所述万人测试集通过所述神经网络编译器生成第一输入数据、第一定点特征文件和浮点特征文件,具体包括以下步骤:
[0025] 根据不同的所述神经网络模型准备不同的万人测试集;
[0026] 所述万人测试集通过缩放函数生成网络分辨率大小的第一输入数据,对所述万人测试集进行仿真生成第一定点特征文件和浮点特征文件。
[0027] 优选地,对比所述第一定点特征文件和所述浮点特征文件,输出用于统计所述神经网络模型的精度表格,具体包括以下步骤:
[0028] 所述浮点特征文件包含第一浮点特征数据,将所述第一定点特征文件中的定点特征数据转成换浮点特征数据,生成第二浮点特征数据;
[0029] 对比所述第一浮点特征数据和所述第二浮点特征数据的相似度,若相似度在预设的变量内,则满足精度需求;若相似度不在预设的变量内,则不满足精度需求;
[0030] 将所述第一浮点特征数据和所述第二浮点特征数据的相似度统计结果以表格的形式输出。
[0031] 优选地,若所述精度表格的统计结果符合预设的精度范围,则读取所述可执行文件和所述第一输入数据进行所述神经网络模型的仿真,具体包括以下步骤:
[0032] 对所述精度表格进行计数,计数的统计结果需符合预设的精度范围;
[0033] 读取所述可执行文件,根据所述可执行文件对硬件进行配置,读取所述第一输入数据,根据所述第一输入数据启动对所述神经网络模型的仿真,生成第二定点特征文件;
[0034] 对比所述第一定点特征文件和所述第二定点特征文件,若不相同,则保存所述第二定点特征文件中的错误数据。
[0035] 优选地,还包括步骤:
[0036] 建立第一文件夹,在第一文件夹下自动生成第一主文件夹,所述第一主文件夹用于存放所述可执行文件;
[0037] 在第一文件夹下自动生成第一副文件夹,所述第一副文件夹用于存放所述第一定点特征文件;
[0038] 在第一文件夹下自动生成输入数据文件夹,所述输入数据文件夹用于存放所述第一输入数据。
[0039] 优选地,准备不同类型的神经网络模型和量化集图片,具体包括以下步骤:
[0040] 建立第二文件夹,在第二文件夹下生成第二主文件夹,所述第二主文件夹用于存放所述不同类型的神经网络模型、所述量化集图片和所述浮点特征文件。
[0041] 优选地,根据不同的所述神经网络模型准备不同的万人测试集,具体包括以下步骤:
[0042] 在所述第二主文件夹下建立第二副文件夹,所述第二副文件夹用于存放所述万人测试集。
[0043] 一种神经网络编译器,应用于上述的仿真实现方法,包括:依次连接的网络解析模组、网络量化模组、网络合并模组、网络存储模组和网络前向执行模组;
[0044] 网络解析模组,用于接收量化集图片、多个不同类型的神经网络模型以及万人测试集,逐层解析并重构神经网络模型的结构,至少获取所述神经网络模型的输入层、输出层
以及中间层的层操作名、层参数信息和层关联信息中的一种;
[0045] 网络量化模组,用于根据重构后的神经网络模型生成偏移值、转换值以及将浮点型的权重值转化为定点型的权重值;
[0046] 网络合并模组,用于合并所述神经网络模型中卷积层、池化层和激活层的流水操作指令;
[0047] 网络存储模组,用于将所述网络解析模组、所述网络量化模组和所述网络合并模组中的数据存储生成可执行文件;
[0048] 网络前向执行模组,用于所述万人测试集通过所述网络前向执行模组生成所述第一输入数据、所述第一定点特征文件和所述浮点特征文件,对比所述第一定点特征文件和
所述浮点特征文件,输出用于统计所述神经网络模型的精度表格。
[0049] 一种计算机可读存储介质,计算机可读存储介质上存储有计算机指令,所述计算机指令被处理器执行时实现上述所述方法的步骤。
[0050] 本申请提供的有益效果在于:
[0051] 1、本申请量化集图片通过神经网络编译器对不同的神经网络模型进行量化生成不同的可执行文件,若精度表格的统计结果符合预设的精度范围,则读取可执行文件和第
一输入数据进行神经网络模型的仿真。实现多个不同类型的神经网络模型的批量仿真,神
经网络模型的仿真考虑了各种边缘化仿真,确保移植到芯片或FPGA的正确性,通过可执行
文件对硬件进行配置,针对不同类型的神经网络模型逐层进行仿真,覆盖了更多的仿真验
证点,防止芯片流片的风险,节约了成本,提高了仿真效率,同时用于统计神经网络模型的
精度表格进行了全面的精度验证。
[0052] 2、本申请预设神经网络模型的数量,设置初始的循环次数为0,判断循环次数是否符合预设的神经网络模型的数量。通过判断神经网络模型的数量,节省生成可执行文件、第
一输入数据、第一定点特征文件和浮点特征文件的时间,避免神经网络模型在前向过程中
的量化耗时。生成的不同数据通过预存的路径自动存储在不同的文件夹下,为实现多种类
型的神经网络模型的仿真提供相应的数据,简化仿真流程以及加快仿真效率。

附图说明

[0053] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些
实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些
附图获得其他的附图。
[0054] 图1是实施例1中仿真实现方法的流程图。

具体实施方式

[0055] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是
本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施
例的组件可以以各种不同的配置来布置和设计。
[0056] 因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通
技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范
围。
[0057] 实施例1:
[0058] 如图1所示,本实施例包括一种仿真实现方法,包括以下步骤:
[0059] 构建神经网络编译器,用于接收量化集图片、多个不同类型的神经网络模型以及万人测试集,神经网络编译器进行精度验证后,对神经网络模型逐层进行仿真。
[0060] 量化集图片通过神经网络编译器对神经网络模型进行量化生成可执行文件,万人测试集通过神经网络编译器生成第一输入数据、第一定点特征文件和浮点特征文件。
[0061] 对比第一定点特征文件和浮点特征文件,输出用于统计神经网络模型的精度表格;若精度表格的统计结果符合预设的精度范围,则读取可执行文件和第一输入数据进行
神经网络模型的仿真。
[0062] 实现多个不同类型的神经网络模型的批量仿真,神经网络模型的仿真考虑了各种边缘化仿真,确保移植到芯片或FPGA的正确性,通过可执行文件对硬件进行配置,针对不同
类型的神经网络模型逐层进行仿真,覆盖了更多的仿真验证点,防止芯片流片的风险,节约
了成本,提高了仿真效率,同时用于统计神经网络模型的精度表格进行了全面的精度验证。
[0063] 还包括步骤:搭建神经网络编译器的环境,安装神经网络编译器,测试神经网络编译器是否安装成功,其中,神经网络编译器的搭建环境设置为与仿真系统相同的操作系统。
具体的,将神经网络编译器打包成whl格式,whl格式是一种压缩文件的格式,方便在操作系
统下安装测试。
[0064] 量化集图片通过神经网络编译器对神经网络模型进行量化生成可执行文件,具体包括以下步骤:准备不同类型的神经网络模型以及不同场景下的量化集图片。
[0065] 运行神经网络编译器,根据量化集图片对神经网络模型进行量化生成可执行文件。其中,可执行文件包括神经网络名标识、输入层的层标识、中间层的层标识、输出层的层
标识、量化后的权重值、量化后的偏移值、层操作名、层参数信息、层关联信息和层内存信
息。
[0066] 具体的,神经网络编译器的网络解析模组逐层解析并重构原始神经网络模型的结构,根据重构后的神经网络模型生成偏移值、转换值以及将浮点型的权重值转化为定点型
的权重值。网络合并模组和网络量化模组同时运行,合并神经网络模型中卷积层、池化层和
激活层中的流水操作指令。网络存储模组将网络解析模组、网络量化模组和网络合并模组
运行量化后的数据生成可执行文件。
[0067] 生成偏移值的公式如下:
[0068] 公式一:
[0069] 其中, 表示偏移值, 表述浮点型的最大权重值, 表示浮点型的最小权重值,bw表示转换的位宽,在本实施例中,当前支持12bit的位宽。
[0070] 生成转换值的公式如下:
[0071] 公式二:
[0072] 其中, 表示转换值,max属于系统库的内置函数表示取最大值,bw表示转换的位宽,log2表示系统库的内置函数, 表示偏移值,ceil属于系统库的内置函数表示向上取
整。
[0073] 将浮点型的权重值转化为定点型的权重值,浮点特征数据转定点特征数据的公式表示如下:
[0074] 公式三:
[0075] 其中,X表示定点特征数据,在本实施例中可以为定点型的权重值, 表示浮点特征数据,在本实施例中可以为浮点型的权重值,round表示四舍五入的系统库内置函数,
表示转换值, 表示偏移值。
[0076] 具体的,层操作名至少包括卷积、反卷积、池化、全连接、裁解、连接、点加、点乘、归一化和激活层操作中的一项。层参数信息至少包括卷积核尺寸、卷积核跨度、分组、填充值、
是否带激活层、量化后的权重值和量化后的偏移值中的一项。层关联信息至少包括当前层
的输入层操作名、层参数信息、当前层的输出层操作名和层参数信息中的一项。层内存信息
至少包括当前层的内存大小以及是否复用其他层内存中的一项。
[0077] 具体的,不同类型的神经网络模型包括检测网络、识别网络以及分类网络等,不同场景下的量化集图片的数量至少包括50张。
[0078] 还包括步骤:预设神经网络模型的数量,设置初始的循环次数为0,判断循环次数是否符合预设的神经网络模型的数量。
[0079] 若循环次数不符合预设的神经网络模型的数量,则量化集图片通过神经网络编译器对神经网络模型进行量化生成可执行文件,万人测试集通过神经网络编译器生成第一输
入数据、第一定点特征文件和浮点特征文件。
[0080] 若循环次数符合预设的神经网络模型的数量,则结束流程。每仿真完一个可执行文件,将循环次数加1。
[0081] 通过判断神经网络模型的数量,节省生成可执行文件、第一输入数据、第一定点特征文件和浮点特征文件的时间,避免神经网络模型在前向过程中的量化耗时。
[0082] 万人测试集通过神经网络编译器生成第一输入数据、第一定点特征文件和浮点特征文件,具体包括以下步骤:
[0083] 根据不同的神经网络模型准备不同的万人测试集,万人测试集通过缩放函数生成网络分辨率大小的第一输入数据,对万人测试集进行仿真生成第一定点特征文件和浮点特
征文件。
[0084] 具体的,万人测试集是图片集合,万人测试集的数量为一万张图片,万人测试集通过网络前向执行模组生成第一输入数据、第一定点特征文件和浮点特征文件。
[0085] 还包括步骤:建立第一文件夹,在第一文件夹下自动生成第一主文件夹,第一主文件夹用于存放可执行文件。
[0086] 在第一文件夹下自动生成第一副文件夹,第一副文件夹用于存放第一定点特征文件。在第一文件夹下自动生成输入数据文件夹,输入数据文件夹用于存放第一输入数据。
[0087] 准备不同类型的神经网络模型和量化集图片,具体包括以下步骤:建立第二文件夹,在第二文件夹下生成第二主文件夹,第二主文件夹用于存放不同类型的神经网络模型、
量化集图片和浮点特征文件。
[0088] 根据不同的神经网络模型准备不同的万人测试集,具体包括以下步骤:在第二主文件夹下建立第二副文件夹,第二副文件夹用于存放万人测试集。
[0089] 具体的,在当前路径下,建立第一文件夹和第二文件夹,第一文件夹的文件名定义为SPE_PATH1,第二文件夹的文件名定义为SPE_PATH2,在SPE_PATH2文件下,建立一个以神
经网络名命名的第二主文件夹存放GPU生成的神经网络模型与量化集图片,在第二主文件
夹下建立第二副文件夹存放万人测试集。
[0090] 每生成一个可执行文件,神经网络编译器在SPE_PATH1文件下根据解析的神经网络名生成一个以神经网络名命名的第二主文件夹,存放神经网络编译器生成的可执行文
件。
[0091] 自动生成SPE_PATH1文件下的输入数据文件夹,在本实施例中定义神经网络编译器解析出的神经网络名为resnet, 则生成的输入数据文件夹的文件名定义为SPE_PATH1/
resnet/data_input,存放万人测试集通过缩放函数生成网络分辨率大小的第一输入数据,
为方便仿真,采用十六进制格式,每个数据一行排列方式。
[0092] 自动生成SPE_PATH1文件下的第一副文件夹,解析出的神经网络名为resnet,网络层名为conv1_1,层序号为1,则生成的第一副文件夹的文件名定义为SPE_PATH1/resnet/
conv1_1_1,用于存放对万人测试集进行仿真时中间层和输出层生成的第一定点特征文件,
以方便仿真核对数据的正确性,采用十六进制格式,每个数据一行排列方式。
[0093] 生成的不同数据通过预存的路径自动存储在不同的文件夹下,为实现多种类型的神经网络模型的仿真提供相应的数据,简化仿真流程以及加快仿真效率。
[0094] 还包括步骤:预设可执行文件的数量,判断第一主文件夹下的可执行文件数量是否超过预设可执行文件的数量。
[0095] 若第一主文件夹下的可执行文件数量未超过预设可执行文件的数量,则神经网络编译器对万人测试集进行仿真生成第一定点特征文件。
[0096] 若第一主文件夹下的可执行文件数量超过预设可执行文件的数量,则结束神经网络编译器对万人测试集进行仿真的流程。
[0097] 通过判断第一主文件夹下的可执行文件数量,确定万人测试集是否已经仿真完成,若仿真完成,则结束仿真流程,提高仿真效率。
[0098] 对比第一定点特征文件和浮点特征文件,输出用于统计神经网络模型的精度表格,具体包括以下步骤:
[0099] 浮点特征文件包含第一浮点特征数据,将第一定点特征文件中的定点特征数据转成换浮点特征数据,生成第二浮点特征数据;
[0100] 对比第一浮点特征数据和第二浮点特征数据的相似度,若相似度在预设的变量内,则满足精度需求;若相似度不在预设的变量内,则不满足精度需求;
[0101] 将第一浮点特征数据和第二浮点特征数据的相似度统计结果以表格的形式输出。
[0102] 具体的,将第一定点特征文件中的定点特征数据通过转换公式转成换浮点特征数据,转换公式如下:
[0103] 公式四:
[0104] 其中, 表示浮点特征数据,在本实施例中可以为第二浮点特征数据,X表示定点特征数据,在本实施例中可以为第一定点特征文件中的定点特征数据, 表示偏移
值, 表示转换值。
[0105] 具体的,对比第一浮点特征数据和第二浮点特征数据的相似度,相似度距离公式如下:
[0106] 公式五:
[0107] 其中,n表示浮点特征数据的总个数, 表示第一浮点特征数据, 表示第二浮点特征数据,即公式四中 的值。 表示距离的相似度,越接近1表明精度越高。
[0108] 在本实施例中,通过对神经网络模型相对应的万人测试集进行测试,预设的变量设置为0.8的相似度距离,对比第一浮点特征数据和第二浮点特征数据的相似度,即统计万
人测试集中每张图片的相似度,当相似度距离大于或等于0.8时表明满足精度需求并进行
计数,统计每个神经网络模型的计数数据在万人测试集中的占比,输出用于统计神经网络
模型的精度表格。可以直观的看到精度表格的统计结果,查看硬件设计的需求是否满足精
度要求。
[0109] 若精度表格的统计结果符合预设的精度范围,则读取可执行文件和第一输入数据进行神经网络模型的仿真,具体包括以下步骤:
[0110] 对精度表格进行计数,计数的统计结果需符合预设的精度范围。读取可执行文件,根据可执行文件对硬件进行配置,读取第一输入数据,根据第一输入数据启动对神经网络
模型的仿真,生成第二定点特征文件。
[0111] 对比第一定点特征文件和第二定点特征文件,若不相同,则保存第二定点特征文件中的错误数据。
[0112] 通过第二定点特征文件中的错误数据方便定位仿真出现的问题,可以提高仿真效率,仿真的覆盖面更加广泛。
[0113] 实施例2:
[0114] 本实施例包括一种神经网络编译器,应用于实施例1的仿真实现方法,包括:依次连接的网络解析模组、网络量化模组、网络合并模组、网络存储模组和网络前向执行模组。
[0115] 网络解析模组,用于接收量化集图片、多个不同类型的神经网络模型以及万人测试集,逐层解析并重构神经网络模型的结构,至少获取神经网络模型的输入层、输出层以及
中间层的层操作名、层参数信息和层关联信息中的一种。
[0116] 具体的,网络解析模组将原始神经网络模型的结构逐层进行解析,至少获取神经网络模型的输入层、输出层以及中间层的层操作名、层参数信息和层关联信息中的一种,解
析后重构内部顺序执行的结构,且重新定义内部相关网络层的数据结构,网络层包括卷积
层、池化层和激活层,将层执行先后顺序、层操作类型、层操作名、层参数信息以及层关联信
息等内容填充到内部相关网络层的数据结构中。
[0117] 网络量化模组,用于根据重构后的神经网络模型生成偏移值、转换值以及将浮点型的权重值转化为定点型的权重值。
[0118] 具体的,将存放地址空间的浮点特征数据转换成硬件支持的数据格式,且计算出转换值,减少硬件计算量与乘法器的数量。
[0119] 网络合并模组,用于合并神经网络模型中卷积层、池化层和激活层的流水操作指令。
[0120] 具体的,根据减少外部存储器带宽原则,优化卷积层、池化层和激活层内部的流水操作指令,对卷积层、池化层和激活层进行等价变换优化,并对内部数据结构再次优化合
并,减少资源消耗,提高执行效率。减少内部存储器与外面存储器的数据交互,从而提高带
宽利用率,将处于同一个流水级的层进行合并,主要合并层为卷积层和池化层。
[0121] 网络存储模组,用于将网络解析模组、网络量化模组和网络合并模组中的数据存储生成可执行文件。
[0122] 网络前向执行模组,用于万人测试集通过网络前向执行模组生成第一输入数据、第一定点特征文件和浮点特征文件,对比第一定点特征文件和浮点特征文件,输出用于统
计神经网络模型的精度表格。
[0123] 具体的,标准化部分采用开源的深度学习架构执行,以确保正确的对比标准,仿真部分保持网络前向逻辑与硬件执行网络逻辑一致,以确保数据与硬件仿真结果一致性。
[0124] 相关之处参见实施例1的部分说明即可。
[0125] 实施例3:
[0126] 一种计算机可读存储介质,计算机可读存储介质上存储有计算机指令,计算机指令被处理器执行时实现实施例2中方法的步骤。
[0127] 本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实
施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机
可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产
品的形式。
[0128] 本发明是参照根据本发明的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程
和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指
令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以
产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生
用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的
装置。
[0129] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包
括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方
框或多个方框中指定的功能。
[0130] 这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在
计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程
和/或方框图一个方框或多个方框中指定的功能的步骤。
[0131] 需要说明的是:
[0132] 说明书中提到的“一个实施例”或“实施例”意指结合实施例描述的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,说明书通篇各个地方出现的短语 “一个
实施例”或“实施例”并不一定均指同一个实施例。
[0133] 尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优
选实施例以及落入本申请范围的所有变更和修改。
[0134] 此外,需要说明的是,本说明书中所描述的具体实施例,其零、部件的形状、所取名称等可以不同。凡依本申请专利构思所述的构造、特征及原理所做的等效或简单变化,均包
括于本申请专利的保护范围内。本申请所属技术领域的技术人员可以对所描述的具体实施
例做各种各样的修改或补充或采用类似的方式替代,只要不偏离本申请的结构或者超越本
权利要求书所定义的范围,均应属于本申请的保护范围。