我的tensorflow-gpu安装之路(成功安装2.0和2.1)

首先说一下我的电脑环境:

windows10,python3.7.4。

安装步骤:

以管理员身份打开anaconda prompt,

conda install protobuf

pip install tensorflow-gpu==2.0.0

安装好tensorflow-gpu 2.0之后,我依次输入 python,import tensorflow as tf,看到下图的报错

不过不用慌,我要从它的报错反推出它对应的CUDA和cuDNN的版本,从cudart64_100.dll我们可以推测出所需CUDA和cuDNN的版本分别是10.0和7.6.4。于是我们去这里(CUDAcuDNN)下载这两个对应版本的安装包,我这里都是去archive里下载的,因为下载首页的版本都偏高。

网上也有人通过安装conda install cupy的方式间接地安装CUDA和cuDNN,请见这里

下载好这两个文件后,先安装CUDA,双击进入安装向导界面,因为我电脑买来时已经安装好Driver components了,所以我就吧下图红框的3个包都取消勾选了。安装好CUDA之后,你去环境变量里看,会发现对了一些CUDA相关的路径。

接下来安装cuDNN,这个没有向导界面,它的安装也是比较独特的:解压后把cuDNN中bin,include,lib文件夹下的3个文件(不是文件夹)对应地复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1中的同名文件夹下面即可。

设置好环境变量就算是大功告成了。关闭anaconda prompt,再重启anaconda prompt,依次输入python,import tensorflow as tf,我们从下图可以看到,这次已经没有任何报错了!开始使用tensoflow2吧!

 

补充,网上有人说配置TensorFlow—GPU版本,根本不用安装什么cuda+cudnn啥的,直接在anaconda里面搜索TensorFlow_gpu(keras_gpu)并下载安装即可,它自动创建cuda+cudnn环境。各位读者还没装的可以试一下。

后来在运行object detection tutorial.ipynb时遇到了报错,这个github issue里说到加一些代码后TF2.1就能成功运行了,于是我决定把TF升级到2.1试试。(以下报错仅针对tensorflow2.1,2.0的用户可以漠视)

pip uninstall tensorflow-gpu(不用加版本后缀)

pip install tensorflow-gpu==2.1.0

眼看它提示我安装成功了,没想到后面还是发生了我不想要的报错

后来百度了一些“Failed to load the native TensorFlow runtime.”怎么办,有人说用

pip install --upgrade --ignore-installed tensorflow

这下安装过程看起来正常多了,我看到这次它下载了protobuf这个很重要的库,还有其他一些库,看来刚刚那种安装方法会少装很多依赖库啊,难怪会出错。

 不过上图的红字提醒我少装了4个库,那我再单独装一下呗。不同包用空格隔开,这样就可以同时安装4个包

pip install pyqt5==5.12 pyqtwebengine==5.12 typed-ast==1.4.0 six==1.12

 好了,再import tensorflow as tf 看看,md,还是跟原来的一样的报错:

python -c "import tensorflow as tf; print(tf.version)"
Traceback (most recent call last):
File "C:\venv113\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in
from tensorflow.python.pywrap_tensorflow_internal import *
File "C:\venv113\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in
_pywrap_tensorflow_internal = swig_import_helper()
File "C:\venv113\lib\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 "C:\venv113\lib\imp.py", line 243, in load_module
return load_dynamic(name, filename, file)
File "C:\venv113\lib\imp.py", line 343, in load_dynamic
return _load(spec)
ImportError: DLL load failed: 找不到指定的模块.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "", line 1, in
File "C:\venv113\lib\site-packages\tensorflow_init_.py", line 24, in
from tensorflow.python import pywrap_tensorflow # pylint: disable=unused-import
File "C:\venv113\lib\site-packages\tensorflow\python_init_.py", line 49, in
from tensorflow.python import pywrap_tensorflow
File "C:\venv113\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 74, in
raise ImportError(msg)
ImportError: Traceback (most recent call last):
File "C:\venv113\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in
from tensorflow.python.pywrap_tensorflow_internal import *
File "C:\venv113\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in
_pywrap_tensorflow_internal = swig_import_helper()
File "C:\venv113\lib\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 "C:\venv113\lib\imp.py", line 242, in load_module
return load_dynamic(name, filename, file)
File "C:\venv113\lib\imp.py", line 342, in load_dynamic
return _load(spec)
ImportError: DLL load failed: 找不到指定的模块.

Failed to load the native TensorFlow runtime.

 好了,我知道我又要开始那熟悉又漫长的debug之路了。

话说我把tensorflow版本从2.0更新到2.1,cuda和cudnn是不是也要跟上去,貌似是的,反正我更新成10.1和10.1对应的cudnn7.6.4了(注意,10.1对应的cudnn也叫7.6.4,但在archive 下载页,两者是分开下载的)

我以为更新好cuda和cudnn版本,报错就没有了,import 一下,md,还是有。

接着我试着去报错里提供的tensorflow错误收集官网https://www.tensorflow.org/install/errors查看错误记录里有没有跟我一样的,翻到最后看到github issue 2251222794跟我的问题相关。

点进去22512看了一圈,没结果,又点进去22794,滚到差不多最下面(因为新的回答在下面,我这个tensorflow2.1是新出的,有相关回答的话应该出现在最下面),终于看到跟我的情况差不多的回答,都是在装好tensorflow2.1后import tensorflow时遇到的。

原来答案就藏在tensorflow2.1 的 release note 里啊!看来我得吸取教训:以后再安装新版tensorflow时,一定要先去看看它的release note

这样看来,我是少装了Microsoft Visual C++ Redistributable for Visual Studio 2019,于是我就去他们的官方下载网页下载了vc_redist.x64.exe。

下载好后安装:

安装好后它说要重启才生效

重启后再import tensorflow as tf真的没问题了~

安装好后我们可以在命令行里直接输入

nvidia-smi
nvcc --version

 来查看GPU的更多信息,比如占用GPU资源的进程有哪些。

因为我装的是GPU版,所以后面会经常需要往脚本里写入下面的代码:

# tensorflow 1版加下面的代码
conf = tf.ConfigProto()
conf.gpu_options.per_process_gpu_memory_fraction = 0.6
conf.gpu_options.allow_growth = True
session = tf.Session(config=conf)

# tensorflow2版加下面代码
gpus = tf.config.experimental.list_physical_devices('GPU')
if gpus:
    try:
        for gpu in gpus:
            tf.config.experimental.set_memory_growth(gpu, True)
        tf.config.experimental.set_virtual_device_configuration(gpus[0], [
            tf.config.experimental.VirtualDeviceConfiguration(memory_limit=1024 * 4)])
    except RuntimeError as e:
        print(e)

 

工作繁忙创作不易,果本文帮助到了您,欢迎打赏~

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值