|
本帖最后由 kznpt 于 2021-5-26 23:38 编辑
由于网络中使用了conv3d,所以准备测试一下板子能否转换成功,主要的思路是先写一个只有一层3D卷积层的网络模型,然后对其权重进行初始化,将网络和参数保存为pth文件。接下来有两个思路,一种是将pth文件通过torch的jit包转换为pt文件,然后将pt文件转换为rknn文件(pth--->pt--->rknn);另一种思路是先将pt文件转换为onnx文件,再将onnx文件转换为rknn文件(pth--->onnx--->rknn)。 两种方案的第一步转换都成功了,但是在第二步的时候,都失败了。其中,pt--->rknn出现的错误是:
图片请看附件
可以看出,在3d卷积这一层出现了错误。由于使用了3D卷积,padding自然也是3维的,但是报错提示只支持2维的padding。
onnx--->rknn的报错为:
图片请看附件
可以看到,报错为列表索引越界,并且是在匹配3D卷积的时候报的这个错误。在报错的倒数第二行看到了filter_shape的关键字,因此推测是由于3D卷积的filter是[3, 3, 3],3维的形状,但是转换不支持3维的filter,因此报这个错误。
在以上实验中,所使用的rknn_toolkit版本为1.6,pytorch版本1.4、1.5、1.6均测试过,故排除版本影响。综合以上实验,基本可以认为目前版本对conv3D不太支持。当然由于学识有限,所做实验或有遗漏之处,所得到的结论可能也不是很严谨,希望论坛中有大佬可以指正。
附所测试的网络结构:图片请看附件
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|