TensorFlow框架This is probably because cuDNN failed to initialize 解决对策整理和验证
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.
写在前面:
环境:Tensorflow2.0 + Python3.6
当读者看到此问题时,一定大概率遇到上述报错的信息,首先出现这个问题很明显,就cuDNN出问题,大概率不是你的tensorflow代码写的问题,其实还可以精确点说就是我们电脑机器出问题了。
遇到这个问题,笔者也去找了很多博客,试了一些方法,总结一下出现这个问题的可能有:
1)很多博客说说cuda和cudnn不比配,或者tensorflow版本太高。
-->如果你之前就成功跑过简单的tensorflow训练,我觉得可以忽略这个吧。但是安装cuda和cudnn版本不匹配是出现问题,匹对版本可看:深度学习1-深度学习环境安装,有这一篇就够了!Anaconda-Python+Tensorflow2.0-GPU+Keras+Pycharm
2)电脑GPU性能太低,内存不够支持模型训练(就是显卡爆)。大概是这种情况!!!这个也要分两种:
一是电脑性能还可以,只是当前训练模型太复杂,导致显卡内存耗尽了;
二是电脑性能不太好,小型模型训练就爆炸了,这种性能低的机器就有处理是否开启GPU训练的设置了
对策:
一是电脑性能还可以,只是当前训练模型太复杂,导致显卡内存耗尽了:
解决方法:让模型按需取用GPU
# 防止Tensorflow运行GPU内存不足造成错误
from tensorflow.compat.v1 import ConfigProto
from tensorflow.compat.v1 import InteractiveSession
os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"
os.environ['CUDA_VISIBLE_DEVICES'] = "0,1" #选择哪一块gpu
config = ConfigProto()
config.allow_soft_placement=True #如果你指定的设备不存在,允许TF自动分配设备
config.gpu_options.per_process_gpu_memory_fraction=0.7 #分配百分之七十的显存给程序使用,避免内存溢出,可以自己调整
config.gpu_options.allow_growth = True #按需分配显存,这个比较重要
session = InteractiveSession(config=config)
二是电脑性能不太好,小型模型训练就爆炸了,这种性能低的机器就有处理是否开启GPU训练的设置了:
解决方法:直接使用CPU计算好了,不要开启GPU了,笔者就是这么悲催的电脑,应了那句深度学习训练前置比拼就是比电脑!!
os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"
os.environ['CUDA_VISIBLE_DEVICES'] = "-1" #选择哪一块gpu--->值为-1就是说不用GPU了,直接使用CPU计算
------------------------2020.4.20-----------
3) 感觉主要还是cuda和cudnn依赖环境没有做好,很多网络上的方法除了强制使用cpu外,其他的一些方法,比如按需分配GPU等策略,我都尝试过,反正我这里试过的都是不成功,看了很多定位,应该cuda和cudnn不匹配导致,那么就没有什么方法终极解决,或者我们在安装tensorflow时,自动给我们安装好匹配的cuda和cudnn么?
答案是有的,那就是直接通过anaconda 安装tensorflow,它在安装的时候,会自动给我们安装相对应的cuda+cudnn,完全不用我们去担心匹配问题,很香,至少通过这个方法我的gpu正常运行了
conda install tensorflow-gpu==2.0
详细可以查看我这篇安装博文,Tensorflow2.0-GPU深度学习环境安装,踩坑后整理一步到位安装总结篇.Win10+Anaconda+Tensorflow2.0-GPU+Pycharm,强烈建议Anaconda很香
---------------------------2020.4.20---------------------------------
更多推荐
所有评论(0)