Ubuntu16.04 安装TensorFlow-gpu版本

  • Ubuntu16.04安装TensorFlow-gpu版本
      • 1. 查看CUDA和Cudnn的版本
      • 2. 选取适合的TensorFlow-gpu版本
      • 3. 安装TensorFlow-gpu
      • 4. 测试TensorFlow-gpu是否安装成功
      • 5. 一些报错的解决方案
        • 5.1 numpy的版本过高
        • 5.2 选用的TensorFlow-gpu版本和CUDA/Cudnn版本不符
        • 5.3 ImportError: No module named platform

Ubuntu16.04安装TensorFlow-gpu版本

目前,基于python的深度学习几个常用的框架分别是TensorFlow、Pytorch、Keras、Theano、Caffe等等,伙伴们可以参考大佬的博客——深度学习十大框架比较。最近在用TensorFlow框架,但是在CPU上运行速度太慢了,这就需要我们在GPU上运行,TensoFlow是分为GPU版本和CPU版本的,要根据电脑/服务器的配置选择TensorFlow的版本。我们的服务器上是Ubuntu16.04的,所以下面的分享也主要是基于Ubuntu的。
先放上TenserFlow的官网地址,上面有很多大家可以自娱自乐的东西~哈哈

1. 查看CUDA和Cudnn的版本

我的系统是Linux Ubuntu16.04,Python的版本是3.6,要安装TensorFlow-gpu版本还需要知道服务器上安装的是什么版本的CUDA和Cudnn。

查看CUDA版本的命令:

cat /usr/local/cuda/version.txt

查看Cudnn版本的命令:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

我的配置如下图:
Ubuntu16.04 安装TensorFlow-gpu版本_第1张图片

2. 选取适合的TensorFlow-gpu版本

伙伴们可以去TensorFlow官网上查看对应自己Linux/Python/CUDA/Cudnn配置的TensorFlow-gpu的版本,也给大家再放一遍网址:TensorFlow对应版本网址。可以从下图看出对应我的Linux/Python/CUDA/Cudnn的版本就是红框中的几款,这几款就要看运行的Code是需要什么版本了。
Ubuntu16.04 安装TensorFlow-gpu版本_第2张图片

3. 安装TensorFlow-gpu

因为害怕安装的时候动了主环境,一般我的操作是创建一个新的虚拟环境,如果大家不装虚拟环境也可以,但是还是建议大家创建一个虚拟环境。如果伙伴们是使用docker的,可以参考TensorFlow官网上安装教程,这里就不赘述了。

查看服务器上的虚拟环境命令:
在这里插入图片描述
创建新的虚拟环境:

conda create -n your_new_conda_name python==X.X
# Ex:conda create -n tensorflow python==3.6

然后,你可以重新查看服务器上虚拟环境,看有没有tensorflow的虚拟环境,如果有的话就说明已经创建成功了,没有创建成功的话再执行一遍命令就可以了;
进入新创建的虚拟环境tensorflow:

conda activate tensorflow
# 顺便提一句,退出虚拟环境的命令:conda deactivate tensorflow
# 有时候conda activate会报错,可以用source activate/deactivate激活或者退出

用pip安装tensorflow-gpu:

pip install tensorflow-gpu==1.6.0

4. 测试TensorFlow-gpu是否安装成功

安装成功TensorFLow-gpu以后还需要测试一下,一般用tf.__version__来测试,但是发现如果是装的CPU版本或者GPU版本没有调用显卡此命令也会显示TensorFlow的版本,推荐用下述命令来测试。

import tensorflow as tf
tf.test.is_gpu_available()

如果你可以看到类似下图的反馈(尤其是最后一句为True),说明安装成功啦。

5. 一些报错的解决方案

5.1 numpy的版本过高

在对于安装好的TensorFlow-gpu进行测试的时候可能会遇到下面的情况,则说明环境中numpy的版本过高,重新安装numpy就不会报错了(推荐此配置下numpy的版本为1.14.5)。

as/home/tensor/anaconda2/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:517: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_qint8 = np.dtype([("qint8", np.int8, 1)])
/home/tensor/anaconda2/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:518: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_quint8 = np.dtype([("quint8", np.uint8, 1)])
/home/tensor/anaconda2/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:519: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_qint16 = np.dtype([("qint16", np.int16, 1)])
/home/tensor/anaconda2/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:520: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_quint16 = np.dtype([("quint16", np.uint16, 1)])
/home/tensor/anaconda2/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:521: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_qint32 = np.dtype([("qint32", np.int32, 1)])
/home/tensor/anaconda2/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:526: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  np_resource = np.dtype([("resource", np.ubyte, 1)])

5.2 选用的TensorFlow-gpu版本和CUDA/Cudnn版本不符

如果出现下述的问题则说明选取的TensorFlow-gpu的版本和现有的CUDA/Cudnn的版本不符合(尤其是TensorFlow更新了2.0的版本以后),TensorFlow-gpu对于CUDA/Cudnn的依赖性很强,一定要选用对的版本!!!

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

5.3 ImportError: No module named platform

其实这个问题我也不知道它是怎么出的,是实验室的小伙伴突然问我的,我也就记下来了。
网上的解决方案:例如:编译好Tensorflow,import时出现“ImportError: No module named platform”错误)。(这个在我这里并不适用,所以⬇️)
我的解决方案:我看了一下小伙伴装的1.4.1的版本~但是在我们服务器上不适配,重新装了1.5.0的就没有这个错误了。

Python 2.7.17 |Anaconda, Inc.| (default, Oct 21 2019, 19:04:46) 
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow
Traceback (most recent call last):
  File "", line 1, in <module>
  File "/home/tensor/anaconda2/envs/dx/lib/python2.7/site-packages/tensorflow/__init__.py", line 24, in <module>
    from tensorflow.python import *
  File "/home/tensor/anaconda2/envs/dx/lib/python2.7/site-packages/tensorflow/python/__init__.py", line 49, in <module>
    from tensorflow.python import pywrap_tensorflow
  File "/home/tensor/anaconda2/envs/dx/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow.py", line 25, in <module>
    from tensorflow.python.platform import self_check
ImportError: No module named platform
>>> exit()

这是昨天装TensorFlow-gpu遇到的一些坑随手就记录了下来,以后有问题会不断补充上来的,感谢大家的支持和大佬的帮助~

你可能感兴趣的:(深度学习Deep,Learning,杂志杂八的东西,安装教程,tensorflow-gpu,安装教程,ubuntu)