在Ubuntu 16.04.6上使用tensorflow-GPU出现的问题记录及解决办法

由于需要,实习时在服务器上安装了anaconda3+tensorflow-gpu+keras,
使用的时候一直都是使用

import os
os.environ['CUDA_VISIBLE_DEVICES']=“0”

来指定使用第0个gpu,程序也一直是使用GPU加速计算的,但是奇怪的是今天忽然发现程序运行很慢,并且运行时出现“Your CPU supports instructions that this TensorFlow binary was not compiled to use”这个警告。

通过使用nvidia-smi查看GPU使用状态,发现GPU使用率为0,但是明明我已经指定了使用GPU啊!!!
然后我使用如下代码查询了一下

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices()) 

发现已经检测不到GPU了,只有CPU。。。
查看库的安装路径:pip show tensorflow-gpu
通过网络查找各种解决办法,说是安装keras时安装了tensorflow,两者冲突,然后需要重新卸载,只安装GPU版的tensorflow,虽说我pip list了一下并没有发现单独的tensorflow,我还是重新卸载又安装了一下

pip uninstall tensorflow tensorflow-gpu keras
pip --upgrade tensorflow-gpu keras

然后结果嘞,运行程序发现新的bug出现了:

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

emm,又google了一下,发现是说tensorflow版本与CUDA的版本不对应, 然后我看了一下我安装的tensorflow-gpu的版本是1.13.0的,但是CUDA版本是8.0的。(cuda-8.0是你安装的cuda的文件夹)
查看CUDA版本:cat /usr/local/cuda-8.0/version.txt

然后去查一下cuda和tensorflow-gpu对应的版本号,见Tensorflow CUDA及CUDNN版本对应关系表查询

然后通过pip uninstall 卸载掉安装的tensorflow-gpu和keras
使用如下命令重新安装对应版本的tensorflow-gpu:

pip install tensorflow-gpu==1.4.0 keras

安装完成之后,测试一下发现在终端是可以正常使用gpu了,但是在使用pycharm远程调试时出现ImportError:libcusolver.so.8.0: cannot open shared object file: No such file or directory

原因是无法加载libcusolver.so等,查看远程服务器LD_LIBRARY_PATH环境变量,已经设置了文件路径/usr/local/cuda-8.0/lib64(从远程服务器正常import知道,这点配置是没问题的)。

解决:在edit configurations中配置python运行环境变量,添加LD_LIBRARY_PATH,设置路径/usr/local/cuda-8.0/lib64(你的cuda安装目录里面的lib64)

之后再次运行之前程序,发现又开始报错:

  • TypeError: while_loop() got an unexpected keyword argument ‘maximum_iterations’

  • TypeError: softmax() got an unexpected keyword argument ‘axis’

是因为我的CUDA版本为CUDA8.0,所以tensorflow版本有限制,只能用1.4.0以下的版本,之前keras版本太高了,所以才会报以上错误
重新安装keras

pip install keras==2.1.2

更新keras版本后,错误解决
哎,环境问题真的真的太折腾了!!!

你可能感兴趣的:(Tensorflow,工具的使用)