解决使用keras训练模型Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR报错问题

14 篇文章 0 订阅
9 篇文章 0 订阅

机器环境
Ubuntu18.04
rtx2080s
tensorflow-gpu 1.14
keras 2.2.3

使用keras训练模型时异常报错,根据日志分析大概是显存溢出问题,通过watch -n 1 nvidia-smi 观察显存使用情况,也发现当模型训练时显存会突然爆增,然后进程就挂掉了。
在这里插入图片描述
根据上面分析的原因修改了batchsize也是异常,然后查找了一下相关资料,一般情况下,如果不加以限制,很多深度学习框架的代码在运行的时候会申请整个显存空间,即便它不需要这么多的资源,但是它申请了之后就不允许其他的程序使用,所以在这种状态下运行代码,就会出现显存不够用的问题,所以只要分配一下模型训练的显存分配策略就可以。

而keras是在tensorflow的基础上封装起来的,所以只需要修改tensorflow的显存分配策略就可以,在train代码中添加如下配置。

import tensorflow as tf
config = tf.compat.v1.ConfigProto(gpu_options=tf.compat.v1.GPUOptions(allow_growth=True))
sess = tf.compat.v1.Session(config=config)
# tf.compat.v1.ConfigProto() 这是tensorflow2.0+版本的写法,这个方法的作用就是设置运行tensorflow代码的时候的一些配置,例如如何分配显存,是否打印日志等;所以它的参数都是 配置名称=True/False(默认为False) 这种形式
# gpu_options=tf.compat.v1.GPUOptions(allow_growth=True) 限制GPU资源的使用,此处allow_growth=True是动态分配显存,需要多少,申请多少,不是一成不变、而是一直变化
# sess = tf.compat.v1.Session(config=config) 让这些配置生效

修改显存分配策略后,模型训练调用gpu正常。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值