您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:在使用keras时报错显示could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR的解决办法

51自学网 2021-11-06 17:32:41
  python
这篇教程在使用keras时报错显示could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR的解决办法写得很实用,希望能帮到您。

Tensorflow和Keras的关系

在正式进入这个问题之前,我们先来了解一下tensorflow和keras之间的关系,因为后面会用到这个地方的知识。

  • 首先,tensorflow和keras都是深度学习框架,当你遇到上面这个问题的时候表明你至少用过两者之一。

  • 其次,tensorflow相较于keras更偏向于底层,而keras封装性更好,类似于接口。

  • keras是在tensorflow的基础上建立起来的,可以把keras看做tensorflow或者theano(已经停更的深度学习框架)的接口
    两者的直观关系如图:
     

  • 所以说在运行keras的时候,实际上在底层还是运行tensorflow,但是keras封装性好,学习起来比较简单。

进入正题

  • 原因:出现Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR的原因是你运行代码的电脑的显存不够导致的
    • 一般情况下,如果不加以限制,很多深度学习框架的代码在运行的时候会申请整个显存空间(即便它不需要这么多的资源,但是它申请了之后就不允许其他的程序使用),所以在这种状态下运行代码,就会出现显存不够用的问题(因为还有其他的程序或操作需要显存资源)
  • 解决方法:通过编写代码,控制显存的使用就可以避免这个问题
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) 让这些配置生效

+ 为什么使用tensorflow的代码能够解决keras的问题,这就可以用第一部分两者的关系来解释了,keras的底层是tensorflow


python2 与 python3 语法区别-使用 2to3 将代码移植到 Python 3
no module named pip解决方法-镜像安装
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。