keras上运行Tensorflow-gpu的艰难历程(最新版,更新中)

话不多说,让我们看看遇到的报错以及解决办法。

在解决问题之前,先确保我们的是否在使用tensorflow-gpu版本,代码如下

import os
from tensorflow.python.client import device_lib
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '99'
if __name__ == '__main__':
    print(device_lib.list_local_devices())

keras上运行Tensorflow-gpu的艰难历程(最新版,更新中)_第1张图片

 如过不是,那么请看您是否遇到下面1中遇到的报错情况(我就遇到了,难受)

1.首先,当然是常见的cuda+cudnn+tensorflow+keras之间的版本对应问题!!!不管遇到什么样的报错,一定要先确定版本对应(前车之鉴)。

cuda与cudnn到如下链接查询:

cuDNN Archive | NVIDIA Developer

其次,cuda和tensorflow到如下链接查询:

Build from source  |  TensorFlow

最后是tensorflow和keras的对应关系:

  如果是tensorflow是1.x版本的:那么请参考这位博主的:tensorflow和keras版本对应关系 - 知乎

  如果是tensorflow是2.x版本的,虽然网上有人说已经可以兼容了,但是我发现不行。我的tensorflow是2.2的,但是如果使用keras2.3.1,会报错!!!后面我使用keras2.4.0就可以了。

各位可以尝试提高keras版本(一点点就行,太高也报错。。。)

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.

keras上运行Tensorflow-gpu的艰难历程(最新版,更新中)_第2张图片

 最离谱的是,居然说是cudnn的问题!当然遇到这种问题也可能是cpu内存不足也会这样的报错,在终端输入nvidia-smi,看gpu是否被占满了,如果是请参考这位博主的:“Failed to get convolution algorithm. This is probably because cuDNN failed to initialize”错误的解决办法_史丹利复合田的博客-CSDN博客

至于具体的tensorflow2.x和keras对应关系,我在网上未找到具体的表格。各位如果没有遇到如上的报错,可以先跳过。

2.版本问题确认之后,如果还是无法运行,我们可以进行检查问题所在

nvidia-smi
nvcc -V

1.再次确认,这里nvidia-smi的版本一定要>=nvcc- V的!如果你下载了多个cuda版本,请参考以下博主的链接(还有注意看该博客的评论):ubuntu 安装多个CUDA版本并可以随时切换_yinxingtianxia的博客-CSDN博客_安装多个cuda

2.确认tensorflow-gpu是否启用

python
>>>import tensorflow as tf
>>>tf.__version__
2.2.0
>>>tf.test.is_gpu_available()
True

看是否返回True,如果是False,那么就是这里出现了问题,并且出现了以下报错(类似的)

Could not load dynamic library 'libcudart.so.11.0' ?

很可能就是你的cudnn配置有问题,请查看配置(在终端输入):

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

如果报错或者版本不是你下载的,可以尝试卸载cudnn,重新下载,具体卸载安装请看以下博主的(简单全面):ubuntu18.04中安装和卸载cuDNN - 努力奋斗的阿贝拉 - 博客园

如上报错是我遇到的比较棘手的报错了(在我遇到的报错里,其他报错,我在网上都比较好找到解答的。),如果还有什么问题可以在评论区和我讨论呀。

新手上路,如果有写错的地方,还清多多指教。

参考文章:

tensorflow2.x使用cuda10.2(非常简单)_YouAreLion的博客-CSDN博客_cuda10.2 tensorflow

ubuntu 安装多个CUDA版本并可以随时切换_yinxingtianxia的博客-CSDN博客_安装多个cuda

“Failed to get convolution algorithm. This is probably because cuDNN failed to initialize”错误的解决办法_史丹利复合田的博客-CSDN博客
 

你可能感兴趣的:(tensorflow,keras,深度学习,python)