TensorFlow™是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现,其前身是谷歌的神经网络算法库DistBelief 。
Tensorflow拥有多层级结构,可部署于各类服务器、PC终端和网页并支持GPU和TPU高性能数值计算,被广泛应用于谷歌内部的产品开发和各领域的科学研究 。
TensorFlow由谷歌人工智能团队谷歌大脑(Google Brain)开发和维护,拥有包括TensorFlow Hub、TensorFlow Lite、TensorFlow Research Cloud在内的多个项目以及各类应用程序接口(Application Programming Interface, API) 。自2015年11月9日起,TensorFlow依据阿帕奇授权协议(Apache 2.0 open source license)开放源代码 。源自百度。
并且TensorFlow有适应于各种操作系统的版本,并且对于各种编程语言都有对应的版本,这里我们主要是介绍怎么样在python环境下安装tensorflow。
而在安装之前呢,我们需要进行一些准备工作,这里我们主要是针对TensorFlow-gpu版本的安装,首先我们要安装一个Anaconda。关于它,我们这里就不细说了,你可以理解为一个方便管理python环境和各种包的一个工具,有了它之后,我们就可以更加方便地创建,删除,管理python的环境,各种python版本和库版本之间的对应和适配关系,有时候会让我们十分难以管理,而Anaconda可以很好地帮我们分忧!(建议下载,即使不安装TensorFlow)详情:Anaconda
(win11)打开设置—>系统—>系统保护—>硬件—>设备管理器—>显示适配器
可以看到点击出现了NVIDIA GeForce ——,即你的电脑显卡型号。如果有出现,那就表示可以使用TensorFlow-gpu版本,如果没有的就只能老老实实安装CPU版咯。可以去NIVIDIA官网查询一下自己电脑显卡的算力,建议算力>=3.5安装。
可以去Anaconda官网去下载,根据自己电脑的操作系统32位或者64位选择合适的版本,但是官网下载速度很慢,大家可以去清华镜像源下载,那样就快很多了,这个应该不用解释了。
下载合适的版本即可。
下载好安装包之后,双击安装,因为之前我已经安装过了,所以借用下别人的图:
一路Next就行。
用户选择所有
选择存储位置
第一个建议勾选上,打钩之后会自动给你添加到环境变量,如果没打后期也可以自己手动添加,第二个根据自己情况选择吧,没什么太大影响。
这个会给你安装一些配套的软件,直接跳过就行。
OK安装完毕我们来测试一下:
win+r输入cmd打开终端,输入代码
conda --version
查看当前下载的Anaconda版本:
博主的不是最新版的,有需要的大家可以自行更新版本。但其实能用就行了。
添加镜像源:
再一次进行cmd:输入
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
ok,到这里我们的准备工作就做完了。下面开始正式安装TensorFlow-gpu了。
进入cmd输入
conda create --name tensorflow-gpu python==3.6
创建一个名为tensorflow-gpu的python的虚拟环境,并配备一个版本为3.6的python解释器(其实是介于3.6-到3.7之间的版本)
当执行了以上命令后,在你的Anaconda3安装路径下的envs文件夹中应该会出现一个名为tensorflow-gpu的一个文件夹,那便是我们刚刚创建好的环境。可以看到博主的envs里有三个已经创建好的的python环境。
接着输入:
activate hs
激活已经存在的环境hs
可以看到,执行上述代码后,我的用户目录的前面出现了一个(hs)的符号,这就表明我们已经激活了名为hs的python虚拟环境。
输入
conda list
查看当前环境下安装的一些包和python解释器的版本
好了,现在我们就可以开始安装tensorflow了,先按照上述命令创建好环境并激活之后,我们现在有两种方法来安装:conda或者pip(这里提一下,在下载好tensorflow-gpu之后,不管你是下载什么版本,如果想要使用GPU的话,cudatoolkit,cudnn,tensorflow-gpu,在当前python版本满足的前提下,三者的版本必须对应正确,否则就无法正常使用GPU!!!)
tensorflow版本对应关系如下(cudatoolkit是cuda里的一个工具包,也是tensorflow也主要用到的一个包):
了解了其版本对应关系(非常重要!!!)之后,我们就可以来进行tensorflow的安装了。
conda install tensorflow-gpu==2.6.0
键入代码,等号后面+版本,没+的话会默认帮你下载最新版,然后静静等待(大小在几百兆到一两个G不等,所以慢慢等吧。没添加镜像源可能要下到明年-_-!)该方法下载会帮你自动把tensorflow及其相关依赖工具(cudatoolkit和cudnn等)也一起帮你安装好,比较简单,回车之后就会从之前添加的镜像源搜索对应的资源并下载好在你的环境内,优点是不用再额外安装相关依赖和包,全部自动帮你安装好!
但是有一个问题那就是在某些情况下,conda自动帮你下载的相关依赖cudatoolkit或cudnn可能会出现版本不对应,具体通过conda list进行查看,原因:可能是因为Anaconda版本或者镜像源没有相关资源而导致没有安装到正确版本,每个人情况不同,或多或少会出现这样的问题。
可以通过:
conda search -f cudnn
查看从当前所有镜像源可以搜寻到并安装的所有cudnn的版本,cudnn可以换成其他你想要查询的库名。
通过pip安装:
pip install tensorflow-gpu==2.6.0
如果嫌太慢后面可以+一个清华镜像源:-i https://pypi.tuna.tsinghua.edu.cn/simple
pip install tensorflow-gpu==2.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
由于我们是用pip安装,所以安装的过程中就不会自动帮我们把其他相关依赖也安装好,需要自己手动安装。一样的:
pip install cudatoolkit
pip install cudnn
下载对应的版本即可!
同样,该下载方法也可能会出现所需的依赖的版本下载不了的情况,但应该是少数。
该方法稍微麻烦一些,下载的东西也更大一些,(内存紧张的小伙伴建议先清理一下次磁盘空间,留个6-7个G左右就够了)但确实最稳妥的办法!就是cuda,cudnn和tensorflow三个分别单独下载,但要注意其版本对应关系!
cuda官方网站下载地址
进入之后,下滑选择自己需要的版本下载即可!例如我要安装2.4.0版本的tensorflow-gpu,那我就要相应下载11.0版本的CUDA
下载好之后,双击打开进行安装
由于博主下载的是2.6.0版本的tensorflow,所以对应下载的是11.2版本的cuda。
选择好安装路径(默认是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA)安装之后就不能轻易改变了哦,如果想后面移动到D盘那就只能重新安装了,单纯移动或copy是没有用的,详情见 注册表
安装过程一路Next即可,全部勾选
安装完毕之后,在你的安装路径下会多出相关文件夹,接着检查环境变量是否配置成功。正常情况下安装过程中会自动帮我们添加好。
打开电脑设置——>系统——>系统高级设置——>环境变量——>系统变量——>PATH
检查一下有没有下面的路径:
如果没有的话则要自己手动添加!自此我们的CUDA的安装就完成了。
下载地址:https://developer.nvidia.com/rdp/cudnn-archive
第一次单击下载时,会让你先注册登录,然后再进行下载,注册信息就正常填写就行,此处不再过多赘述,注册登录之后接下来进入下载环节:
同样,进入之后,选择对应的版本下载
选择自己的操作系统windows或者Linux。点击下载
下载好之后双击打开解压到一个路径下,建议跟之前的CUDA一个路径,方便后续操作。
然后简单说一下,这里我们需要把cudnn里的三个文件移动或者copy到cuda的对应文件夹里面去
打开cudnn文件夹
打开cuda文件夹
将上述cudnn里面的文件移动或copy到cuda对应文件夹目录下即可!
将另外的文件夹里面的相应文件也移动到cuda的对应的文件目录下(如下图)
博主的是cudnn64_8.dll,版本不同文件有所细微差异,不过很容易分辨的。
自此cudnn的安装也已经完成,接下来就是tensorflow-gpu的安装了!!!
直接win+R打开cmd,先activate激活并进入到我们创建的python环境中去:选择合适的版本(必须和cuda和cudnn版本对应)
pip install tensorflow-gpu==2.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
等待安装完成,自此我们的tensorflow-gpu版本的安装就全部结束了!!!
现在让我们来测试一下吧!
打开pycharm
打开设置——>项目——>python解释器
如图,点右上角的设置图标添加我们之前创建的环境里的python解释器。
点Conda环境,然后选择现有环境,为解释器添加路径(路径就是我们之前创建的python虚拟环境里的python.exe)
在这个路径下去找:D:\Anaconda3\envs\tf-gpu\python.exe
OK!,大功告成!!!
然后随便新建一个python文件复制下面的代码:
import tensorflow as tf
print(tf.__version__)
print(tf.test.gpu_device_name())
print(tf.config.experimental.set_visible_devices)
print('GPU:',tf.config.list_physical_devices('GPU'))
print('CPU:',tf.config.list_physical_devices(device_type='CPU'))
print(tf.config.list_physical_devices('GPU'))
print(tf.test.is_gpu_available())
#输出可用的GPU数量
print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))
#查询GPU设备
运行之后:
出现了当前环境tensorflow的版本以及一些其他信息,博主的版本是2.6.0,如果下面出现了True
那就表明我们的tensorflow-gpu已经成功的安装好并且能够正常使用了!
下面来测试一下GPU的运算速度吧!
import tensorflow as tf
import timeit
def cpu_run():
with tf.device('/cpu:0'):
cpu_a = tf.random.normal([10000, 1000])
cpu_b = tf.random.normal([1000, 2000])
c = tf.matmul(cpu_a, cpu_b)
return c
def gpu_run():
with tf.device('/gpu:0'):
gpu_a = tf.random.normal([10000, 1000])
gpu_b = tf.random.normal([1000, 2000])
c = tf.matmul(gpu_a, gpu_b)
return c
cpu_time = timeit.timeit(cpu_run, number=10)
gpu_time = timeit.timeit(gpu_run, number=10)
print("cpu:", cpu_time, " gpu:", gpu_time)
运行结果:
可以看到速度还是要快上不少的,对于机器学习中神经网络模型的训练来说,可以大幅度加快我们的训练进程帮我们节约许多时间,还是十分不错的!
在安装过程中呢,最重要的莫过于tensorflow,python及其依赖项的版本对应了,如果安装了版本不对应的cuda或者cudnn,可能会导致一系列的问题而最终不能正常地调用设备的GPU进行工作了。所以我们在安装的时候必须时刻注意它们之间的版本对应关系,如果说在安装过程中出现了与之前安装的tensorflow版本间的冲突,最简单也是最有效办法就是,在安装之前把之前安装的版本及其依赖项卸载干净,然后再进行安装。