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

