使用 tensorflow-gpu 后端导入 Keras 时出错(找不到 libcublas.so.10.0)

Posted

技术标签:

【中文标题】使用 tensorflow-gpu 后端导入 Keras 时出错(找不到 libcublas.so.10.0)【英文标题】:Error in importing Keras with tensorflow-gpu backend (can't find libcublas.so.10.0) 【发布时间】:2019-10-09 19:34:25 【问题描述】:

我正在尝试运行 Keras 中包含的库,因为它非常耗电,我想使用 tensorflow-gpu 作为后端。 在导入期间,我收到此 ImportError

Using TensorFlow backend.

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
~/.conda/envs/tensorflow/lib/python3.7/site-packages/tensorflow/python/pywrap_tensorflow.py in <module>
     57 
---> 58   from tensorflow.python.pywrap_tensorflow_internal import *
     59   from tensorflow.python.pywrap_tensorflow_internal import __version__

~/.conda/envs/tensorflow/lib/python3.7/site-packages/tensorflow/python/pywrap_tensorflow_internal.py in <module>
     27             return _mod
---> 28     _pywrap_tensorflow_internal = swig_import_helper()
     29     del swig_import_helper

~/.conda/envs/tensorflow/lib/python3.7/site-packages/tensorflow/python/pywrap_tensorflow_internal.py in swig_import_helper()
     23             try:
---> 24                 _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
     25             finally:

~/.conda/envs/tensorflow/lib/python3.7/imp.py in load_module(name, file, filename, details)
    241         else:
--> 242             return load_dynamic(name, filename, file)
    243     elif type_ == PKG_DIRECTORY:

~/.conda/envs/tensorflow/lib/python3.7/imp.py in load_dynamic(name, path, file)
    341             name=name, loader=loader, origin=path)
--> 342         return _load(spec)
    343 

ImportError: libcublas.so.10.0: cannot open shared object file: No such file or directory

During handling of the above exception, another exception occurred:

ImportError                               Traceback (most recent call last)
<ipython-input-11-bbde2f34164a> in <module>
      2 from torch.optim import Adam
      3 from torch.utils.data import TensorDataset, DataLoader, RandomSampler, SequentialSampler
----> 4 from keras.preprocessing.sequence import pad_sequences
      5 from sklearn.model_selection import train_test_split
      6 from pytorch_pretrained_bert import BertTokenizer, BertConfig

~/.conda/envs/tensorflow/lib/python3.7/site-packages/keras/__init__.py in <module>
      1 from __future__ import absolute_import
      2 
----> 3 from . import utils
      4 from . import activations
      5 from . import applications

~/.conda/envs/tensorflow/lib/python3.7/site-packages/keras/utils/__init__.py in <module>
      4 from . import data_utils
      5 from . import io_utils
----> 6 from . import conv_utils
      7 
      8 # Globally-importable utils.

~/.conda/envs/tensorflow/lib/python3.7/site-packages/keras/utils/conv_utils.py in <module>
      7 from six.moves import range
      8 import numpy as np
----> 9 from .. import backend as K
     10 
     11 

~/.conda/envs/tensorflow/lib/python3.7/site-packages/keras/backend/__init__.py in <module>
     87 elif _BACKEND == 'tensorflow':
     88     sys.stderr.write('Using TensorFlow backend.\n')
---> 89     from .tensorflow_backend import *
     90 else:
     91     # Try and load external backend.

~/.conda/envs/tensorflow/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py in <module>
      3 from __future__ import print_function
      4 
----> 5 import tensorflow as tf
      6 from tensorflow.python.framework import ops as tf_ops
      7 from tensorflow.python.training import moving_averages

~/.conda/envs/tensorflow/lib/python3.7/site-packages/tensorflow/__init__.py in <module>
     22 
     23 # pylint: disable=g-bad-import-order
