本人TensorFlow-gpu 2.0 电脑显卡1650ti。
有时候电脑明明gpu没任何占用,跑深度学习代码还是会出现以下这个报错:
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_1/convolution}}]] [[Mean/_369]] (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_1/convolution}}]] 0
successful operations. 0 derived errors ignored.
首先在代码前设置gpu
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0' #设置GPU
打开任务管理器–性能,就可以看到自己的GPU是哪个。
我这里是GPU 0,故设置GPU :os.environ[‘CUDA_VISIBLE_DEVICES’] = ‘0’
接着设置按需申请GPU显存占用
import tensorflow as tf
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.7 # 程序最多只能占用指定gpu70%的显存
config.gpu_options.allow_growth = True #程序按需申请内存
sess = tf.Session(config = config)
或者
import tensorflow as tf
import keras
config = tf.compat.v1.ConfigProto(allow_soft_placement=True)
config.gpu_options.per_process_gpu_memory_fraction = 0.3#设置gpu占用
tf.compat.v1.keras.backend.set_session(tf.compat.v1.Session(config=config))
可以根据自己的GPU性能,调节GPU占用显存,0.7→0.8、0.9、0.6、0.5…都试试,然后选择跑代码最稳定占用显存最高的就可以达到最大的效率了。