问题如下:
UnknownError (see above for traceback): 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_1/convolution (defined at C:\Users\admin\anaconda3\lib\site-packages\keras\backend\tensorflow_backend.py:3717) ]]
[[node boolean_mask_5/GatherV2 (defined at D:\codeHub\Object-Detection-and-Tracking\OneStage\yolo\deep_sort_yolov3\yolo3\model.py:184) ]]
电脑环境
cuda 10.1
cuDNN 7
Tensorflow 1.13.1
其实刚一开始看到这个问题我就知道一定是cuda的版本的问题了,搜了一下发现大家都说是TensorFlow版本的问题
说让安装TensorFlow1.8.
我对这个的方法是排斥的,
原因两点
1.不能遇到问题就想着降版本,这样的话官方发布新版本就没意义了。
2.另外一个就是TensorFlow官网上写的很清楚,不同版本的TensorFlow对应什么版本的cuDNN和CUDA,CUDA 10的情况下你降级到TensorFlow1.8,即使是现在这个问题可以解决,以后依然会出现其他问题的(因为TensorFlow1.8对于的是CUDA 9)大概率你又要重新安装CUDA
那么我就想是不是有其他什么办法解决这个问题的
在medium上看到了这个回答
回答链接
上面说是GPU内存的问题,那大概了就是这个了
解决办法
import tensorflow as tf
from keras.backend.tensorflow_backend import set_session
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess = tf.Session(config=config)
set_session(sess)
实际上就是把GPU按需分配
但是发现又出现了一个问题
raise RuntimeError('The Session graph is empty. Add operations to the '
RuntimeError: The Session graph is empty. Add operations to the graph before calling run().
内存还是不够,我的垃圾GTX1650 只有4G显存…
解决方法:
import tensorflow as tf
import keras
from keras.backend.tensorflow_backend import set_session
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess = tf.Session(config=config)
set_session(sess)
keras.backend.clear_session()
原因
开头开启的用来限制显存的session由于没有清理,用keras里的clear_session()清理一下session就OK了。
总之一点,不要一遇到问题就想着降版本了,这个方法太傻了
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)