|
正在把 torch 模型 通过 torch->onnx->rknn 做转化
pytorch 模型的输入是一个 list, 由 5 个 tensor 组成,形状如下:
[(1, 64, 64, 64), # 262144
(1, 64, 32, 32), # 65536
(1, 64, 16, 16), # 16384
(1, 64, 8, 8), # 4096
(1, 64, 4, 4)] # 1024
转换成 onnx 模型后可以正常推理,且输出一致
可以转换成 rknn 模型,但推理时报错如下:
--> Running model
W RKNNAPI: warning: inputs[0] expected input len is 16384, but actual len is 262144!
W RKNNAPI: warning: inputs[1] expected input len is 1024, but actual len is 65536!
E RKNNAPI: rknn_input_set, inputs[2].buf wrong, buf = 0x2909b790, size = 65536 (min_size = 262144)!
E Catch exception when setting inputs.
E Traceback (most recent call last):
E File "rknn/api/rknn_base.py", line 1109, in rknn.api.rknn_base.RKNNBase.inference
E File "rknn/api/rknn_base.py", line 998, in rknn.api.rknn_base.RKNNBase.set_inputs
E File "rknn/api/rknn_runtime.py", line 422, in rknn.api.rknn_runtime.RKNNRuntime.set_inputs
E Exception: Set inputs failed. error code: RKNN_ERR_PARAM_INVALID
Traceback (most recent call last):
File "Regressor_experimanet_rknn_from_onnx_runtime.py", line 52, in <module>
print('rknn_outputs length: ', len(rknn_outputs))
TypeError: object of type 'NoneType' has no len()
很显然 inputs[0], inputs[1], inputs[2] 的形状和pytorch 模型的输入形状不一致
而且如果给 rknn 模型传入一个 tensor 的话,还会报错说 inputs 需要有5个
所以有两个问题
1. 如何能得到 rknn 模型要求的输入的形状
2. 多输入的情况下, 如何满足 nhwc 的要求
谢谢
真的非常迷茫,研究转换好久了,还是一直有各种问题,不知道是不是方法不对。。。
|
|