最近想自己重头训练一个模型,然后压缩量化尝试在maixpy上运行下。但是在模型转换的时候遇到了很多问题。
模型就是最简单的Flatten mnist模型,分类网络采用的是LeNet5。
首先就是ncc的问题,ncc0.1转换出来的是kmodelv3,但是ncc0.1实在太难用了,最开始报了一大堆错误,大概的意思是不支持Flatten层,github上的issue找到了一个解答说把Tensorflow2.3换成2.0解决了。我重新anaconda安装了一个tensorflow2.0之后重新训练了一下,再次压缩的时候,它又出现了这个问题:

大概意思是不支持conv2d函数,我…github上的issue给出的解答是把ncc换成0.2版本,然后我又把ncc换成0.2版本,然后顺利地压缩通过了:

但是kmodelv4在使用的时候又出现了一大堆问题,首先是kmodelv4支持和ide支持没有同时存在的固件,可能是因为kmodelv4比较大把😂,自己去maixhub上编译了一个,虽然链接上写的支持kmodelv4

但是实际上好像还是不能使用,就只好使用不带ide界面的。串口发送过去,然后遇到了一个问题:

我找了好久也没用找到这个函数的使用示例,Maixpy_scripts里面也没用,只在maixpy源码里面找到一句这个:

意思应该是kmodelv4需要手动设置模型输出,根据小佬鼠的提示yolo输出是(task,1,7,7,125),应该就是nhwc的分布,因为yolo输出的格式应该是7*7的网格,每个网格输出offset和confidence,但是yolo输出的dim是4,mnist只是一个分类网络,输出dim应该只有2(1×10),我尝试了一下使用kpu.set_outputs(task,1,1,1,10),但是还是报相同的错。所以现在也没有解决这个问题,只好到社区来求助下各位大佬,感谢。