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


Posted in Python onJune 11, 2020

在使用完模型之后,添加这两行代码即可清空之前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实现数通设备端口使用情况监控实例
Jul 15 Python
使用Python3编写抓取网页和只抓网页图片的脚本
Aug 20 Python
Python实现将HTML转换成doc格式文件的方法示例
Nov 20 Python
Python基于百度云文字识别API
Dec 13 Python
django 自定义过滤器的实现
Feb 26 Python
Python实现的读取文件内容并写入其他文件操作示例
Apr 09 Python
pyqt5之将textBrowser的内容写入txt文档的方法
Jun 21 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
Aug 06 Python
Python 多线程,threading模块,创建子线程的两种方式示例
Sep 29 Python
Pandas的数据过滤实现
Jan 15 Python
python pygame入门教程
Jun 01 Python
opencv深入浅出了解机器学习和深度学习
Mar 17 Python
什么是python的id函数
Jun 11 #Python
Keras:Unet网络实现多类语义分割方式
Jun 11 #Python
Pycharm中配置远程Docker运行环境的教程图解
Jun 11 #Python
Keras 快速解决OOM超内存的问题
Jun 11 #Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
Jun 11 #Python
使用keras实现孪生网络中的权值共享教程
Jun 11 #Python
查看keras各种网络结构各层的名字方式
Jun 11 #Python
You might like
php中AES加密解密的例子小结
2014/02/18 PHP
php弹出提示框的是实例写法
2019/09/26 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
JavaScript中String和StringBuffer的速度之争
2010/04/01 Javascript
AJAX分页的代码(后台asp.net)
2011/02/14 Javascript
js操作iframe兼容各种主流浏览器示例代码
2013/07/22 Javascript
微信小程序之选项卡的实现方法
2017/09/29 Javascript
jQuery Validate插件ajax方式验证输入值的实例
2017/12/21 jQuery
基于jQuery实现的设置文本区域的光标位置
2018/06/15 jQuery
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
详解在React项目中安装并使用Less(用法总结)
2019/03/18 Javascript
element el-tree组件的动态加载、新增、更新节点的实现
2020/02/27 Javascript
react实现复选框全选和反选组件效果
2020/08/25 Javascript
[02:51]DOTA2英雄基础教程 风暴之灵
2013/12/23 DOTA
Python验证码识别处理实例
2015/12/28 Python
Python字典中的键映射多个值的方法(列表或者集合)
2018/10/17 Python
Django工程的分层结构详解
2019/07/18 Python
WxPython实现无边框界面
2019/11/18 Python
Python变量作用域LEGB用法解析
2020/02/04 Python
keras .h5转移动端的.tflite文件实现方式
2020/05/25 Python
解析python 中/ 和 % 和 //(地板除)
2020/06/28 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
2020/09/23 Python
python中使用np.delete()的实例方法
2021/02/01 Python
html5手机键盘弹出收起的处理
2020/01/20 HTML / CSS
Java文件和目录(IO)操作
2014/08/26 面试题
道德模范先进事迹
2014/02/14 职场文书
初中学校军训方案
2014/05/09 职场文书
本科生就业推荐信
2014/05/19 职场文书
社区戒毒工作方案
2014/06/04 职场文书
教室标语大全
2014/06/21 职场文书
销售工作决心书
2015/02/04 职场文书
品质保证书格式
2015/02/28 职场文书
2015年初中生自我评价范文
2015/03/03 职场文书
行政处罚事先告知书
2015/07/01 职场文书
导游词之广东佛山(南风古灶)
2019/09/24 职场文书
MySQL大小写敏感的注意事项
2021/05/24 MySQL