标签:Ubuntu16.04 gpu 版本 tensorflow np TensorFlow type
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
我的配置如下图:
2. 选取适合的TensorFlow-gpu版本
伙伴们可以去TensorFlow官网上查看对应自己Linux/Python/CUDA/Cudnn配置的TensorFlow-gpu的版本,也给大家再放一遍网址:TensorFlow对应版本网址。可以从下图看出对应我的Linux/Python/CUDA/Cudnn的版本就是红框中的几款,这几款就要看运行的Code是需要什么版本了。
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
这是昨天装TensorFlow-gpu遇到的一些坑随手就记录了下来,以后有问题会不断补充上来的,感谢大家的支持和大佬的帮助~
标签:Ubuntu16.04,gpu,版本,tensorflow,np,TensorFlow,type 来源: https://blog.csdn.net/weixin_43624538/article/details/98209877
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。