Toybrick

模型推理结果全是 0

qliu

注册会员

积分
120
发表于 2019-11-30 14:02:35    查看: 134|回复: 8 | [复制链接]    打印 | 显示全部楼层
把一个 tensorflow 模型转成 rknn 后(没有开启量化),在 rk3399pro 上 inference,输出的向量全是 0,这个可能是什么原因?
回复

使用道具 举报

jefferyzhang

超级版主

积分
2505
发表于 2019-11-30 19:09:31 | 显示全部楼层
一样debug,把输出层一层一层往回设置,找到和转换前输出一样的层,然后就知道是哪一层op造成输出错误。
然后可以报bug给我们。
回复

使用道具 举报

qliu

注册会员

积分
120
 楼主| 发表于 2019-12-1 14:40:31 | 显示全部楼层
我在调试之前报的不能转换的模型(见 http://t.rock-chips.com/forum.php?mod=viewthread&tid=1094&extra=page%3D2&page=1)。我通过 netron 打开 tensorflow 的模型,选取不同的节点作为 output,来比较 tensorflow 和 rk1808 的 inference 输出结果。在绿色圈的位置,tf 和 rk 的输出还是一样的,但是在红色圈的位置上,rk 输出的全是 0,跟 tf 不一致。所以我想出问题的应该是两个红叉处或者是红圈处。希望你们能看下哪些 op 有问题,能否给写修改网络的建议?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

jefferyzhang

超级版主

积分
2505
发表于 2019-12-2 09:52:07 | 显示全部楼层
你的这个transpose节点没有上节点?他是一个input么?如果是的话你没给他一个输入,岂不是进来数据就全0了?
回复

使用道具 举报

qliu

注册会员

积分
120
 楼主| 发表于 2019-12-2 10:31:39 | 显示全部楼层
jefferyzhang 发表于 2019-12-2 09:52
你的这个transpose节点没有上节点?他是一个input么?如果是的话你没给他一个输入,岂不是进来数据就全0了 ...

这个 transpose 的输入是两个常量
回复

使用道具 举报

jefferyzhang

超级版主

积分
2505
发表于 2019-12-2 10:59:18 | 显示全部楼层
qliu 发表于 2019-12-2 10:31
这个 transpose 的输入是两个常量

常量的话要看你freeze了没有,没有freeze的你也是要作为模型输入给进去的,没给就是0或者不可预估的数。。。
回复

使用道具 举报

qliu

注册会员

积分
120
 楼主| 发表于 2019-12-2 11:09:18 | 显示全部楼层
jefferyzhang 发表于 2019-12-2 10:59
常量的话要看你freeze了没有,没有freeze的你也是要作为模型输入给进去的,没给就是0或者不可预估的数。 ...

是 freeze 过的啊,在 netron 里面看到的是常量。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

qliu

注册会员

积分
120
 楼主| 发表于 2019-12-2 19:50:45 | 显示全部楼层
问题解决了,MatMul 这个地方应该是对应于一个 Dense 操作,我们换成了一个 1 x 1 的 convolution 就对了:

outputs = Dense(n_classes, activation='softmax', name='out')(c9)
换成了
outputs = Conv2D(n_classes, (1, 1), activation='softmax', name='out')(c9)
回复

使用道具 举报

hzxuguozhi

新手上路

积分
22
发表于 前天 11:07 | 显示全部楼层
受教了,pytorch训练的模型 需要onnx再转换的吧。。。
回复

使用道具 举报

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

本版积分规则

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


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