基于Keras 循環(huán)訓(xùn)練模型跑數(shù)據(jù)時內(nèi)存泄漏的解決方式
在使用完模型之后,添加這兩行代碼即可清空之前model占用的內(nèi)存:
import tensorflow as tf from keras import backend as K K.clear_session() tf.reset_default_graph()
補充知識:keras 多個模型測試階段速度越來越慢問題的解決方法
問題描述
在實際應(yīng)用或比賽中,經(jīng)常會用到交叉驗證(10倍或5倍)來提高泛化能力,這樣在預(yù)測時需要加載多個模型。常用的方法為
mods = []
from keras.utils.generic_utils import CustomObjectScope
with CustomObjectScope({}):
for model_file in tqdm.tqdm(model_files):
mod = keras.models.load_model(model_file)
mods.append(mod)
return mods
使用這種方式時會發(fā)現(xiàn),剛開始模型加載速度很快,但隨著加載的模型數(shù)量增多,加載速度越來越慢,甚至延長了3倍以上。那么為什么會出現(xiàn)這種現(xiàn)象呢?
原因
由于tensorflow的圖是靜態(tài)圖,但是如果直接加在不同的圖(即不同的模型),應(yīng)該都會存在內(nèi)存中,原有的圖并不會釋放,因此造成了測試速度越來越慢。
解決方案
知道了原因,解決方案也就有了:每加載一個模型就對所有測試數(shù)據(jù)進行評估,同時在每次加載模型前,對當(dāng)前session進行重置。keras的tf后臺提供了clear_session方法來清除session
import keras.backend.tensorflow_backend as KTF
KTF.clear_session()
session = tf.Session(config=config)
KTF.set_session(session)
with CustomObjectScope({}):
model = keras.models.load_model(model_file)
return model
以上這篇基于Keras 循環(huán)訓(xùn)練模型跑數(shù)據(jù)時內(nèi)存泄漏的解決方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python+Selenium實現(xiàn)讀取網(wǎng)易郵箱驗證碼
在自動化工作中,有可能會遇到一些發(fā)送郵箱驗證碼類似的功能。本文將利用Python?Selenium實現(xiàn)自動化讀取網(wǎng)易郵箱驗證碼,感興趣的可以了解一下2022-03-03
解決ImportError:DLL load failed while impo
在安裝pywin32后,可能會出現(xiàn)無法導(dǎo)入win32api的錯誤,一個有效的解決方案是運行pywin32_postinstall.py腳本,首先,打開cmd并切換到環(huán)境的Scripts文件夾,確保存在pywin32_postinstall.py文件2024-09-09
python中resample函數(shù)實現(xiàn)重采樣和降采樣代碼
今天小編就為大家分享一篇python中resample函數(shù)實現(xiàn)重采樣和降采樣代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
淺析python實現(xiàn)動態(tài)規(guī)劃背包問題
這篇文章主要介紹了python實現(xiàn)動態(tài)規(guī)劃背包問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12

