当前位置:   article > 正文

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

tensorflow2.0和2.1

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

windows10,python3.7.4。

安装步骤:

以管理员身份打开anaconda prompt,

  1. conda install protobuf
  2. 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,还是跟原来的一样的报错:

  1. python -c "import tensorflow as tf; print(tf.version)"
  2. Traceback (most recent call last):
  3. File "C:\venv113\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in
  4. from tensorflow.python.pywrap_tensorflow_internal import *
  5. File "C:\venv113\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in
  6. _pywrap_tensorflow_internal = swig_import_helper()
  7. File "C:\venv113\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 24, in swig_import_helper
  8. _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
  9. File "C:\venv113\lib\imp.py", line 243, in load_module
  10. return load_dynamic(name, filename, file)
  11. File "C:\venv113\lib\imp.py", line 343, in load_dynamic
  12. return _load(spec)
  13. ImportError: DLL load failed: 找不到指定的模块.
  14. During handling of the above exception, another exception occurred:
  15. Traceback (most recent call last):
  16. File "", line 1, in
  17. File "C:\venv113\lib\site-packages\tensorflow_init_.py", line 24, in
  18. from tensorflow.python import pywrap_tensorflow # pylint: disable=unused-import
  19. File "C:\venv113\lib\site-packages\tensorflow\python_init_.py", line 49, in
  20. from tensorflow.python import pywrap_tensorflow
  21. File "C:\venv113\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 74, in
  22. raise ImportError(msg)
  23. ImportError: Traceback (most recent call last):
  24. File "C:\venv113\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in
  25. from tensorflow.python.pywrap_tensorflow_internal import *
  26. File "C:\venv113\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in
  27. _pywrap_tensorflow_internal = swig_import_helper()
  28. File "C:\venv113\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 24, in swig_import_helper
  29. _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
  30. File "C:\venv113\lib\imp.py", line 242, in load_module
  31. return load_dynamic(name, filename, file)
  32. File "C:\venv113\lib\imp.py", line 342, in load_dynamic
  33. return _load(spec)
  34. ImportError: DLL load failed: 找不到指定的模块.
  35. 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真的没问题了~

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

  1. nvidia-smi
  2. nvcc --version

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

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

  1. # tensorflow 1版加下面的代码
  2. conf = tf.ConfigProto()
  3. conf.gpu_options.per_process_gpu_memory_fraction = 0.6
  4. conf.gpu_options.allow_growth = True
  5. session = tf.Session(config=conf)
  6. # tensorflow2版加下面代码
  7. gpus = tf.config.experimental.list_physical_devices('GPU')
  8. if gpus:
  9. try:
  10. for gpu in gpus:
  11. tf.config.experimental.set_memory_growth(gpu, True)
  12. tf.config.experimental.set_virtual_device_configuration(gpus[0], [
  13. tf.config.experimental.VirtualDeviceConfiguration(memory_limit=1024 * 4)])
  14. except RuntimeError as e:
  15. print(e)

 

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/1013578
推荐阅读
相关标签
  

闽ICP备14008679号