---> 24 from tensorflow.python import pywrap_tensorflow  # pylint: disable=unused-import
     25 
     26 from tensorflow._api.v1 import app

~/.conda/envs/tensorflow/lib/python3.7/site-packages/tensorflow/python/__init__.py in <module>
     47 import numpy as np
     48 
---> 49 from tensorflow.python import pywrap_tensorflow
     50 
     51 # Protocol buffers

~/.conda/envs/tensorflow/lib/python3.7/site-packages/tensorflow/python/pywrap_tensorflow.py in <module>
     72 for some common reasons and solutions.  Include the entire stack trace
     73 above this error message when asking for help.""" % traceback.format_exc()
---> 74   raise ImportError(msg)
     75 
     76 # pylint: enable=wildcard-import,g-import-not-at-top,unused-import,line-too-long

ImportError: Traceback (most recent call last):
  File "/home/canniz/.conda/envs/tensorflow/lib/python3.7/site-packages/tensorflow/python/pywrap_tensorflow.py", line 58, in <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
  File "/home/canniz/.conda/envs/tensorflow/lib/python3.7/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module>
    _pywrap_tensorflow_internal = swig_import_helper()
  File "/home/canniz/.conda/envs/tensorflow/lib/python3.7/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper
    _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
  File "/home/canniz/.conda/envs/tensorflow/lib/python3.7/imp.py", line 242, in load_module
    return load_dynamic(name, filename, file)
  File "/home/canniz/.conda/envs/tensorflow/lib/python3.7/imp.py", line 342, in load_dynamic
    return _load(spec)
ImportError: libcublas.so.10.0: cannot open shared object file: No such file or directory


Failed to load the native TensorFlow runtime.

我在这里看到 --> ImportError: libcublas.so.10.0: cannot open shared object file: No such file or director 问题可能是 CUDA 版本与 tensorflow GPU 不兼容。

所以现在我的问题如下:

Tensorflow GPU 版本为 1.13

我已经安装了 CUDA 10.0(按照兼容性说明)和相关的 Cudnn 实际上是我从 nvcc --version 得到的 是 `nvcc:NVIDIA (R) Cuda 编译器驱动程序 版权所有 (c) 2005-2018 NVIDIA Corporation 建于 Sat_Aug_25_21:08:01_CDT_2018 Cuda 编译工具,10.0 版,V10.0.130

我安装了运行 sudo apt-get install nvidia-driver-430 的 Nvidia 驱动程序(这应该是我的 Nvidia-GeForce-930mX 的正确版本)

如您所见,CUDA 版本为 10.2。这怎么可能? 是否有可能安装 Nvidia 驱动程序,它会自动将 CUDA 驱动程序设置为 10.2,然后我手动安装了 CUDA 工具包 10.0,所以现在 Tensorflow(或更具体地说是使用 tf 后端的 Keras)查看 CUDA DRIVER 版本?

我能做什么?降级Nvidia驱动程序?安全吗?是否可以仅降级 CUDA 驱动程序?

【问题讨论】:

【参考方案1】:

您可以尝试卸载 tensorflow:

pip uninstall tensorflow-gpu

并安装它的旧版本:

pip install tensorflow-gpu==1.12.0

【讨论】:

不知道为什么有人给你“-1”,居然解决了问题!谢谢 啊哈,我也不知道,但很高兴能帮到你!

以上是关于使用 tensorflow-gpu 后端导入 Keras 时出错(找不到 libcublas.so.10.0)的主要内容,如果未能解决你的问题,请参考以下文章

如何降级使用 tensorflow-gpu 安装的 hdf5

是否有 R 命令使 Keras Tensorflow-GPU 在 CPU 上运行?

cuda8.0如何安装TensorFlow-gpu?

在 ubuntu18.04 中导入错误 tensorflow-gpu

如何让 Keras 在 Anaconda 中使用 Tensorflow 后端?

在 keras(tensorflow 后端)中计算梯度时出错