anaconda+tensorflow-gpu+pycharm (win版)超级全面的安装教程
前言
通过血战三天三夜,历经七七四十九次回合,我终于把tensorflow-gpu的环境给配置好了,真的是踩坑无数,特此记录。
首先,在网上我发现了大概三种安装(anaconda+tensorflow-gpu)的方式,第一种是直接在虚拟环境中安装cuda+cudnn再装tensorflowgpu的,第二种是单独从官网下载安装cuda+cudnn再去虚拟环境装tensorflowgpu的,第三种是不装cuda直接装tensorflow gpu的
首先我先尝试的是第一种,第一种步骤简便,但是在虚拟环境中装cudnn的命令时总是报错,明明.condarc文件的anaconda镜像源也换了,显卡也符合要求,网也不卡,但就是报错,然后试了各种方法都不成功,有点玄学,遂放弃。
然后开始了第二种该方法,中间也是有个cudnn的问题(又是cudnn的问题,好像上辈子和他有点小仇),不过解决了,最终成功了,于是准备写博客记录下♥
至于第三种就没有尝试啦,想尝试的小伙伴可以去尝试下😀
首先进行版本的对应
一定一定一定要在安装之前确定好要安装的版本,要对应好再去下载安装❀查看对应版本传送门
那么,如何选择可以自己适用的版本呢?首先,先查看自己显卡的CUDA支持的最高版本
方法一:桌面右键打开NVIDIA控制面板-帮助-系统信息-组件
方法二:在cmd中输入nvidia-smi查看
由上图可以看出,我的CUDA最高到12,所以12及其以下的我都可以选择
由于最近看别人代码和运行别人代码以及书上代码好多是1.x版本的,所以我安装的是tensorflow_gpu 1.15,不过有的显卡的CUDA有最低的版本限制也要注意下,最好还是下载适合自己显卡最新的tensorflow_gpu
所以最终要安装的是:(按照上面版本对应的表格选择对应要下载的)
查看电脑支持的CUDA最高版本->选择合适的CUDA版本(一般低于CUDA最高版本的都可向下兼容,不过有的显卡限制CUDA最低版本需要根据实际情况查一下)->根据表格选择相应的cudnn,visual studio,tensorflow-gpu版本
安装visual studio
1)安装对应版本安装包
链接:https://pan.baidu.com/s/1yH8KyDb8-dVavX1lJzZn2A
提取码:1234
–来自百度网盘超级会员V4的分享(内含vs2017,vs 2019,cuda 10.0,cudnn 7.4,pycharm2023专业版)
2)只选择“使用C++桌面开发”即可,安装位置可以根据需要进行更改
cuda和cudnn安装
1.更新显卡驱动 传送门
2.cuda安装
1)下载cuda安装包
官网下载:传送门
如有需要下载和我相同的版本资源:
链接:https://pan.baidu.com/s/1yH8KyDb8-dVavX1lJzZn2A
提取码:1234
–来自百度网盘超级会员V4的分享(内含vs2017,vs 2019,cuda 10.0,cudnn 7.4,pycharm2023专业版注意网盘内资源版本
)
官网安装教程:
1.选择需要的版本:
2.按下图选择:
local还是network都可,任君选择,我选的是network
2)点击exe安装包
这三个安装位置可以根据需要换到不是c盘,要记住这三个安装位置
后面会用到
3)检验CUDA安装是否成功
3. cudnn的安装
1)下载cudnn
官网:传送门
如有需要下载和我相同的版本资源:
链接:https://pan.baidu.com/s/1yH8KyDb8-dVavX1lJzZn2A
提取码:1234
–来自百度网盘超级会员V4的分享(内含vs2017,vs 2019,cuda 10.0,cudnn 7.4,pycharm2023专业版注意网盘内资源版本
)
官网安装教程:
a.选择点击所需的版本
b.选择使用平台
下载完得到一个压缩包
2)解压压缩包,将cudnn包里面的bin, include, lib 三个文件夹,将他们三个复制到中CUDA Documentation的那个路径中对应的bin, include, lib 三个文件夹中去。(就是刚才安装CUDA时候让记住的三个位置)即:
3)查看和修改环境变量
电脑-属性-高级设置-环境变量中的系统变量检查有无这两项,没则加之(CUDA Documentation的那个路径)
接下来,打开系统变量path
检查有无下面这四个路径,无则加之
这四个路径打开安装CUDA Documentation的那个路径下面文件,右键属性里面有文件位置可以复制路径到环境变量
anaconda下载安装
1.下载anaconda安装包(注意对应的python版本)由于我选择是python3.7
anaconda与python版本对应关系:传送门
官网下载:传送门
如果官网下载太慢可以采用清华镜像源下载
如有需要下载和我相同的版本资源:
链接:https://pan.baidu.com/s/1yH8KyDb8-dVavX1lJzZn2A
提取码:1234
–来自百度网盘超级会员V4的分享(内含vs2017,vs 2019,cuda 10.0,cudnn 7.4,pycharm2023专业版注意网盘内资源版本
)
2.除了记得改安装位置和下图第一个一定要勾选(自动配置好环境变量)其他一路next即可
tensorflow-gpu
1.开始-搜索anaconda prompt 进入命令台
2.
查看所安装的anaconda对应的python版本
2.1创建虚拟环境(记得用自己选择的python版本)
conda create -n tensorflow-gpu python=3.7
2.2激活/启动虚拟环境
conda activate tensorflow-gpu
2.3 修改为清华源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
如果报错没有pip,安装:
pip install pip -U
2.4 安装Tensorflow-gpu 1.15
2.4.1安装
pip install tensorflow-gpu=1.15
一定要保证在刚才创建启动的虚拟环境中安装即:
2.4.2 tensorflow-gpu 测试
在安装好tensorflow-gpu的虚拟环境中依次输入:
python
import tensorflow as tf
print(tf.__version__)
print(tf.test.is_gpu_available())
exit()
出现以上测试结果这证明tensorflow-gpu环境配备成功啦❀
然后输入exit()退出python编写
最后输入 conda deactivate tensorflow-gpu 或者conda deactivate 退出虚拟环境
2.4.3 测试不成功可能出现的问题及解决方案(没有error的可以不用看啦):
1)输入import tensorflow as tf后报错(部分关键信息截图):
解决方案:报错的主要原因是因为protobuf的版本太高而导致编译错误,所以我们只需要按照编译器提示的信息下载3.19.0对应的版本即可解决问题。
pip install protobuf==3.19.0
2)输入 print(tf.test.is_gpu_available())后返回的是false
解决方案:传送门
不过我的false的原因不在这几种里面,我感觉我的这个问题比较玄学,不具有普遍性,不过还是要记录一下,这个问题卡了我好久
我这个报错信息是cudnn64-7 not found 从而造成的false(tip:这里有个都错误信息的小技巧,一般这种出现大片信息的,Trace back那种就要看最底下报错是什么,因为Traceback是不断向上层返回,知道最上层出现的问题是真正的错误信息,然后像这种一堆successful加载出来的,然后突然从某一处开始报错就是错误原因,看到错误信息不要害怕 ,仔细看下分析下报错信息,看不懂就百度谷歌上找错误翻译或是解决方案)
cudnn64-7 not found网上是说可能版本不匹配,但是我的版本没有问题,然后其他几个解决方案也都不太行,我都开始怀疑是不是我哪个版本出问题了
,但最后的解决办法是重新下载了cudnn再对应粘到cuda文件下,再去测验就发现好了,最终的问题竟然是cudnn的包下载过程中可能出现问题了
当你觉得很多地方都没有问题,网上也找不到解决方案时,大概率是某个包下载的时候没下载好,就类似于做嵌入式时,软件怎么看都没问题,大概率时硬件出问题了,或者某个简单的流程漏掉了如忘记了复位
pycharm下载安装并配置
1 下载安装包
官网:传送门
学生可以免费申请专业版pycharm,可以自己搜下教程❀
如有需要下载和我相同的版本资源:
链接:https://pan.baidu.com/s/1yH8KyDb8-dVavX1lJzZn2A
提取码:1234
–来自百度网盘超级会员V4的分享(内含vs2017,vs 2019,cuda 10.0,cudnn 7.4,pycharm2023专业版注意网盘内资源版本
)
2.安装
网上安装教程就很多了,不做赘述
3.pycharm 配置tensorflow-gpu环境
选择add Local Interpreter
输入代码运行测验(返回【2,4,6】即为正确:
测试代码:
import tensorflow as tf
with tf.device('/cpu:0'):
a = tf.constant([1.0, 2.0, 3.0], shape=[3], name='a')
b = tf.constant([1.0, 2.0, 3.0], shape=[3], name='b')
with tf.device('/gpu:1'):
c = a + b
# 注意:allow_soft_placement=True表明:计算设备可自行选择,如果没有这个参数,会报错。
# 因为不是所有的操作都可以被放在GPU上,如果强行将无法放在GPU上的操作指定到GPU上,将会报错。
sess = tf.Session(config=tf.ConfigProto(allow_soft_placement=True, log_device_placement=True))
# sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
sess.run(tf.global_variables_initializer())
print(sess.run(c))
到此就大功告成,完结撒花啦❀❀❀