显存不足完美解决方案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解决