我的编程空间,编程开发者的网络收藏夹
学习永远不晚

keras的get_value运行越来越慢的解决方案

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

keras的get_value运行越来越慢的解决方案

keras 深度学习框架中get_value函数运行越来越慢,内存消耗越来越大问题

问题描述

get_value问题截图

如上图所示,经过时间和内存消耗跟踪测试,发现是keras.backend.get_value() 函数导致的程序越来越慢,而且严重的造成内存泄露;

查看该函数内部实现,发现一个主要核心是x.eval(session=get_session()),该语句可能是导致内存泄露和运行慢的核心语句; 根据查看一些博文得到了运行得越来越慢的

原因该x.eval函数会添加新的节点到tf的图中;而这也导致了tf的图越来越大,内存泄露;

解决方法


import tensorflow.keras.backend as K

def get_my_session(gpu_fraction=0.1):
    '''Assume that you have 6GB of GPU memory and want to allocate ~2GB'''

    num_threads = os.environ.get('OMP_NUM_THREADS')
    gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=gpu_fraction)

    if num_threads:
        return tf.Session(config=tf.ConfigProto(
            gpu_options=gpu_options, intra_op_parallelism_threads=num_threads))
    else:
        return tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))

K.set_session(get_my_session())

如上图所示, 我在使用tensorflow之前(也就是该工程文件前面),对session进行自定义,然后用自定义的session设定keras.backend.set_session();

然后删除get_value() 函数,直接用get_value()中所使用的执行语句x.eval(session=get_my_session());这样这个添加节点导致内存泄露的核心语句x.eval()就使用的是该工程统一自定义session,然后用tf.reset_default_graph() 对图重置就可以了

即上图问题代码修改为:


output = ctc_decode(y_pred,input_length=input_length,)
output = output[0][0]
out = output.eval(session=get_my_session())
# 删除 K.get_value(out[0][0])
tf.reset_default_graph() # 然后重置tf图,这句很关键

这样就解决了get_value()导致的越来越慢的问题;

个人认为:这样可能就不会总是添加新的节点,导致tf图不断地无限变大;而是重复使用这一个自定义的节点。

补充:tensorflow与keras之间版本问题引起get_session问题解决办法

1.产生报错原因


import tensorflow.keras.backend as K
def __init__(self, **kwargs):
    self.__dict__.update(self._defaults) # set up default values
    self.__dict__.update(kwargs) # and update with user overrides
    self.class_names = self._get_class()
    self.anchors = self._get_anchors()
    self.sess = K.get_session()

报错如下:

get_session is not available when using TensorFlow 2.0.

意思是 tf2.0 没有 get_session

2.解决方案1


import tensorflow.python.keras.backend as K
sess = K.get_session()

3. 解决方案2


import tensorflow as tf
sess = tf.compat.v1.keras.backend.get_session()

之前一直采用方案1 解决,感觉比较方便;但是解决方案1 有其它属性会丢失问题

比如AttributeError: module ‘keras.backend' has no attribute image_dim_ordering

所以建议大家采用方案2

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

keras的get_value运行越来越慢的解决方案

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

keras中get_value运行越来越慢怎么办

小编给大家分享一下keras中get_value运行越来越慢怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!keras 深度学习框架中get_value函数运
2023-06-15

如何解决Windows系统越来越慢的问题

这篇文章主要为大家展示了“如何解决Windows系统越来越慢的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决Windows系统越来越慢的问题”这篇文章吧。方法一:打开计算机管理页面,
2023-06-28

PC流量越来越低的解决方法

这篇文章给大家分享的是有关PC流量越来越低的解决方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。  便捷性:  我们所有人都在追求高效、便捷,怎么简单怎么来的生活方式,从私家车的出行,到选择地铁的出行也无一不是
2023-06-10

安装Win10后C盘空间不足越来越少的两个解决方法

使用电脑就得考虑到C盘空php间容量,无论是软件还是系统,还是令人烦不胜烦的缓存。装上Win10C盘空间就直接满编程了,那就想想怎么办,想不出办php法就看看本文支出的招数吧。1. 用系统自带的磁盘管理把D盘搞点过来。D盘先删除卷,再C盘扩
2023-06-09

阿里云服务器越用越卡的原因分析及解决方案

随着科技的发展和互联网的普及,越来越多的企业和个人选择使用阿里云服务器。然而,一些用户反映,他们的阿里云服务器在使用一段时间后会变得越来越卡,影响了业务的正常运行。本文将探讨阿里云服务器越用越卡的原因,并提出相应的解决方案。原因分析:系统资源不足:如果阿里云服务器的硬件资源(如内存、CPU、硬盘等)不足以支持业务
阿里云服务器越用越卡的原因分析及解决方案
2023-12-14

C++中常见的数组越界问题解决方案

C++中常见的数组越界问题解决方案,需要具体代码示例在C++编程中,数组越界是一个常见的错误。当我们在访问数组中的元素时超出了数组的索引范围,就会导致程序出现未定义的行为。为了避免这类错误,我们需要采取一些解决方案。解决方案一:正确使用数组
2023-10-22

win8电脑运行慢的解决方法

这篇文章主要介绍了win8电脑运行慢的解决方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、首先在桌面上按下“Ctrl + Shift + Esc”,直接打开任务管理器,
2023-06-28

阿里云服务器运行速度慢的原因与解决方案

随着云计算的快速发展,越来越多的企业和个人选择使用阿里云服务器来存储和处理数据。然而,有些用户反映阿里云服务器运行速度慢,这不仅影响了工作效率,也给用户带来了不便。那么,阿里云服务器运行速度慢的原因是什么?如何解决这一问题呢?本文将对此进行详细的分析和探讨。一、阿里云服务器运行速度慢的原因网络问题:网络问题是最常
阿里云服务器运行速度慢的原因与解决方案
2023-11-11

打开PDF文件后,总是弹出数字越界的解决方案教程

PDF是人们经常使用的电子文档格式之一。尽管用户非常喜爱它的印刷质量、不失真以及便携性等方面的优点,但在实际使用中经常面临各种问题。使用Windows 7 Ultimate的用户反映说,每次打开PDF文件时都会遇到数字越界提示,这一点非常令
2023-07-13

win10系统电脑运行速度慢的解决方法

win10系统已经逐渐成为主流的操作系统了,但是用久了总会出现一些问题,比如系统运行速度变慢的情况。相信不少朋友都遇到过win10系统电脑运行速度慢的问题,那么win10电脑运行速度慢怎么办呢?一些朋友不了解处理方法,下面我们就来看看win
2023-07-10

VScode运行C++中文终端乱码的解决方案

这篇文章主要介绍了VScode运行C++中文终端乱码的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-01-06

关于electron-vue打包后运行白屏的解决方案

这篇文章主要介绍了关于electron-vue打包后运行白屏的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-11-13

解决windows8系统运行速度缓慢并提高其性能的方法

Windows 8 系统相对早期的 windows 7、Windows Vista系统更省资源,即使同配置硬件条件下,其运行速度、图形显示效果均会有很大提升,因此排除硬件问题外,我们可以尝试通过优化启动项、停止服务、升级驱动进行改善计算机运
2022-06-04

win7提示限制网页运行Activex控件的解决方案

使用Win7电脑浏览网页时,当您进入许多需要运行Activex控件的网站时,会出现限制网页运行Activex控件的提示。怎样解决这个问题呢,因为尽管浏览器的这种行为是为了安全考虑,但也限制了一些安全的Activex控件的使用1.禁止在浏览器
2023-07-10

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录