Check failed: status == CUDNN_STATUS_SUCCESS (1 vs. 0) CUDNN_STATUS_NOT_INITIALIZED

最近在做onnx模型转换到caffe模型的工作,在onnx=>caffe的时候遇到如下错误:

网上搜索这个问题的解答很多,大多都是使用超级用户运行还有就是重新编译caffe(注释掉cudann),我实在docker环境下运行的本身就是root用户,重新编译caffe太繁琐,最后在https://github.com/MTlab/onnx2caffe/issues/25找到解决方法,亲测可行,在模型prototxt卷积参数部分添加engine: CAFFE即可,也就是修改模型的prototxt中的所有convolution_param参数添加engine: CAFFE,示例入下:

原始内容:

layer {
  name: "Conv_0"
  type: "Convolution"
  bottom: "input"
  top: "470"
  convolution_param {
    num_output: 64
    bias_term: true
    group: 1
    pad_h: 1
    pad_w: 1
    kernel_h: 3
    kernel_w: 3
    stride_h: 2
    stride_w: 2
    dilation: 1
  }
}

 修改后:

layer {
  name: "Conv_0"
  type: "Convolution"
  bottom: "input"
  top: "470"
  convolution_param {
    num_output: 64
    bias_term: true
    group: 1
    pad_h: 1
    pad_w: 1
    kernel_h: 3
    kernel_w: 3
    stride_h: 2
    stride_w: 2
    dilation: 1
    engine: CAFFE
  }
}

在进行caffemodel转换时采用修改后prototxt的即可。


版权声明:本文为weicao1990原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。