ppyolo 使用的算子不符合 paddle API 定义 ,导致paddle-lite不能处理
Created by: edimetia3d
你好,我参照 PPYOLO_README下载了r18vd模型文件
通过
python tools/export_model.py -c configs/ppyolo/ppyolo.yml -o weights=https://paddlemodels.bj.bcebos.com/object_detection/ppyolo.pdparams
将模型导出为paddle模型之后发现,在模型计算的最后阶段,会使用很多elementwise_div操作,用x.shape [1,1,1,1]的tensor做x/y的除法来对y取倒数,例如 tmp_5这个值就是这样计算出来的.
参考Paddle的API文档 https://www.paddlepaddle.org.cn/documentation/docs/zh/2.0-alpha/api_cn/paddle_cn/elementwise_div_cn.html#elementwise-div 可以知道这样的操作是不符合API的. Paddle API先定了X必须是较大的一个tensor
尽管paddle-fluid可以得到正确的计算结果, 但是paddle-lite目前是严格按照API规范来实现的,所以不能得到正确的计算结果.