基于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使用稀疏矩阵节省内存实例
Jun 27 Python
Python 爬虫模拟登陆知乎
Sep 23 Python
python去除空格和换行符的实现方法(推荐)
Jan 04 Python
python如何把嵌套列表转变成普通列表
Mar 20 Python
PyQt5每天必学之事件与信号
Apr 20 Python
Django框架的使用教程路由请求响应的方法
Jul 03 Python
python字符串下标与切片及使用方法
Feb 13 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
Mar 30 Python
使用Python将图片转正方形的两种方法实例代码详解
Apr 29 Python
Python用类实现扑克牌发牌的示例代码
Jun 01 Python
基于pycharm 项目和项目文件命名规则的介绍
Jan 15 Python
详解Python函数print用法
Jun 18 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
snoopy 强大的PHP采集类使用实例代码
2010/12/09 PHP
分享8个最佳的代码片段在线测试网站
2013/06/29 PHP
ThinkPHP之R方法实例详解
2014/06/20 PHP
PHP基于socket实现的简单客户端和服务端通讯功能示例
2017/07/10 PHP
JQuery 常用方法基础教程
2009/02/06 Javascript
jQuery 美元符冲突的解决方法
2010/03/28 Javascript
nodejs开发环境配置与使用
2014/11/17 NodeJs
基于jQuery实现仿淘宝套餐选择插件
2015/03/04 Javascript
JQuery操作元素的css样式
2015/03/09 Javascript
jquery彩色投票进度条简单实例演示
2020/07/23 Javascript
js事件冒泡、事件捕获和阻止默认事件详解
2016/08/04 Javascript
JavaScript实现刷新不重记的倒计时
2016/08/10 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
2017/01/04 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
2017/07/02 Javascript
使用vux实现上拉刷新功能遇到的坑
2018/02/08 Javascript
vue 下列表侧滑操作实例代码详解
2018/07/24 Javascript
AngularJS发送异步Get/Post请求方法
2018/08/13 Javascript
微信小程序入口场景的问题集合与相关解决方法
2019/06/26 Javascript
[02:51]2014DOTA2 TI小组赛总结中国军团全部进军钥匙球馆
2014/07/15 DOTA
[01:03:13]VG vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[48:20]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python入门篇之函数
2014/10/20 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
2017/07/28 Python
用python实现百度翻译的示例代码
2018/03/09 Python
python批量解压zip文件的方法
2019/08/20 Python
pycharm设置python文件模板信息过程图解
2020/03/10 Python
python编写一个会算账的脚本的示例代码
2020/06/02 Python
HTML5 Canvas绘制圆点虚线实例
2015/01/01 HTML / CSS
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
医学检验专业个人求职信范文
2013/12/04 职场文书
爱国卫生月实施方案
2014/02/21 职场文书
就职演讲稿范文
2014/05/19 职场文书
党建工作经验交流材料
2014/05/25 职场文书
开票证明
2015/06/23 职场文书
基于python的matplotlib制作双Y轴图
2021/04/20 Python
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记