Tensorflow 因 CUDNN_STATUS_ALLOC_FAILED 崩溃

2023-11-22

在网上搜索了几个小时没有结果,所以我想在这里问一下。

我正在尝试按照 Sentdex 的教程制作一辆自动驾驶汽车,但是在运行模型时,我遇到了一堆致命错误。我在网上搜索了解决方案,很多人似乎都有同样的问题。但是,我没有找到任何解决方案(包括这个堆栈帖子),为我工作。

这是我的软件:

  • Tensorflow:1.5,GPU版本
  • CUDA:9.0,带补丁
  • CUDnn: 7
  • Windows 10 专业版
  • Python 3.6

硬件:

  • Nvidia 1070ti,带有最新驱动程序
  • 英特尔 i5 7600K

这是崩溃日志:

2018-02-04 16:29:33.606903: E C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\stream_executor\cuda\cuda_blas.cc:444] failed to create cublas handle: CUBLAS_STATUS_ALLOC_FAILED 2018-02-04 16:29:33.608872: E C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\stream_executor\cuda\cuda_blas.cc:444] failed to create cublas handle: CUBLAS_STATUS_ALLOC_FAILED 2018-02-04 16:29:33.609308: E C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\stream_executor\cuda\cuda_blas.cc:444] failed to create cublas handle: CUBLAS_STATUS_ALLOC_FAILED 2018-02-04 16:29:35.145249: E C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\stream_executor\cuda\cuda_dnn.cc:385] could not create cudnn handle: CUDNN_STATUS_ALLOC_FAILED 2018-02-04 16:29:35.145563: E C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\stream_executor\cuda\cuda_dnn.cc:352] could not destroy cudnn handle: CUDNN_STATUS_BAD_PARAM 2018-02-04 16:29:35.149896: F C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\core\kernels\conv_ops.cc:717] Check failed: stream->parent()->GetConvolveAlgorithms( conv_parameters.ShouldIncludeWinogradNonfusedAlgo<T>(), &algorithms)

这是我的代码:

 import tensorflow as tf
    import numpy as np
    import cv2
    import time
    from PIL import ImageGrab
    from getkeys import key_check
    from alexnet import alexnet
    import os
    from sendKeys import PressKey, ReleaseKey, W,A,S,D,Sp

    import random

    WIDTH = 80
    HEIGHT = 60
    LR = 1e-3
    EPOCHS = 10
    MODEL_NAME = 'DiRT-AI-Driver-{}-{}-{}-epochs.model'.format(LR, 'alexnetv2', EPOCHS)

    def straight():
        PressKey(W)
        ReleaseKey(A)
        ReleaseKey(S)
        ReleaseKey(D)
        ReleaseKey(Sp)
    def left():
        PressKey(A)
        ReleaseKey(W)
        ReleaseKey(S)
        ReleaseKey(D)
        ReleaseKey(Sp)
    def right():
        PressKey(D)
        ReleaseKey(A)
        ReleaseKey(S)
        ReleaseKey(W)
        ReleaseKey(Sp)
    def brake():
        PressKey(S)
        ReleaseKey(A)
        ReleaseKey(W)
        ReleaseKey(D)
        ReleaseKey(Sp)
    def handbrake():
        PressKey(Sp)
        ReleaseKey(A)
        ReleaseKey(S)
        ReleaseKey(D)
        ReleaseKey(W)

    model = alexnet(WIDTH, HEIGHT, LR)
    model.load(MODEL_NAME)


    def main():
        last_time = time.time()
        for i in list(range(4))[::-1]:
            print(i+1)
            time.sleep(1)


    paused = False
    while(True):
            if not paused:
                screen = np.array(ImageGrab.grab(bbox=(0,40,1024,768)))
                screen = cv2.cvtColor(screen,cv2.COLOR_BGR2GRAY)
                screen = cv2.resize(screen,(80,60))
                print('Loop took {} seconds'.format(time.time()-last_time))
                last_time = time.time()
                print('took time')
                prediction = model.predict([screen.reshape(WIDTH,HEIGHT,1)])[0]
                print('predicted')
                moves = list(np.around(prediction))
                print('got moves')
                print(moves,prediction)

                if moves == [1,0,0,0,0]:
                    straight()
                elif moves == [0,1,0,0,0]:
                    left()
                elif moves == [0,0,1,0,0]:
                    brake()
                elif moves == [0,0,0,1,0]:
                    right()
                elif moves == [0,0,0,0,1]:
                    handbrake()

            keys = key_check()

            if 'T' in keys:
                if paused:
                    pased = False
                    time.sleep(1)
                else:
                    paused = True
                    ReleaseKey(W)
                    ReleaseKey(A)
                    ReleaseKey(S)
                    ReleaseKey(D)
                    ReleaseKey(Sp)
                    time.sleep(1)


