【TF2】Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR

一、问题出现

在使用TensorFlow或者Keras准备进行网络训练时,有时候会出现如下报错:

Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR

二、问题分析

有的时候,电脑gpu显存明显是足够的,为何还是为报错呢?

一般情况下,如果不加以限制,很多深度学习框架的代码在运行的时候会申请整个显存空间(即便它不需要这么多的资源,但是它申请了之后就不允许其他的程序使用),所以在这种状态下运行代码,就会出现显存不够用的问题(因为还有其他的程序或操作也需要显存资源)。

三、解决方案

为了解决以上问题,我们在训练网络之前,需要在代码加入一些指令,控制显存的使用,以TensorFLow2为例:

import tensorflow as tf
config = tf.compat.v1.ConfigProto(gpu_options=tf.compat.v1.GPUOptions(allow_growth=True))
sss = tf.compat.v1.Session(config=config)

解释:

  • tf.compat.v1.ConfigProto()。这是 tensorflow2 版本的写法,这个方法的作用就是设置运行tensorflow代码的时候的一些配置,例如如何分配显存,是否打印日志等;所以它的参数都是 配置名称=True/False(默认为False)这种形式;
  • gpu_options=tf.compat.v1.GPUOptions(allow_growth=True) 限制GPU资源的使用,此处allow_growth=True是动态分配显存,需要多少,申请多少;
  • sess = tf.compat.v1.Session(config=config),让这些配置生效。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

InceptionZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值