基于Keras 循环训练模型跑数据时内存泄漏的解决方式

 更新时间:2020年06月11日 11:00:10   作者:jemmie_w  
这篇文章主要介绍了基于Keras 循环训练模型跑数据时内存泄漏的解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随想过来看看吧

在使用完模型之后,添加这两行代码即可清空之前model占用的内存:

import tensorflow as tf
from keras import backend as K
 
K.clear_session()
tf.reset_default_graph()

补充知识:keras 多个模型测试阶段速度越来越慢问题的解决方法

问题描述

在实际应用或比赛中,经常会用到交叉验证(10倍或5倍)来提高泛化能力,这样在预测时需要加载多个模型。常用的方法为

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

使用这种方式时会发现,刚开始模型加载速度很快,但随着加载的模型数量增多,加载速度越来越慢,甚至延长了3倍以上。那么为什么会出现这种现象呢?

原因

由于tensorflow的图是静态图,但是如果直接加在不同的图(即不同的模型),应该都会存在内存中,原有的图并不会释放,因此造成了测试速度越来越慢。

解决方案

知道了原因,解决方案也就有了:每加载一个模型就对所有测试数据进行评估,同时在每次加载模型前,对当前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 循环训练模型跑数据时内存泄漏的解决方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python实现计算最小编辑距离

    Python实现计算最小编辑距离

    这篇文章主要介绍了Python实现计算最小编辑距离的相关代码,有需要的小伙伴可以参考下
    2016-03-03
  • python多进程使用apply_async的使用方法详解

    python多进程使用apply_async的使用方法详解

    这篇文章主要介绍了python多进程使用apply_async使用方法详解,apply_async是异步非阻塞式,不用等待当前进程执行完毕,随时跟进操作系统调度来进行进程切换,即多个进程并行执行,提高程序的执行效率
    2022-09-09
  • Python+Selenium实现读取网易邮箱验证码

    Python+Selenium实现读取网易邮箱验证码

    在自动化工作中,有可能会遇到一些发送邮箱验证码类似的功能。本文将利用Python Selenium实现自动化读取网易邮箱验证码,感兴趣的可以了解一下
    2022-03-03
  • 解决ImportError:DLL load failed while importing win32api:找不到指定的模块

    解决ImportError:DLL load failed while impo

    在安装pywin32后,可能会出现无法导入win32api的错误,一个有效的解决方案是运行pywin32_postinstall.py脚本,首先,打开cmd并切换到环境的Scripts文件夹,确保存在pywin32_postinstall.py文件
    2024-09-09
  • python中resample函数实现重采样和降采样代码

    python中resample函数实现重采样和降采样代码

    今天小编就为大家分享一篇python中resample函数实现重采样和降采样代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • python处理列表的部分元素的实例详解

    python处理列表的部分元素的实例详解

    在本篇文章里小编给大家整理的是一篇关于python处理列表的部分元素的实例详解内容,有兴趣的朋友们可以学习下。
    2021-09-09
  • 浅析python实现动态规划背包问题

    浅析python实现动态规划背包问题

    这篇文章主要介绍了python实现动态规划背包问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • 中秋快到了利用python画个月亮和月饼

    中秋快到了利用python画个月亮和月饼

    眼看中秋又快到了,今天小编就利用python画出月亮和月饼,感兴趣的小伙伴一定要收藏起来送给远方的朋友呀
    2021-09-09
  • 用Python的Turtle制作自己的星空

    用Python的Turtle制作自己的星空

    这篇文章主要介绍了用Python的Turtle制作自己的星空,本文用了turtle绘图包,是一款非常强大的内置包,需要的朋友可以参考下
    2023-04-04
  • 9个提高 Python 编程的小技巧

    9个提高 Python 编程的小技巧

    这篇文章主要介绍了9个提高 Python 编程的小技巧,下文分享python编程技巧,需要的小伙伴可以参考一下,希望对你的学习有所帮助
    2022-05-05

最新评论