Toybrick

rknn-toolkit 导出模型的疑问

zuoshaobo

新手上路

积分
19
楼主
发表于 2019-4-11 10:49:20    查看: 10347|回复: 3 | [复制链接]    打印 | 只看该作者
模型导出的时候有些问题:
1.我是用的python rknn 导出的,导出的模型大小 如果do_quantization=False  是不是导出的模型就是fp32的?rknn的模型大写是不是和原始的模型大小很接近?
我用的tensorflow pb导出的模型只有原来的一半,这是什么原因?
2.我试了简单的两层模型,pc上inference的结果怎么和板子上推理的不一样?
回复

使用道具 举报

程子

中级会员

积分
386
沙发
发表于 2019-4-11 13:56:36 | 只看该作者
1. 我这边也有一样的结果,猜测此时会量化到float16。
2. 不一样的差别有多大?是否是精度降低引起的?
回复

使用道具 举报

zuoshaobo

新手上路

积分
19
板凳
 楼主| 发表于 2019-4-11 16:09:03 | 只看该作者
转换后的差别很大,几乎没有相同的
奇怪的是,例程里面mobilenet v1 我将do_quantization=改为false,转换前tflite大小是16.9M,转换后变成了58M,默认是fp32的话 体积怎么变大了?我自己的模型反而变小了,不解。
回复

使用道具 举报

jefferyzhang

版主

积分
13580
地板
发表于 2019-5-21 12:20:24 | 只看该作者
zuoshaobo 发表于 2019-4-11 16:09
转换后的差别很大,几乎没有相同的
奇怪的是,例程里面mobilenet v1 我将do_quantization=改为false,转换 ...

模型大小不用太过于纠结,开启precompile后会变得非常小。毕竟是芯片OP,层和各个框架软件定义的并不完全相同,要通过转换才能适配硬件运算。例如卷积+Relu或者max pooling会融合成一层,提高计算速度减少开销。但是框架软件为了层次清晰很多会拆分的非常细。

关于运算结果不同需要具体debug下,最好分一层一层来比对输出结果,看下哪一层转换后结果和预期不一致。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表