TensorFlow学习笔记0-安装TensorFlow环境
作者: YunYuan
写在前面
- 系统: Windows Enterprise 10 x64
- CPU:Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz
-
GPU: NVIDIA GeForce GTX 1050 Ti
所以本笔记记录Win10 64位系统下,TensorFlow的GPU版开发环境的搭建。
TensorFlow-GPU环境安装
首先下载安装Anaconda,版本不受限制,最新版即可,我这里是Anaconda3-5.2.0-Windows-x86_64;注意勾选设置环境变量
去https://github.com/fo40225/tensorflow-windows-wheel下载一个你想下载的tensorflow的版本,这里分别依次选择
tensorflow-windows-wheel/1.10.0/py36/GPU/
,
下载cuda92cudnn72avx2
文件夹下的*.whl
文件,我下载的是tensorflow_gpu-1.10.0-cp36-cp36m-win_amd64.whl
,可以看到这里的文件名
给出了配置要求,cuda 9.2版本,cudnn要求7.2版本,记下这两个版本号。去https://developer.nvidia.com/cuda-toolkit-archive和https://developer.nvidia.com/rdp/cudnn-archive分别下载CUDA和CUDNN相应的版本:
cuda_9.2.148_win10
和patch
包;以及cudnn7.2
。安装CUDA及patch包;然后将解压Cudnn后得到的三个小文件夹(include,bin,lib)复制到CUDA的安装目录(默认安装目录C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2
)即可;在开始菜单里打开 Anaconda promt(最好以管理员打开),输入
conda --version
以验证conda是否安装成功;在Anaconda promt中输入
conda info --envs
以检查目前都有哪些环境;创建新环境
conda create --name tf python=3.6
,其中环境名叫做tf,中间会让输入y/n,按y即可;如果后面需要删除环境conda remove -n tf --all
进入该环境
activate tf
检查Python版本
python --version
-
进入你.whl文件所在的目录,输入
pip install tensorflow_gpu-1.10.0-cp36-cp36m-win_amd64.whl
即可;如果确定以后还需要使用OpenCV,也可安装
pip install opencv-python
OpenCV包(如果你没听过OpenCV是什么,请自动忽略该语句) - 在当前环境下输入python进入python编辑环境,输入以下代码进行测试
import tensorflow as tf
hello = tf.constant("Hello, Tensorflow!")
sess = tf.Session()
print(sess.run(hello))
a=tf.constant(10)
b = tf.constant(20)
print(sess.run(a+b))
测试环境
- 安装Spyder并测试:
打开Anaconda Navigator(开始菜单->Anaconda 3->Anaconda Navigator,Application on>>选择tf),搞一个spyder玩,
点击spyder下面的“install”,安装好就变成“Launch”了,点击就可以进去了。
在spyder里对tensorflow说Hello!import tensorflow as tf hello = tf.constant("Hello, Tensorflow!") sess = tf.Session() print(sess.run(hello))
- 进一步测试:
首先看看tensorflow是不是正常安装并可以导入了:
测试代码一:
import tensorflow as tf
a = tf.test.is_built_with_cuda() # 判断CUDA是否可以用
b = tf.test.is_gpu_available(
cuda_only=False,
min_cuda_compute_capability=None
) # 判断GPU是否可以用
print(a)
print(b)
输出结果是:
True
True
代表CUDA和GPU可用
测试代码二:
import tensorflow as tf
#Creates a graph.
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)
#Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
#Runs the op.
print(sess.run(c))
输出结果是:
[[22. 28.] [49. 64.]]
- 利用GPU测试TensorFlow的运行情况
下面是直观的看出代码有没有在使用GPU
测试代码三:
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
sess =tf.Session(config=tf.ConfigProto(log_device_placement=True))
sess.run(tf.global_variables_initializer())
print(sess.run(c))
注意:
-
上述测试代码三中可能报错,你需要更改代码为
sess = tf.Session(config=tf.ConfigProto(allow_soft_placement=True, log_device_placement=True))
其中
allow_soft_placement=True
表明:计算设备可自行选择,如果没有这个参数,会报错。因为不是所有的操作都可以被放在GPU上,如果强行将无法放在GPU上的操作指定到GPU上,将会报错。log_device_placement=True
表明:计算设备的日志log文件会实时显示(使用Python命令行时会显示,使用spyder时不显示,使用spyder可以使用性能分析工具进行查看)。
先不急着运行,打开任务管理器,点击 性能 ,找到你自己英伟达显卡的GPU那一栏,点击一下,可以显示GPU的利用情况,正常情况下你没运行什么程序,GPU利用率什么的都是0,没有波澜,然后你运行代码三,会发现GPU利用率开始变化了。
更进一步
- 上面已经完全测试了windows10系统下tensorflow-gpu的开发环境。如果你想了解的更多一点:可以尝试学习一下这段代码:
import tensorflow as tf
import numpy as np
# 使用 NumPy 生成假数据(phony data), 总共 100 个点.
x_data = np.float32(np.random.rand(2, 100)) # 建立一个2*100的随机数的矩阵
y_data = np.dot([0.100, 0.200], x_data) + 0.300 # (2*1)点乘(2*100)
# 构造一个线性模型,这里创建了一个"计算图"
b = tf.Variable(tf.zeros([1]))
W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0))
y = tf.matmul(W, x_data) + b
# 最小化方差,这里给出你要优化的指标以及优化的方式
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
# 启动图 (graph),并进行初始化
init = tf.initialize_all_variables()
sess = tf.Session(config=tf.ConfigProto(allow_soft_placement=True, log_device_placement=True))
sess.run(init)
# 拟合平面
for step in range(0, 201):
sess.run(train)
if step % 20 == 0:
print(step, sess.run(W), sess.run(b))
# 得到最佳拟合结果 W: [[0.100 0.200]], b: [0.300]
#关闭会话
sess.close()
写在最后
为保证以后该环境不出幺蛾子,
请不要更改GPU驱动
请不要更新GPU驱动
请不要更新GPU驱动
如果你不慎更新了显卡驱动,按此笔记重新安装配置环境。