显存不足完美解决方案Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR

Posted AI 菌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了显存不足完美解决方案Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR相关的知识,希望对你有一定的参考价值。

一、问题出现

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

Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR

二、问题分析

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

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

三、解决方案

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

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 版本的写法,这个方法的作用就是设置运行tensorflow代码的时候的一些配置,例如如何分配显存,是否打印日志等;所以它的参数都是 配置名称=True/False(默认为False)这种形式;
  • gpu_options=tf.compat.v1.GPUOptions(allow_growth=True) 限制GPU资源的使用,此处allow_growth=True是动态分配显存,需要多少,申请多少;
  • sess = tf.compat.v1.Session(config=config),让这些配置生效。

以上是关于显存不足完美解决方案Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR的主要内容,如果未能解决你的问题,请参考以下文章

java虚拟机内存不足,“Could not create the Java Virtual Machine”问题解决方案

Cordova使用build命令出错: Could not create the Java Virtual Machine.

eclipse启动时报错 Could not create the java virtual machine

Could not create the Java virtual machine解决

java:Eclipse:Could not create the view:解决办法

Python 完美解决 Import “模块“ could not be resolved ...