PS:要转载请注明出处,本人版权所有。

PS: 这个只是基于《我自己》的理解,

如果和你的原则及想法相冲突,请谅解,勿喷。

前置说明

  本文作为本人csdn blog的主站的备份。(BlogID=085)

  本文发布于 2019-06-08 10:44:29,现用MarkDown+图床做备份更新。blog原图已丢失,使用csdn所存的图进行更新。(BlogID=085)

环境说明

  无

背景


  本文建立在上文环境配置的基础上继续。(上文链接:https://blog.csdn.net/u011728480/article/details/91125581)

  本文将会以一个实例来进行分析。同时本文的教程都是建立在《HiSVP 开发指南.pdf》基础上的。

NNIE 模型生成


NNIE 新建工程

  File 新建NNIE工程,选择MinGW GCC 空工程即可。

NNIE Mapper 配置文件建立

  File 新建nnie mapper配置文件,如下图:

  双击这个mapper文件,你可以进入配置页面,如下图,其相关的参数和选项要按照《HiSVP 开发指南.pdf》的NNIE mapper配置文件参数详解。

  这里有几个地方要注意一下:

  • is_simulation 是生成功能仿真或者指令仿真模型。指令仿真模型就是最终到板子上的模型。
  • batch_num 对于forward来说,一般都是一张图像,这里选1就行了。
  • sparse_rate 先0不影响正常输出。
  • data_type 这里你一定要去看文档说明,弄清楚你的网络需要输入的是什么数据类型,有些在网络里面做了归一化,这里选U8,如果网络前面做归一化,这里就要选S32,其他类型,看文档。
NNIE 模型生成

  在把NNIE Mapper配置配好了后,点击如下图的按钮即可生成对应的wk文件。

  我这里就根据is_simulation生成了两种模型,功能仿真模型输出内容多。指令仿真模型输出基本保持和板子上是一致的。

NNIE 模型仿真工程搭建

  这里,我们就不要做重复造轮子的工作,直接导入官方sample_simulator,然后在其基础上魔改就行了。

魔改切入点

  在src目录,打开main.cpp,简单分析一波,根据我的网络特点,直接选择分类网络例子(svpsampleclassification.cpp),复制为我的cpp和hpp。

  其核心调用在仿真里面就两个函数:

  • HI_MPI_SVP_NNIE_Forward 网络forward
  • HI_MPI_SVP_NNIE_Query forward状态查询

  其余的都是在准备数据和查看数据。这里你可以参考svpsampleclassification.cpp进行简化魔改即可。

  需要注意的是:HI_MPI_SVP_NNIE_Forward 的api参考文档中,有关于输入和输出数据的规格说明,别弄错了。

  魔改好了,直接打印出最后一层的输出。

每一层的数据保存

  这种方法适用于后续的向量对比,用于查看你生成的模型对不对。在sim_out的目录下有一个nnie_sim.ini配置文件,里面可以设置一些不错的参数。

  双击后,可以界面设置:

  这里必须勾上第一个,第二个建议勾上,这样跑的快点。第一个勾上后,会输出每一层的输出。

  然后运行你魔改的程序,在sim_out下会出现如下图的内容(我这里我两种模型的仿真都做过了,所以有两种每一层网络的输出):

网络标准输出


  点这个,配置参数,然后输出你的caffe模型的每一层数据,用作后续的向量分析。

  这里没什么注意的,自己配置好相关的内容即可。

  这里执行后会在output dir 输出每一层caffe模型的forward输出

  如下图:

向量对比


  向量对比有什么作用,相比经常接触这方面的人会有感受,就是指你的模型输出对不对。比如:caffe 的输出,nnie的输出到底能否对上,hisi提供了这样的一个工具。

  一个选择caffe输出,一个选择仿真输出。对比即可。双击可以查看每一层的所有输出数据,这里我就直接看最后一层。

  从最后一层的数据对比来看,基本偏差不大,因为后续还要继续对数据进行处理。这样的话,就证明了我的nnie模型至少现在看来没什么问题了。

后记


  注意事项

  如果你的输出和标准caffe输出差的非常远,有70%的可能性是你输入数据不一致导致的,你要和算法他们详细沟通,并打印输入数据,经过实际对比,看看哪里有什么问题。

  不一致的原因很多,一般来说就是图像通道对不上,预处理不一致等等。

参考文献


打赏、订阅、收藏、丢香蕉、硬币,请关注公众号(攻城狮的搬砖之路)

PS: 请尊重原创,不喜勿喷。

PS: 要转载请注明出处,本人版权所有。

PS: 有问题请留言,看到后我会第一时间回复。

HiSi 3516CV500 NNIE(Neural Network Inference Engine) 摸鱼记录(2) --- 模型生成及模型仿真(实例分析)的更多相关文章

  1. [Javascript摸鱼记录] 关于js简单字符删减替换增加插入追加前中后处理

    以前总是怕死js如其名,能让我入坑润不出来,然后最近被迫写点静态html,又要用到数值运算处理, 于是又开启了「好几十个标签栏解决一个问题」的"探索路程",顺便记录一下摸鱼结果希望 ...

  2. Sony深度学习框架 - Neural Network Console - 教程(1)- 原来深度学习可以如此简单

    “什么情况!?居然不是黑色背景+白色文字的命令行.对,今天要介绍的是一个拥有白嫩的用户界面的深度学习框架.” 人工智能.神经网络.深度学习,这些概念近年已经涌入每个人的生活中,我想很多人早就按捺不住想 ...

  3. (转)The Neural Network Zoo

    转自:http://www.asimovinstitute.org/neural-network-zoo/ THE NEURAL NETWORK ZOO POSTED ON SEPTEMBER 14, ...

  4. 论文笔记之:Progressive Neural Network Google DeepMind

    Progressive Neural Network  Google DeepMind 摘要:学习去解决任务的复杂序列 --- 结合 transfer (迁移),并且避免 catastrophic f ...

  5. 深度神经网络如何看待你,论自拍What a Deep Neural Network thinks about your #selfie

    Convolutional Neural Networks are great: they recognize things, places and people in your personal p ...

  6. Recurrent Neural Network[survey]

    0.引言 我们发现传统的(如前向网络等)非循环的NN都是假设样本之间无依赖关系(至少时间和顺序上是无依赖关系),而许多学习任务却都涉及到处理序列数据,如image captioning,speech ...

  7. (zhuan) Recurrent Neural Network

    Recurrent Neural Network 2016年07月01日  Deep learning  Deep learning 字数:24235   this blog from: http:/ ...

  8. Graph Embedding Review:Graph Neural Network(GNN)综述

    作者简介: 吴天龙  香侬科技researcher 公众号(suanfarensheng) 导言 图(graph)是一个非常常用的数据结构,现实世界中很多很多任务可以描述为图问题,比如社交网络,蛋白体 ...

  9. 梳理检测论文-Refinement Neural Network

    Single-Shot Refinement Neural Network for Object Detection 目录 1. motivation 2. RefineDet 解析(Network ...

  10. 【DKNN】Distilling the Knowledge in a Neural Network 第一次提出神经网络的知识蒸馏概念

    原文链接 小样本学习与智能前沿 . 在这个公众号后台回复"DKNN",即可获得课件电子资源. 文章已经表明,对于将知识从整体模型或高度正则化的大型模型转换为较小的蒸馏模型,蒸馏非常 ...

随机推荐

  1. Hadoop的stop-all无法关闭集群原因及解决方案

    问题现象:在服务器上长时间运行hadoop之后,如果运行stop-all.sh,会发现: [root@node1 sbin]# stop-all.shThis script is Deprecated ...

  2. 开源.NetCore通用工具库Xmtool使用连载 - 发送邮件篇

    [Github源码] <上一篇> 介绍了Xmtool工具库中的随机值类库,今天我们继续为大家介绍其中的邮件发送类库. 发送邮件是系统开发中经常需要的功能,广泛应用于消息通知.异常告警.内容 ...

  3. 一键跳转组件所在的文件与具体行数,提升排查效率,分享几个 React Developer Tools 使用小技巧

    壹 ❀ 引 React Developer Tools对于很多开发同学可能就是一个检查组件props传递对不对的工具,但事实上它的功能比我们想象的强大.比如我们日常排查问题,常常会遇到想知道某个页面某 ...

  4. NC16513 无关(relationship)

    题目链接 题目 题目描述 若一个集合A内所有的元素都不是正整数N的因数,则称N与集合A无关. 给出一个含有k个元素的集合A={a1,a2,a3,...,ak},求区间[L,R]内与A无关的正整数的个数 ...

  5. Java设计模式-解释器模式Interpreter

    介绍 在编译原理中,一个算术表达式通过词法分析器形成词法单元,而后这些词法单元再通过语法分析器构建语法 分析树,最终形成一颗抽象的语法分析树.这里的词法分析器和语法分析器都可以看做是解释器 解释器模式 ...

  6. 微信小程序云开发项目-个人待办事项-04【我的】模块开发

    上一篇: 微信小程序云开发项目-个人待办事项-03[主页]模块开发 https://blog.csdn.net/IndexMan/article/details/124538576 模块开发步骤 本篇 ...

  7. 微信小程序引入iconfont实现添加自定义颜色图标

    说明 最近搞微信小程序,需要添加一些图标,发现引入iconfont还是有几个步骤,就记录下来分享以下. 以下配置方法支持自定义颜色的. 操作步骤 1. 在iconfont网站挑选自己需要的图标,添加到 ...

  8. Oracle代码封装工具和DBMS_DDL包的使用

    The WRAP Utility and the DBMS_DDL Package On occasion it is necessary to hide (obfuscate) your PL/SQ ...

  9. Spring boot 2.0启动自动执行sql语句

    项目地址:https://gitee.com/indexman/spring_boot_in_action 1.准备sql文件 将department.sql放到resources路径下 /* Nav ...

  10. weblogic CVE-2024-20931分析

    weblogic 12.2.1.4.0安装 我的环境:ubuntu 22.04 + weblogic 12.2.1.4.0 + jdk8(注:weblogic不支持OpenJDK) jdk下载安装:h ...