tensorflow出现Failed to get convolution algorithm, cuDNN failed to initialize
阅读原文时间:2023年07月08日阅读:1

网上大多的教程是说tensorflow的版本过高,或者说cuda和cudnn的版本不对,需要降级,但这样会很麻烦!!!

以下值得推荐!!!

解决方法一:在代码前加上下面的代码

from tensorflow.compat.v1 import ConfigProto

from tensorflow.compat.v1 import InteractiveSession

config = ConfigProto()

config.gpu_options.allow_growth = True

session = InteractiveSession(config=config)

解决方法二:添加下面两行

import os

os.environ['CUDA_VISIBLE_DEVICES'] = '/gpu:0'

或者

添加

import os

os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"

os.environ['CUDA_VISIBLE_DEVICES'] = "0,1"//选择哪一块gpu,如果是-1,就是调用cpu

config = tf.ConfigProto()//对session进行参数配置

config.allow_soft_placement=True : 如果你指定的设备不存在,允许TF自动分配设备

config.gpu_options.per_process_gpu_memory_fraction=0.7//分配百分之七十的显存给程序使用,避免内存溢出,可以自己调整

config.gpu_options.allow_growth = True//按需分配显存,这个比较重要

session = tf.Session(config=config)

解决方法三:TensorFlow GPU版出现ResourceExhaustedError:OOM错误的问题

一是、将图片尺寸改小,小到占用的内存比显存。

二是、不使用GPU进行预测,只使用CPU预测,因为一般CPU内存要大于显存的。但装的又是GPU版的TensorFlow,所以需要在预测程序进行更改。

程序在前两行加入下面代码:

import os

os.environ[``"CUDA_VISIBLE_DEVICES"``] = ""

引号里填的是GPU的序号,不填的时候代表不使用GPU。