话不多说,让我们看看遇到的报错以及解决办法。
在解决问题之前,先确保我们的是否在使用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())
如过不是,那么请看您是否遇到下面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.
最离谱的是,居然说是cudnn的问题!当然遇到这种问题也可能是cpu内存不足也会这样的报错,在终端输入nvidia-smi,看gpu是否被占满了,如果是请参考这位博主的
至于具体的tensorflow2.x和keras对应关系,我在网上未找到具体的表格。各位如果没有遇到如上的报错,可以先跳过。
2.版本问题确认之后,如果还是无法运行,我们可以进行检查问题所在
nvidia-smi
nvcc -V
1.再次确认,这里nvidia-smi的版本一定要>=nvcc- V的!如果你下载了多个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,重新下载,具体卸载安装请看以下博主的(简单全面):
如上报错是我遇到的比较棘手的报错了(在我遇到的报错里,其他报错,我在网上都比较好找到解答的。),如果还有什么问题可以在评论区和我讨论呀。
新手上路,如果有写错的地方,还清多多指教。