前言
- 之前我在安装配置TensorFlow过程中参考了不少前人的博文和官方的安装指南,但我发现这个环境的配置和底层库是否有更新也很有关系,也就是说这些指南的时效性也比较强
- 这篇博文主会更着重总结一些在配置过程中可以参考的网站以及前人的博文,然后给出我个人觉得哪些地方是最容易出问题以及未来如果有更新时需要关注的点。
主要可能被坑的点
- 版本问题:目前TensorFlow Windows版支持的较弱,如只支持python3.5(3.6就不行了。。),后面会具体谈到,当然不排除将来TensorFlow更新后支持更多版本
- 环境变量:当遇到各种提示找不到啊之类的问题,基本都是环境变量没设好,要把CUDA里很多路径加入环境变量中
总体安装流程
- 简单阅读TensorFlow官方指南,了解运行环境和大致步骤(推荐大家读一下,因为未来官方可能有更新)
- 安装Anaconda
- 基于Anaconda进行python多版本管理,可以创建为TensorFlow运行的专门环境
- 检测自己的GPU是否支持(不支持不用继续看了,安心用CPU版吧),安装CUDA(最好安装VS,方便测试CUDA安装效果)
- 安装cuDNN库(注意目前TensorFlow需要的是v5.1版本)
- 测试TensorFlow能否运行
- 推荐参考描述较为详细的博文(讲解了如何解决环境变量的问题):
http://blog.youkuaiyun.com/sb19931201/article/details/53648615
TensorFlow官方安装文档阅读
- 官方安装文档(好像被墙了):
- https://www.tensorflow.org/install/install_windows
- 如果能访问,最好读一下
- 这里说下注意事项,主要看Requirements里面相应库及其版本:
- CUDA Toolkit 要求8.0
- cuDNN v5.1版本(目前已经出到v6)
- 自己的GPU是CUDA支持的,且Compute Capability 3.0及以上,这个可以参考:https://developer.nvidia.com/cuda-gpus
安装Anaconda及多python版本管理
- 可以参考博文:http://blog.youkuaiyun.com/goodshot/article/details/54944923
- 注意目前Anaconda的最新版本使用的是python3.6,TensorFlow是不支持的,所以如果使用最新版,一定要创建python3.5的为TensorFlow准备的环境
- Anaconda下载地址:
https://www.continuum.io/downloads - 注意安装后测试,如果找不到conda,应该是环境变量没有设置,把Anaconda的安装目录,以及安装目录下的Scripts目录添加到环境变量的Path中
- 原理不多说了,大家可以参考上面的博文,这里给出核心的几个命令
$ 测试安装和环境变量设置,应输出版本信息
conda -V
$ 创建一个名字为tensorflow的虚拟环境
conda create --name tensorflow python=3.5
$ 激活该环境
activate tensorflow
$ 安装TensorFlow
$ CPU版
pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.0.1-cp35-cp35m-win_amd64.whl
$ GPU版,安装前最好
pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.0.1-cp35-cp35m-win_amd64.whl
安装CUDA
- 官方文档:
- http://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/#axzz4dBLH5SBF
- Toolkit(8.0版本) 下载网址:
- http://developer.nvidia.com/cuda-downloads
- 安装的之前,最好安装一款VS(2010,12,13或15都可以),安装时会把相应VS组件一起安装,方便安装后测试一下
- 另外,安装的时候注意安装目录和测试Samples的位置,方便后续工作
- 安装完成后,可以测试一下,运行“deviceQuery”,官方文档说sample中有编译好的版本,但是我没找到,所以我通过vs2013打开了.sln工程文件,找到具体的“deviceQuery”项目,把它作为启动项目,运行编译,会打印出一系列版本信息。(一闪而过,可以最后加个getchar()语句,方便查看打印信息)
- 另一个sample “bandwidthTest”也可以通过同样的方式测试一下
安装cuDNN
- 下载地址 https://developer.nvidia.com/cudnn
- 需要注册和填写调查问卷
- 版本是v5.1,不要下v6的
- 下载解压后,把对应目录里的文件,拷贝到CUDA安装目录下的对应文件夹内(这步可以参考
http://blog.youkuaiyun.com/sb19931201/article/details/53648615,用截图讲得比较清楚)
环境变量设置
除了默认的环境变量,还要加入:
你的安装路径\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin
你的安装路径\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64
你的安装路径\NVIDIA GPU Computing Toolkit\CUDA\v8.0\extras\ CUPTI\libx64其它的路径要是再有找不到dll的问题时,可能还需要设置
测试代码
- 简单测试:
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
- 一个mnist的测试代码
from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf
mnist = input_data.read_data_sets("MNIST_data/",one_hot=True)
sess = tf.InteractiveSession()
in_units = 784
h1_units = 300
w1 = tf.Variable(tf.truncated_normal([in_units,h1_units],stddev=0.1))
b1 = tf.Variable(tf.zeros([h1_units]))
w2 = tf.Variable(tf.zeros([h1_units,10]))
b2 = tf.Variable(tf.zeros([10]))
x = tf.placeholder(tf.float32, [None, in_units])
keep_prob = tf.placeholder(tf.float32)
hidden1 = tf.nn.relu(tf.matmul(x, w1)+b1)
hidden1_drop = tf.nn.dropout(hidden1, keep_prob)
y = tf.nn.softmax(tf.matmul(hidden1_drop, w2) + b2)
y_ = tf.placeholder(tf.float32, [None, 10])
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))
train_step = tf.train.AdamOptimizer(0.001).minimize(cross_entropy)
tf.global_variables_initializer().run()
for i in range(3000):
batch_xs, batch_ys = mnist.train.next_batch(100)
train_step.run({x: batch_xs, y_: batch_ys, keep_prob: 0.75})
correct_prediction = tf.equal(tf.argmax(y,1), tf.arg_max(y_, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
print(accuracy.eval({x: mnist.test.images, y_:mnist.test.labels, keep_prob: 1.0}))
- 正常运行的话,应该会输出一个识别准确率的数值