main()

我发现导致 python 崩溃并产生前三个错误的行是这一行:

  • prediction = model.predict([screen.reshape(WIDTH,HEIGHT,1)])[0]

运行代码时,CPU 利用率高达 100%,这表明出现了严重问题。 GPU 达到约 40-50%

我尝试过 Tensorflow 1.2 和 1.3,以及 CUDA 8,但效果不佳。安装 CUDA 时,我不安装特定的驱动程序,因为它们对于我的 GPU 来说太旧了。也尝试了不同的 CUDnn,但效果不佳。


就我而言,问题的发生是因为另一个 python 控制台tensorflow导入正在运行。关闭它解决了问题。

我有 Windows 10,主要错误是:

未能创建 cublas 句柄:CUBLAS_STATUS_ALLOC_FAILED

无法创建 cudnn 句柄:CUDNN_STATUS_ALLOC_FAILED

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tensorflow 因 CUDNN_STATUS_ALLOC_FAILED 崩溃 的相关文章

随机推荐

  • 在 matplotlib 颜色条中对齐刻度标签

    我有一个带有正值和负值的颜色条 这些值是自动生成的 我没有设置它们 不幸的是 减号破坏了文本的垂直对齐方式 如何将刻度标签中的所有文本向右对齐 或者在正数之前插入一个空格以使其看起来不错 您可以更改文本的对齐方式 可能需要稍微更改标签的 x
  • 为什么 Traversable 不能多次访问其元素?

    我记得在某处读过 像这样的类型不可能Traversable data Bar a Bar a deriving Show instance Functor Bar where fmap f Bar x Bar f x instance Fo
  • 如何获取数组项的类型?

    如果我有一个类型type foo Array lt name string test number gt 是否可以获取数组中值的类型 在本例中为接口 我知道有keyof要获取密钥 是否有类似的值 如果您正在寻找如何提取 name strin
  • 地图视图平滑缩放

    当我使用 MapController setZoom x 时 例如 从级别 5 缩放到 15 时 缩放执行得非常快 并且通常不会加载新级别的地图图块 这对用户来说看起来不太好 任何地图内置功能都可以将其更改为更慢的缩放 以便在达到 15 级
  • Android:编辑文本中密码的最小长度

    在android中 有没有简单的方法可以在edittext中设置最小密码长度 在 xml 中只有最大长度选项 而没有最小长度选项 设置 em 和宽度等选项来限制长度 但是什么时候设置最小长度呢 我在文档中找到了这个 DevicePolicy
  • 浮点型与双精度型

    是否存在比较 equals 两个浮点值之间将返回false如果你将它们比较DOUBLE但返回true如果你将它们与 FLOAT 进行比较 作为我的小组项目的一部分 我正在编写一些程序来比较任何给定类型的两个数值 我总共需要处理四种类型 do
  • Java 中的 double 到 long 无需转换

    我需要将 double 转换为 long 保留其二进制结构 而不是数值 只需更改类型 但保留二进制值不变 有没有一种本地方法可以做到这一点 有Double与 doubleToLongBits 和 doubleToLongRawBits Ja
  • 如何在 Hibernate 中使用唯一键而不是主键检索记录

    Using session load or session get 或任何其他方法org hibernate session 是否可以在hibernate中根据Unique列而不是PK列值获取记录 我的要求是我需要根据唯一列值而不是主键获取
  • 将 Arc 克隆为 Arc,其中 T 实现 U

    我觉得很奇怪 use std sync Arc trait Fruit struct Pear impl Fruit for Pear fn main let pear Arc new Pear let cloned Arc clone p
  • 在 Neo4j 中实现 Dijkstra 算法

    我对 Neo4j 很陌生 有人可以向我解释 请逐步 如何实现 Dijkstra 算法来找到两个节点之间的最短路径 是否可以简单地使用 Cypher 来完成它 我已经尝试过最短路径算法 但它很慢 MATCH from Location Loc
  • 为什么我不能反转 str::split 的结果?

    根据文档Split 有一个rev方法对结果的影响split在字符串上 fn main let mut length 0 let mut mult 1 for part in 1 30 split rev length mult part p
  • Eclipse p2:category.xml 和 site.xml 之间的区别

    p2 存储库创建 ant 任务 例如 eclipse publish featuresAndBundles 似乎采用指定类别信息的 site xml 或category xml 文件 我发现 eclipse 生成的 site xml 和ca
  • 圆形ViewPager。第一轮后碎片无法正常工作

    好的 所以我需要圆形 ViewPager 我真的很难实施它 现在我已经实现了它 并且就圆形滚动而言它运行良好 但我注意到一个问题 那就是 第一轮滚动片段不起作用后 我有三个片段 里面有一个按钮 按钮在第一轮有效 但当我回到第一页时按钮不起作
  • 有没有办法在 Eclipse 中自动生成 getter 和 setter?

    我正在研究一个新的Android项目 Java 并创建了一个带有大量变量的对象 由于我计划为所有这些添加 getter 和 setter 所以我想知道 是否有捷径Eclipse自动生成给定类中的 getter 和 setter 在所需类的源
  • 使用 JSONB 列内的值连接表

    有两个表 授权联系人 auth contacts userid varchar contacts jsonb contacts包含具有属性的联系人数组 contact id type discussion contact id varcha
  • 在 cmake 构建中使用 LLVM

    我正在尝试构建自己的使用 LLVM 的项目 我在官网上下载了源码和预编译包 最新版本 http releases llvm org download html 我下载了 LLVM source code Clang for Windows
  • 角度材料将 angularjs 1.5 组件加载到 $mdDialog 中

    目标 使用组件而不是使用 scope 来设置数据 没有可共享的错误 问题是对话框加载组件时未设置数据元素 屏幕截图显示了对话框的当前状态 选项卡 2 信息 中应该有一个绑定的对象 我可以使用 onComplete 事件验证对话框加载后对象
  • 如何通过两个键对 JSON 对象进行排序?

    我有一个 JSON 对象 我想先按一个键排序 然后按第二个键排序 类似于 SQL 中按两列排序 以下是我想要的 JSON 示例 GROUPID 3169675 LASTNAME Chantry 我想按 GROUPID 然后按 LASTNAM
  • 每个连接请求都被视为直接连接请求+ android ble

    我们正在编写一个 ble 应用程序 希望与我们想要连接的外设建立持久连接 出于同样的目的 每当我们失去现有连接时 我们都希望与外围设备重新连接 因此 我们作为中心的 Android 应用程序只是尝试通过调用 bluetoothdevice
  • Tensorflow 因 CUDNN_STATUS_ALLOC_FAILED 崩溃

    在网上搜索了几个小时没有结果 所以我想在这里问一下 我正在尝试按照 Sentdex 的教程制作一辆自动驾驶汽车 但是在运行模型时 我遇到了一堆致命错误 我在网上搜索了解决方案 很多人似乎都有同样的问题 但是 我没有找到任何解决方案 包括这个