错误描述
具体错误描述:
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;
应该很清楚了:
- log信息一共有四个等级,按重要性递增为:
INFO(通知) < WARNING(警告) < ERROR(错误) < FAFAL(致命的); - 值得含义:不同值设置的是基础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