怒江傈僳族自治州网站建设_网站建设公司_导航易用性_seo优化
2026/1/16 19:38:06 网站建设 项目流程

RKNN模型转换问题:what(): vector::_M_range_check: __n (which is 2) >= this->size() (which is 3)


场景:ONNX 转 RKNN 部署时报错


一、问题现象

在使用 RKNN-Toolkit2 将 ONNX 模型转换为 RKNN 模型时,出现如下错误:

D RKNN: [14:05:56.085] >>>>>> start: rknn::RKNNAllocateConvCachePass D RKNN: [14:05:56.085] <<<<<<<< end: rknn::RKNNAllocateConvCachePass D RKNN: [14:05:56.085] >>>>>> start: OpEmit terminate called after throwing an instance of 'std::out_of_range' what(): vector::_M_range_check: __n (which is 2) >= this->size() (which is 3) Aborted

经分析,该 ONNX 模型中包含Conv3D算子,其输入/输出张量维度为 5 维(NCDHW),属于 4 维以上的操作。


二、官方说明

根据 Rockchip 官方对 RKNN-Toolkit2 的说明(参考:https://github.com/airockchip/rknn-toolkit2):

RKNN 目前暂不支持 4 维以上的 OP。当模型存在 4 维以上算子(如 5 维或 6 维)时,会触发类似vector::_M_range_check的越界异常。

解决方法:可以手工将这些节点去掉。


三、结论

该错误是由于 RKNN 不支持 4 维以上算子(如 Conv3D)所致。官方提供的唯一解决方法是:手工移除模型中涉及 4 维以上维度的算子节点。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询