当以keras进行深度学习的调参时,往往需要写循环进行。但在循环中,之前建立模型占用的显存往往不会释放,当模型深度足够大,batchsize设置过大而循环次数过多时,循环进行到一定程度时,往往会出现OOM(out of memory)状况而终止循环。
另一方面,显存不释放,可能会导致可供用的计算资源减少,从而出现模型训练越来越慢的情况。
因此,我找到了以下释放显存的方法:
1.Python中释放显存的方法:
我在网上查到可用以下代码释放全局状态达到释放显存的目的。
Python tf.keras.backend.clear_session实例讲解 - 码农教程
reticulate::py_run_string("import tensorflow as tf")
tf.keras.backend.clear_session()
2.R中释放显存的方法:
在R中,可通过reticulate包调用python中的命令:
在使用前需先安装并加载r