ONNX目标检测模型C++部署:输出维度[-1,4]异常问题排查
ONNX模型C++部署:输出张量维度获取异常排查
你当前的代码直接用std::cout输出std::vector<int64_t>类型的outputDims,这是导致输出异常的核心原因——C++标准库并没有为std::vector提供默认的流输出重载,所以你看到的不是实际的维度数值,而是容器的内存地址或乱码内容。
修复代码示例
把输出逻辑改成遍历vector逐个打印维度值:
std::vector<int64_t> outputDims = outputTensorInfo.GetShape(); std::cout << "Output Dimensions: "; for (const auto dim : outputDims) { std::cout << dim << " "; } std::cout << std::endl;
额外排查方向
如果修复输出后,维度仍然不符合预期(比如还是出现-1或者错误数值),需要确认:
- 模型是否已经完成推理:动态维度(比如
-1代表的动态batch size)只有在执行推理、传入实际输入后才会被填充为具体数值,仅加载模型时获取的可能是静态定义的维度模板。 - 输入张量的维度是否匹配模型要求:如果输入的batch size、通道数等不符合模型定义,可能导致输出维度计算异常。
内容的提问来源于stack exchange,提问作者Hyeonseop Lim
相关产品推荐
相关产品推荐

