解决 Check failed: status == CUDNN_STATUS_SUCCESS (4 vs. 0) CUDNN_STATUS_INTERNAL_ERROR 问题
1、原因
深度可分离卷积中group
参数大于1,导致torch模型在转caffe时出错。
2、解决方法一:手动修改prototxt文件
参看onnx模型转caffe模型中的第一部分,这个报错发生之后,会有prototxt文件生成,编辑prototxt
文件,在卷积层中添加engine: CAFFE
字段。之后把源码中的生成prototxt文件的代码注释掉,再次运行转换代码,即可生成caffemodel
文件。
该方法需要频繁修改代码、注释、反注释。
3、解决方法二:修改源码,一步到位
找到 _operators.py
文件中的卷积层转换的代码,即 _convert_conv
函数,然后在 layer=myf( )
中添加 engine=1
字段。此后再转换模型时都会在卷积层中自动添加 engine: CAFFE
。
此处可以增加对group
数值的判断,当 group>1
时再添加engine=1
,当 group=1
时不添加,不过修改与否影响不大。