kera中使用keras.banked.ctc_decoder()导致内存不断增加的问题解决

遇到的问题

在使用keras训练了模型后,使用模型进行测试,测试过程中发现随着测试数据的增加,测试速度不断降低,最后近乎停止。

寻找问题根源

通过在网上查找资料发现,此问题直接原因是调用keras.banked.ctc_decoder()或者keras.bankend.get_value()两个函数时,每次调用都会在计算图中加入一个新的节点,导致内存不断增加。

解决方案

1.重写或更改源代码

本人能力有限,未尝试此种做法。

2.在测试过程中将数据批次送入

在我的项目实现中,每次测试一千条数据速度虽有降低但是可以接受,所以为了解决这个问题,我每送入一千条数据,将session重新清除后再送入下一个一千条数据,这样总体测试速度达到了一个可以接受的速度。大致代码如下:


for i in range(iter_Thousand):model_session = Acoustic_model(datapath, model_Name = model_Name)model_session.Load_Model(filename = model_Path)word_Num_T,word_Error_Num_T,replace_Error_T,insert_Error_T,delete_Error_T = model_session.Test_model(modelpath = model_Path, datapath = './dataset', str_Data = str_Data, data_Count = 1000 , iter_Thousand = i, now_Time = now_Time)BK.clear_session()

kera中使用keras.banked.ctc_decoder()导致内存不断增加的问题解决相关推荐

  1. android的内存泄露有几种,Android中几种有可能会导致内存泄露的情况

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 1.Static静态成员导致的内存泄露 将占用大量内存空间的变量声明为static静态类型.当Activity被销毁的时 ...

  2. 为什么Go中有的自定义error会导致内存溢出

    分享一个在go tour上看到的练习题,练习里要求用户自己定义一个错误类型,实现error接口,函数在参数不满足条件的时候返回自定义的错误类型的值.练习中特别提示用户不要在实现的Error方法里直接使 ...

  3. linux中非法内存,Linux下数组非法访问导致内存破坏 —— 引发segmentation fault的原因...

    2012-02-05 wcdj 1, 调试时必需的栈知识 2, 数组非法访问导致内存破坏 调试时必需的栈知识 栈(stack)是程序存放数据的内存区域之一,其特征是LIFO(Last In First ...

  4. android开发中,可能会导致内存泄露的问题

    转自 : http://spencer-dev.lofter.com/post/d7b9e_6faf120 在android编码中,会有一些简便的写法和编码习惯,会导致我们的代码有很多内存泄露的问题. ...

  5. [自带避雷针]DropShadowEffect导致内存暴涨

    原文:[自带避雷针]DropShadowEffect导致内存暴涨  [自带避雷针]DropShadowEffect导致内存暴涨 周银辉 从学习WPF开始, 就知道"位图效果"不是什 ...

  6. s5 android5.0内存泄漏,android-最初从位图泄漏了未引用的byte [],但被回收的()导致内存泄漏(直到活动停止)...

    我的位图内存泄漏导致内存不足.我在Android 5.0(Samsung S5)上运行了测试.我已经使用Android Studio(1.5.1 2.0.0预览版7)调查了此问题. HPROF内存转储 ...

  7. nstimer循环引用_解决NSTimer循环引用导致内存泄漏的六种方法

    demo放在了GitHub 内存泄漏的原因: self强引用timer.timer添加在runloop上,只要timer不销毁self就销毁不了.当然了你可以选择在viewWillDisappear中 ...

  8. Chrome V8系列--浅析Chrome V8引擎中的垃圾回收机制和内存泄露优化策略

    V8 实现了准确式 GC,GC 算法采用了分代式垃圾回收机制.因此,V8 将内存(堆)分为新生代和老生代两部分. 一.前言 V8的垃圾回收机制:JavaScript使用垃圾回收机制来自动管理内存.垃圾 ...

  9. 【VS开发】【编程开发】【C/C++开发】结构体中的数组与指针的内存分配情况说明...

    [VS开发][编程开发][C/C++开发]结构体中的数组与指针的内存分配情况说明 标签:[VS开发] [编程开发] 主要是疑惑在结构体定义的数组的内存空间与指针动态分配的内存空间,在地址上连续性.以及 ...

最新文章

  1. shell脚本替换文件中字符
  2. eclipse下的spring环境配置
  3. IPv6系列(一)—快速入门
  4. 使用 Boost.Multiprecision 来实现高精度高斯-拉盖尔正交积分
  5. vc6开发一个抓包软件_开发一个软件多少钱?传统app开发与0代码app制作方法对比...
  6. emacs mysql代码阅读_Emacs + etags + cscope 阅读代码
  7. 【 js 基础 】Javascript “继承”
  8. caffe cifar10 net笔记
  9. Atitit.每周计划日程表 流程表 v9 r829.docx
  10. 一键删除PPT页面内的动画or页面的切换效果总结
  11. 华为2017年8月30日校招编程真题01-数字的中文拼音和英文单词之间互相转换
  12. 真心推荐8个高质量Java学习网站,一起从入门到精通java语言,大厂java面试真题分享,建议码住!...
  13. cisco设备与基本操作
  14. PTA 7-47 打印选课学生名单 (25 point(s))
  15. 什么是APP封装?APP封装有什么途径?
  16. 计算机专业考研 数学分析,中国农业大学2018年计算机考研816数学分析考试大纲...
  17. 主动形状模型(ASM)和主动外观模型(AAM)资源汇总
  18. Linux的入门学习
  19. SpringBoot+Mybatis+Elasticsearch 实现模糊分页查询并标记关键字
  20. 编码01--极性编码详解(极性码、单极性码、双极性码产生原理)

热门文章

  1. netty整合websocket支持自签证书出现netty websocket ssl Received fatal alert: certificate_unknown
  2. Nuxt3第二篇【路由】
  3. mysql中数据库字段类型长度_Mysql数据库字段数据类型、长度详解
  4. IOS-小项目(饿了么 网络部分 简单实现)
  5. windows自带硬盘测速以及移动硬盘格式选择
  6. Windows 系统内存故障诊断
  7. RSA加解密在Android中注意
  8. 【luoguP5664】 Emiya 家今天的饭 动态规划
  9. 梅宫主:一张相生相克五行图,瞬间解决创业者赚钱难问题!
  10. 基于STM32和超声波模块的超声波测距,使用OLED显示距离和温度(附详细源代码)