文章目录
- 问题
- windows安装tensorflow_gpu版本
- 检查显卡是否支持cuda
- 查看自己的显卡型号
- 去官网查看是否支持cuda
- 检查显卡的cuda算力
- 按照GPU算力3.0的电脑配置进行配置
- 安装python3.6的anaconda包
- 安装tensorflow-gpu 1.4
- 安装cuda8.0和cudnn6.0
- 现在cuda和cudnn都有了,是否可以开始安装了?
- 测试tensorflow能否运行
- 一些问题
- 如何知道我安装的tensorflow是cpu还是gpu版本
- 如何指定cpu或者gpu参与运算
- RuntimeError: The Session graph is empty. Add operations to the graph before calling run().
- Could not load dynamic library ‘cublas64_10.dll‘; dlerror: cublas64_10.dll not found
- FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is
- 查询Anaconda安装路径
- pycharm发现一些包安装了但是没有检索到
问题
cpu版本的tensorflow虽然安装方便,但是运行太慢了,同样是手写识别测试,gpu可以把cpu5分钟做完的事情40秒内做完
现在笔记本上大都有独立显卡,而且配置不低,如果不想使用tensorflow时CPU有难,GPU围观,最好还是安装gpu版本吧
windows安装tensorflow_gpu版本
检查显卡是否支持cuda
CUDA(Compute Unified Device Architecture),显卡厂商NVidia推出的运算平台。 通用并行计算架构,该架构使GPU能够解决复杂的计算问题。
查看cuda中是否有自己电脑显卡的型号
cuda是英伟达的,因此nvida的显卡可以用,其他的绕道,老实安装cpu版本吧
查看自己的显卡型号
去官网查看是否支持cuda
http://developer.nvidia.com/cuda-gpus
检查显卡的cuda算力
非常必须的是检查显卡对于cuda的算力 ,不同版本的tensorflow-gpu版本对显卡的算力要求不同,如果显卡算力达不到tensorflow-gpu版本期望的算力,他将不会使用你的GPU进行计算,也就是说安了也没用,它只是使用你的cpu计算
如下报错提示:
忽略具有计算能力3.0的可见gpu设备。所需的最小Cuda能力为3.5
因此应该下载和你的显卡算力相匹配的tensorflow-gpu版本
算力查看
后面的小数就是cuda的计算能力
我的显卡型号是gt645m显卡,算力只有3.0
不得不使用tensorflow-gpu 1.4+cuda8.0+cuddn6.0,这种tensorflow配置,再高的gpu版本,算力就要求3.5以上了
而且python3.6可以使用tensorflow-gpu 1.4,python3.7就不支持了,因此这些配置都是环环相扣的,在此仅仅针对于我的电脑配置
如果你的显卡很好,也可以使用此配置,因为只要算力超过3.0都能用,也不耽误你的gpu计算,而且也比较稳定
当然,最新的tensorflow版本会有一些革新,你可以使用更新的tensorflow-gpu版本体验新功能,查看那种tensorflow-gpu版本所要求的cuda算力门槛就行了
按照GPU算力3.0的电脑配置进行配置
安装python3.6的anaconda包
官方地址:https://repo.anaconda.com/archive/
清华大学镜像:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
3.6的对应的是 Anaconda 5.2,5.3以后的都是python 3.7的了,安装时要注意版本对应问题,操作系统、以及32bit与64bit的选择。
安装时注意勾选自动配置环境变量path,
安装tensorflow-gpu 1.4
安装好anaconda包后以管理员身份进入Anaconda Prompt命令管理工具
因为涉及到一些文件的下载和安装,Anaconda Prompt需要权限
进入cmd,运行pip install tensorflow-gpu==1.4.0
等待tensorflow-gpu自动从网络上下载文件安装完成,
如果中途有网络断了,重新运行此命令,已经下载的文件不会重复下载,会自动识别,从之前断掉的位置下载,因此不用担心
安装cuda8.0和cudnn6.0
为什么说这两个要一起安装?
因为他们是一体的,版本互相支持,但是被分成了两个文件,需要从官网分开下载,下错了一个都不能用,非常扯淡
点击他们的官网先注册一个账号,因为下载cudnn6.0的时候需要登录才能下载
或者先不注册,等下载的时候有弹窗,然后注册也行
从官网下载
cuda8.0
正确的8.0版本下载地址: https://developer.nvidia.com/cuda-80-ga2-download-archive
根据自己的电脑系统类型和版本选择
后面的两个8.0本体包和补丁包都要下载,暂时不要安装,接下来下cudnn6.0
cudnn6.0下载地址
界面非常具有迷惑性,进入界面需要注册账号,同时展示的还不是cudnn6.0的
https://developer.nvidia.com/rdp/cudnn-download
查看历史版本
注意到了吗?cuda和cudnn的版本都是相互对应的
现在cuda和cudnn都有了,是否可以开始安装了?
不行,因为想要安装cuda需要安装Visual Studio 2015
CUDA8.0不支持Visual Studio 2017,使用VS2017会报错。
安装cuda8.0需要用到Visual Studio 2015的一些库
因此需要先安装Visual Studio 2015
ISO文件下载
https://download.microsoft.com/download/8/4/3/843ec655-1b67-46c3-a7a4-10a1159cfa84/vs2015.3.ent_enu.iso
使用虚拟光驱加载iso文件,然后安装即可
安装时需要注意勾选自定义配置,别的选项都可以使用默认值。VS2015的默认安装不包括C++的编译器,必须手动勾选Visual C++,不然会面临后续的CUDA编译错误。
Visual Studio 2015安装好后就可以安装cudn8.0了,选择一个地址开始安装
先安装cuda本体
然后再安装cuda的补丁,即同cuda8.0一起下载的第二个文件
然后解压cudnn6.0的压缩包,bin, include, lib,将文件夹下的内容全部复制到C:\ProgramData\NVIDIA GPU Computing Toolkit\v8.0这个文件夹下
此时去查看系统变量
CUDA_PATH和CUDA_PATH_V8.0已经存在,这是在安装cuda时自动创建的,路径是C:\ProgramData\NVIDIA GPU Computing Toolkit\v8.0
查看cuda是否安装成功
V要大写,不然不识别,真是人才啊,当初使用v看到错误迷惑了好久
查看cuda安装位置
查看cuda是否安装成功
跳转到cuda安装的路径
结尾都是pass就成功了
另外一种测试的方式是
双击打开cuda安装路径下的指示文件,会启动vs2015
右键编译可以编译得到deviceQuery和bandwidthTest两个exe文件
同上面一样,识别出了gpu,并且pass即可
如果出错也正好可以检测cuda是否正确安装
TRK0005: Failed to locate: “CL.exe”. The system cannot find the file specified.系统找不到CL.exe,无法编译文件。面对这个错误那就是你没选Visual C++,需要重新安装时选上这个组件。
MSB8036: Windows SDK 8.1 was not found.如果你同时看到了这个错误说你没有安装 Windows SDK 8.1,那也可以通过安装C++ Redistribution这个来解决。
error MSB3721:路径错误,去看看路径是否存在中文
测试tensorflow能否运行
import tensorflow as tf
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
print(sess.run(c))
此时可以发现调用了gpu运行,并得到了结果
如果你发现了如下的错误,这里能够解决
一些问题
如何知道我安装的tensorflow是cpu还是gpu版本
import os
from tensorflow.python.client import device_lib
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "99"
if __name__ == "__main__":
print(device_lib.list_local_devices())
这里会列出可以使用计算的设备,cpu和gpu已经列出,如果是cpu版本只会有cpu
如何指定cpu或者gpu参与运算
import tensorflow as tf
# 使用CPU进行计算
with tf.device("/cpu:0"):
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3])
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2])
c = tf.matmul(a, b)
# 查看计算时硬件的使用情况
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
print(sess.run(c))
#使用CPU进行计算
with tf.device("/cpu:0"):
a = tf.constant([1.0,2.0,3.0,4.0,5.0,6.0],shape=[2,3])
b = tf.constant([1.0,2.0,3.0,4.0,5.0,6.0],shape=[3,2])
c = tf.matmul(a,b)
#查看计算时硬件的使用情况
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
print(sess.run(c))
通过tf.device可以指定计算时使用的设备,0表示设备的个数。如果想要使用GPU进行计算,就将CPU改成GPU。
RuntimeError: The Session graph is empty. Add operations to the graph before calling run().
这是你的tensorflow是2.x的,不能向下兼容1.x的
tf.compat.v1.disable_eager_execution()
可以解决版本迁移问题
Could not load dynamic library ‘cublas64_10.dll‘; dlerror: cublas64_10.dll not found
在cuda的目录找到提示缺失的dll文件,或者使用everythin找到对应的dll文件
然后将dll文件复制到c:\windows\system32文件夹下
FutureWarning: Conversion of the second argument of issubdtype from float
to np.floating
is
解决思路
包内出错,是h5py包
解决办法
对h5py进行更新升级
pip install h5py==2.8.0rc1
查询Anaconda安装路径
conda info --env
可以知道当前有哪些环境,以及环境路径
pycharm发现一些包安装了但是没有检索到
查看python的模块路径方法是
import sys
print sys.path
在这个python系统路径中加入新的模块路径的三种方法,
1、添加环境变量PYTHONPATH,python会添加此路径下的模块,在.bash_profile文件中添加如下类似行:
export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages
2、在site-packages路径下添加一个路径配置文件,文件的扩展名为.pth,内容为要添加的路径即可
3、sys.path.append()函数添加搜索路径,参数值即为要添加的路径。