keras使用theano或者tensorflow作为后端时,都会预分配GPU内存,即先占满当前GPU的所有内存,而你使用nvidia-smi
显示的就是预分配的GPU内存,往往是满的。如果你不想要程序预分配内存,即需要多少内存就动态分配多少内存时,你就需要如下设置:
import tensorflow as tf
import keras.backend.tensorflow_backend as K
config = tf.ConfigProto()
config.gpu_options.allow_growth=True
sess = tf.Session(config=config)
K.set_session(sess)