问题解决:Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR

79 篇文章 1 订阅
51 篇文章 6 订阅

这几天用一个tensorflow版的目标检测算法进行推理的时候出现了错误以下错误(取了一部分):

2020-03-15 22:00:40.933209: E tensorflow/stream_executor/cuda/cuda_dnn.cc:334] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
2020-03-15 22:00:40.952977: E tensorflow/stream_executor/cuda/cuda_dnn.cc:334] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
Traceback (most recent call last):
  File "/home/smy/.local/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1334, in _do_call
    return fn(*args)
  File "/home/smy/.local/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1319, in _run_fn
    options, feed_dict, fetch_list, target_list, run_metadata)
  File "/home/smy/.local/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1407, in _call_tf_sessionrun
    run_metadata)
tensorflow.python.framework.errors_impl.UnknownError: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.
	 [[{{node conv2d_0_1/convolution}}]]
	 [[{{node loc_branch_concat_1/concat}}]]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "tenforflow_infer.py", line 143, in <module>
    inference(img, show_result=True, target_shape=(260, 260))
  File "tenforflow_infer.py", line 53, in inference
    y_bboxes_output, y_cls_output = tf_inference(sess, graph, image_exp)
  File "/home/smy/FaceMaskDetection/load_model/tensorflow_loader.py", line 38, in tf_inference
    feed_dict={image_tensor: img_arr})
  File "/home/smy/.local/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 929, in run
    run_metadata_ptr)
  File "/home/smy/.local/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1152, in _run
    feed_dict_tensor, options, run_metadata)
  File "/home/smy/.local/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1328, in _do_run
    run_metadata)
  File "/home/smy/.local/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1348, in _do_call
……

解决方法是在代码前面加上以下代码:

from tensorflow import ConfigProto
from tensorflow import InteractiveSession

config = ConfigProto()
config.gpu_options.allow_growth = True
session = InteractiveSession(config=config)

也可以这样添加,作用相同,但调用了keras,不推荐,当然,如果你用的正是keras以下代码比上面代码效率更高:

import os
import tensorflow as tf
from keras.backend.tensorflow_backend import set_session

os.environ["CUDA_VISIBLE_DEVICES"] = "0"  # 这一句根据需要添加,作用是指定GPU

config = tf.ConfigProto()
config.gpu_options.allow_growth = True  
set_session(tf.Session(config=config))

注意如果是tensorflow2,用以下代码:

from tensorflow.compat.v1 import ConfigProto
from tensorflow.compat.v1 import InteractiveSession

config = ConfigProto()
config.gpu_options.allow_growth = True
session = InteractiveSession(config=config)

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值