error: Ignore above cudart dlerror if you do not have a GPU set up on your machine.

TensorFlow_CPU/GPU

  • 错误描述
  • 错误原因
  • 解决方法
  • 解决方法1:
  • 错误描述

    具体错误描述:

    W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'cudart64_110.dll'; dlerror: cudart64_110.dll not found
    I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
    

    意思是说没有找到cuda的配置文件,如果电脑没有GPU则忽略此错误提示并退回到CPU版本。

    错误原因

    在网上搜索了一些对此问题原因的解释,其大致原因是在安装TensorFlow时使用了以下命令:

    pip install tensorflow
    

    最新版的TensorFlow默认安装CPU和GPU两个版本,GPU不能运行时退回到CPU版本。所以在运行时会自动检测是否有GPU,如果没有则报错并切换至CPU运行

    解决方法

    解决方法1:

    重新安装TensorFlow的CPU版本:打开anaconda prompt输入以下命令
    卸载当前TensorFlow

    pip uninstall tensorflow
    

    如果用的是CPU,则安装TensorFlow的CPU版本,默认最新版本

    pip install tensorflow_cpu
    

    由于使用的是国外镜像,下载速度很慢,可能会中断,大家可以自行搜索安装包。

    如果使用的是GPU则使用下面的方法解决:

    先来排查错误,显示“cudart64_110.dll not found”,那是因为安装的cuda版本没有“cudart64_110.dll”

    因此我们需要手动将“cudart64_110.dll”添加到coda的bin目录中去。

    详细步骤请参考链接:tensorflow-gpu版本使用时报错,各种dll文件找不到

    方法比较多,可以多尝试一下,因为小编用的CPU所以暂时就不详细描述了。提供一些实用的解决方案,尽一份薄力!

    Tensorflow无法调用GPU,报错Could not load dynamic library ‘cudart64_100.dll‘‘cublas64_100.dll‘…

    解决方法2:
    如果使用的是CPU,可以采用这种方法,在程序开头中加入以下代码:

    #加入忽略
    import os
    os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
    

    对于这两行代码什么意思我们还是简单了解一下:
    参考链接: 从源码求证tensorflow中os.environ[“TF_CPP_MIN_LOG_LEVEL”]的值的含义.

    import os
    os.environ['TF_CPP_MIN_LOG_LEVEL'] = '0'  # 0也是默认值,输出所有信息
    os.environ['TF_CPP_MIN_LOG_LEVEL'] = '1'  # 屏蔽通知信息
    os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'  # 屏蔽通知信息和警告信息
    os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'  # 屏蔽通知信息、警告信息和报错信息
    

    有点懵逼,我们看一下源码:

    namespace tensorflow {
    const int INFO = 0;           //base_logging::INFO;
    const int WARNING = 1;        //base_logging::WARNING;
    const int ERROR = 2;          //base_logging::ERROR;
    const int FATAL =3;           //base_logging::FATAL;
    const int NUM_SEVERITIES = 4; //base_logging::NUM_SEVERITIES;
    

    应该很清楚了:

    1. log信息一共有四个等级,按重要性递增为:
      INFO(通知) < WARNING(警告) < ERROR(错误) < FAFAL(致命的);
    2. 值得含义:不同值设置的是基础log信息(base_loging),运行时会输出base等级及其之上(更为严重)的信息。具体如下:
    base_loging 屏蔽信息 输出信息
    “0” INFO INFO + WARNING + ERROR + FATAL
    “1” WARNING INFO WARNING + ERROR + FATAL
    “2” ERROR INFO + WARNING ERROR + FATAL
    “3” FATAL INFO + WARNING + ERROR FATAL

    注意:
    1、“0”为默认值,输出所有信息
    2、设置为3时,不是说任何信息都不输出,ERROR之上还有FATAL

    来源:ONLY_CHRIST

    物联沃分享整理
    物联沃-IOTWORD物联网 » error: Ignore above cudart dlerror if you do not have a GPU set up on your machine.

    发表评论