当前位置: 首页 > 科技观察

Hi3861使用NNOM实现人工智能神经网络MNIST_0

时间:2023-03-11 21:21:44 科技观察

了解更多开源请访问:51CTO开源基础软件社区https://ost.51cto.com1、什么是NNOM,请查看上一篇:https://ost.51cto.com/posts/122872,什么是MNIST每当我们学习一门新的语言时,所有官方的入门教程都会提供一个典型的例子——“HelloWorld”。在机器学习中,入门示例称为MNIST。MNIST是一个简单的视觉计算数据集,它是像下面这样的手写数字图片:MNIST经常被用作分类任务的入门数据库。在这个简单的例子中,我们也用它来试验数据分类。3、移植NNOM库的移植编译方法前面已经讲解过了。$(通配符$(LIBPATH)/nnom/src/backends/*.c)\$(通配符$(LIBPATH)/nnom/src/core/*.c)\$(通配符$(LIBPATH)/nnom/src/layers/*.c)\同时移植了mnist-simple下的两个.h文件。#include"lib/nnom/examples/mnist-simple/image.h"#include"lib/nnom/examples/mnist-simple/weights.h"核心函数。constcharcodeLib[]="@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\\|()1{}[]?-_+~<>i!lI;:,\"^`'。";voidprint_img(int8_t*buf){for(inty=0;y<28;y++){for(intx=0;x<28;x++){intindex=69/127.0*(127-buf[y*28+x]);if(index>69)index=69;if(index<0)index=0;DEBUG_printf("%c",codeLib[index]);DEBUG_printf("%c",codeLib[index]);}DEBUG_printf("\n");}}//使用“image.h”中的图像和先前创建的模型进行简单测试。voidmnist(intindex){uint32_ttick,ti??me;uint32_tpredic_label;floatprob;DEBUG_printf("\npredictionstart..\n");tick=hi_get_milli_seconds();//复制数据并做预测memcpy(nnom_input_data,(int8_t*)&img[index][0],784);nnom_predict(model,&predic_label,&prob);time=hi_get_milli_seconds()-tick;//打印原始图像到c控制台print_img((int8_t*)&img[index][0]);DEBUG_printf("时间:%dtick\n",time);DEBUG_printf("真实标签:%d\n",label[index]);DEBUG_printf("预测标签:%d\n",predic_label);DEBUG_printf("概率:%d%%\n",(int)(prob*100));}voidnn_stat(){model_stat(model);printf("TotalMemorycost(NetworkandNNoM):%d\n",nnom_mem_stat());}4.我在Micropython下使用MNIST。其实主要的功能如下。大家可以自己移植测试STATICmp_obj_tmachine_ai_nnom_test(mp_obj_tself_in,mp_obj_tdata_in){intnum=mp_obj_get_int(data_in);//创建并编译模型model=nnom_model_create();//模拟运行model_run(model);mnist(数量);nn_stat();返回mp_const_none;}不同的num值,代表待识别数字的候选字节图。比如8,存储的字节对应这个。由于手写数字输入不方便,只能以这种字符形式进行测试。5.总结这是一个比较简单的例子,对系统的要求比较低,识别时间也很短。同时,您也可以自己训练模型进行分析。但这部分不是本文的重点。有兴趣的同学可以自行去github上深入学习。下一篇我们将针对KWS的功能测试,实现实时音频输入关键字识别demo的移植和演示。了解更多开源信息,请访问:51CTO开源基础软件社区https://ost.51cto.com。

最新推荐
猜你喜欢