问题排查了两个月,终于定位到具体位置了,麻烦各位大佬帮忙看一下。-
同一个BIN文件,C++无法推理出正确结果,Py可以推理出正确结果。目前能够保证C++的输入和Py的输入是一样的。
-
系统软件版本:
-
C++使用API版本:[BPU_PLAT]BPU Platform Version(1.3.1) [HBRT] set log level as 0. version = 3.14.5 [DNN] Runtime version = 1.9.7_(3.14.5 HBRT)
-
Py输出的版本:[EasyDNN]EasyDNN version: 0.1.1 [BPU_PLAT]BPU Platform Version(1.3.1)! [HBRT] set log level as 0. version = 3.14.5 [DNN] Runtime version = 1.9.7_(3.14.5 HBRT)
-
复现概率:百分百复现
-
我已经将推理前的数据保存为npz文件,跟py api的输入进行了对比,确保了输入是没问题的。
下图是C++代码
下图是Python代码-
下面是对比差异:-
相关代码我也放在附件里了,包含C++和Python代码,已经网络模型和测试图像。-
编译C++相关的CMake代码块为:-
set(BIN inter_unet_standalong)
add_executable(${BIN} inter_unet_standalong.cpp)
set_property(TARGET ${BIN} PROPERTY INTERPROCEDURAL_OPTIMIZATION True)
target_link_libraries(${BIN}
-lpthread -lrt -dl
-ldnn -lcnn_intf -lhbrt_bernoulli_aarch64
-lglog -lgflags
-lopencv_core -lopencv_highgui -lopencv_imgproc
-lopencv_imgcodecs cnpy)