如何清除 Tensorflow-Keras GPU 内存?
How to clearing Tensorflow-Keras GPU memory?
我在 for 循环中拟合模型,但出现错误,提示我的 GPU 内存已满。我在 Anaconda Spyder IDE 中使用 Keras。我的 GPU 是 Asus GTX 1060 6gb。
我也使用过如下代码:K.clear_session()
、gc.collect()
、tf.reset_default_graph()
、del custom_model,但其中 none 行得通。
GPU 属性显示 98% 的内存已满:
除 numba.cuda.close()
外,没有刷新 GPU 内存,但不允许我再次使用我的 GPU。清除它的唯一方法是重新启动内核并重新运行我的代码。
我正在寻找任何脚本代码来添加我的代码,允许我在 for 循环中使用我的代码并在每个循环中清除 GPU。
在函数中完成模型创建和训练部分,然后使用子流程完成主要工作。训练完成后,子进程将终止,GPU 内存将释放。
类似于:
import multiprocessing
def create_model_and_train( ):
.....
.....
p = multiprocessing.Process(target=create_model_and_train)
p.start()
p.join()
或者您可以创建以下函数并在每个 运行:
之前调用它
from keras.backend.tensorflow_backend import set_session
from keras.backend.tensorflow_backend import clear_session
from keras.backend.tensorflow_backend import get_session
import tensorflow
import gc
# Reset Keras Session
def reset_keras():
sess = get_session()
clear_session()
sess.close()
sess = get_session()
try:
del classifier # this is from global space - change this as you need
except:
pass
print(gc.collect()) # if it does something you should see a number as output
# use the same config as you used to create the session
config = tensorflow.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 1
config.gpu_options.visible_device_list = "0"
set_session(tensorflow.Session(config=config))
我在 for 循环中拟合模型,但出现错误,提示我的 GPU 内存已满。我在 Anaconda Spyder IDE 中使用 Keras。我的 GPU 是 Asus GTX 1060 6gb。
我也使用过如下代码:K.clear_session()
、gc.collect()
、tf.reset_default_graph()
、del custom_model,但其中 none 行得通。
GPU 属性显示 98% 的内存已满:
除 numba.cuda.close()
外,没有刷新 GPU 内存,但不允许我再次使用我的 GPU。清除它的唯一方法是重新启动内核并重新运行我的代码。
我正在寻找任何脚本代码来添加我的代码,允许我在 for 循环中使用我的代码并在每个循环中清除 GPU。
在函数中完成模型创建和训练部分,然后使用子流程完成主要工作。训练完成后,子进程将终止,GPU 内存将释放。
类似于:
import multiprocessing
def create_model_and_train( ):
.....
.....
p = multiprocessing.Process(target=create_model_and_train)
p.start()
p.join()
或者您可以创建以下函数并在每个 运行:
之前调用它from keras.backend.tensorflow_backend import set_session
from keras.backend.tensorflow_backend import clear_session
from keras.backend.tensorflow_backend import get_session
import tensorflow
import gc
# Reset Keras Session
def reset_keras():
sess = get_session()
clear_session()
sess.close()
sess = get_session()
try:
del classifier # this is from global space - change this as you need
except:
pass
print(gc.collect()) # if it does something you should see a number as output
# use the same config as you used to create the session
config = tensorflow.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 1
config.gpu_options.visible_device_list = "0"
set_session(tensorflow.Session(config=config))