前言
笔者有最新的安装TensorFlow-gpu-2.6的文章,强烈推荐看这篇笔者最新的文章!!!!
大前提:你需要拥有NVIDIA的显卡
系统环境
我用的是笔记本电脑
系统:Windows10
显卡:GTX 1050Ti 算力6.1(下边会讲到如何查询显卡算力)
软件:anaconda
准备
需要安装anaconda
若未安装或未曾使用过anaconda,请参考
如何查询NVIDIA算力
首先清楚自己的显卡类型Ctrl + Shift + ESC打开任务管理器,接着点击性能,按照图片所示就清楚显卡
PS:显卡的算力影响你能安装哪一些tensorflow-GPU的版本(如果算力3.5以上基本没什么问题)
进官网之后,要点击如下图,即可查看自己的显卡算力
PS:我的是笔记本电脑,所以看的是Notebook那一列的,如果是台式可以参考左边的。个人认为左边或者右边都可以参考
以下安装为我成功运行的版本,TensorFlow-gpu2.1
直接查看最新的安装方式最好
笔者已经更新了最新安装TensorFlow-gpu-2.6的文章,详细安装过程可以参考强烈推荐看这篇笔者最新的文章!!!!
1、安装VS组件、CUDA
进入VS官网,打开VS安装程序(本人安装的是tensorflow-gpu-2.6,因此对应安装VS2019的部分组件
PS:不需要安装完整的VS,只是需要VS的部分组件
具体是:C++ 2019可在发行程序包以及VS 2019 C++ 生成工具,如下图
一定要安装对版本,尤其是VS组件,才能成功安装CUDA和cuDNN,先安装VS组件,后安装CUDA和cuDnn
使用conda创建虚拟环境
PS:以下很多场合用到conda命令,若不会请参考,也可能会给conda换源,若不会请参考
Win + R输入cmd
1.安装CUDA
输入命令conda create -n tf-gpu-2.1 cudatoolkit=10.1 # 创建一个名为tf-gpu-2.1的虚拟环境
回车以上命令之后,记得输入y然后回车[Enter]
需要的是CUDA的cudatoolkit,因此先安装了它cudatoolkit=10.1
2.进入环境
输入命令activate tf-gpu-2.1 # 进入tf-gpu-2.1的虚拟环境
3.安装cuDNN
输入命令conda install cudnn=7.6 # 使用conda命令安装python3.7
使用conda命令安装。回车以上命令之后,记得输入y然后回车[Enter]
4.安装对应的python
输入命令conda install python=3.7 # 使用conda命令安装python3.7
使用conda命令安装。回车以上命令之后,记得输入y然后回车[Enter]
5.安装对应的TensorFlow-GPU
最关键的一步,这次用的是pip命令安装 TensorFlow-gpu !!!!!
可能需要为pip命令换源,若不会换源,请参考
输入命令pip install tensorflow-gpu==2.1.0
PS:在安装过程中,会安装很多关联的包,等待安装完成即可
6.测试TensorFlow-GPU
在当前环境下,输入python,回车[Enter]
输入以下命令import tensorflow as tf
接着输入tf.test.is_gpu_available()
以上代码会显示显卡型号,显卡算力以及是否可用,若为True,则说明可用。
二、使用pycharm测试代码
1.安装matplotlib
1.进入环境
输入命令activate tf-gpu-2.1 # 进入tf-gpu-2.1的虚拟环境
2.安装matplotlib
输入命令pip install matplotlib
若需要换源,请参考
2.使用pycharm测试代码
如果使用pycharm,如何关联conda创建的虚拟环境请参考
测试代码如下
import tensorflow as tf
import timeit
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
def cpu_run(num):
with tf.device('/cpu:0'):
cpu_a = tf.random.normal([1, num])
cpu_b = tf.random.normal([num, 1])
c = tf.matmul(cpu_a, cpu_b)
return c
def gpu_run(num):
with tf.device('/gpu:0'):
gpu_a = tf.random.normal([1, num])
gpu_b = tf.random.normal([num, 1])
c = tf.matmul(gpu_a, gpu_b)
return c
k = 10
m = 7
cpu_result = np.arange(m, dtype=np.float32)
gpu_result = np.arange(m, dtype=np.float32)
x_time = np.arange(m)
for i in range(m):
k = k * 10
x_time[i] = k
cpu_str = 'cpu_run(' + str(k) + ')'
gpu_str = 'gpu_run(' + str(k) + ')'
cpu_time = timeit.timeit(cpu_str, 'from __main__ import cpu_run', number=10)
gpu_time = timeit.timeit(gpu_str, 'from __main__ import gpu_run', number=10)
cpu_result[i] = cpu_time
gpu_result[i] = gpu_time
print(cpu_result)
print(gpu_result)
fig, ax = plt.subplots()
ax.set_xscale("log")
ax.set_adjustable("datalim")
ax.plot(x_time, cpu_result, color='#005FDD', alpha=0.8, linewidth=1, label='C P U')
ax.plot(x_time, gpu_result, color='#47AC3A', alpha=0.8, linewidth=1, label='G P U')
ax.grid()
plt.legend(loc="upper right")
plt.title("CPU和GPU运行对比")
plt.xlabel('计算量')
plt.ylabel('时间')
plt.draw()
plt.show()
运行结果如下图