一、报错内容
tensorflow.python.framework.errors_impl.UnknownError: 2 root error(s) found.
(0) Unknown: 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_24/convolution}}]]
(1) Unknown: 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_24/convolution}}]]
[[conv2d_46/truediv/_417]]
0 successful operations.
0 derived errors ignored.
二、解决方案
import keras
import tensorflow as tf
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "1"#因为是单GPU训练,所以需要加上这一行代码
config = tf.ConfigProto()#t配置tf.Session的运算方式
config.gpu_options.allow_growth = True # TensorFlow按需分配显存
config.gpu_options.per_process_gpu_memory_fraction = 0.5 # 指定显存分配比例
keras.backend.tensorflow_backend.set_session(tf.Session(config=config))
以上就是最终方案。
下面是解决的过程:
看了很多解决方案,解决方案可大致分为三类:
(1)查看tensorflow+cuda+cudnn安装版本是否一致,下面这篇文章里有教怎么查看是否一致。
Tensorflow、CUDA、cuDNN详细的下载安装过程_cudnn下载_机智的小神仙儿的博客-优快云博客
首先进入Tensorflow官网:在 Windows 环境中从源代码构建 | TensorFlow
找到windows对应的版本的模块,ctrl+F输入tensorflow

(2)tensorflow按需分配显存
import keras
import tensorflow as tf
config = tf.ConfigProto()#t配置tf.Session的运算方式
config.gpu_options.allow_growth = True # TensorFlow按需分配显存
config.gpu_options.per_process_gpu_memory_fraction = 0.5 # 指定显存分配比例
keras.backend.tensorflow_backend.set_session(tf.Session(config=config))
这个类似的来源太多了,就先不标注了。
这个方案我试了,但还是没解决问题。
(3)由于单GPU训练,因此加上一行代码
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "1"
所以最后把(2)和(3)结合了一下,成功继续训练。
不过,这篇文章有人评论说是加上这行代码会变成cpu?我不太确定,有大佬知道的可以留言交流一下。
对我来说,最后可算是继续训练了/撒花
记录一下运行的又一个坎。
本文详细记录了解决tensorflow-gpu运行时遇到的UnknownError问题的过程。尝试了检查tensorflow、CUDA和cuDNN版本一致性,分配显存及添加特定代码等方法,最终成功继续训练。尽管有人认为某代码可能使训练转为CPU,但对作者有效。
1万+





