目录:
TensorFlow简介
TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。
简单来说就是一种编程系统。先把要计算的整个过程(包含变量Variable等操作OP)描述出来形成一张图,然后启动一个会话(Session),将操作派发至CPU和GPU进行计算。
TensorFlow由C、Python和C++编写而成,同时支持后两种语言的调用。python端提供大量OP的封装,所以在描述阶段都是用python,在会话期,可以通过导出图的方式,在C++端启动会话。
python环境搭建
安装python
直接上官网 https://www.python.org/
因为当前tensorflow windows版本 最高只支持python3.5,所以不能选择最新的3.6版本
然后下载3.5版本即可,这里直接选择可执行文件
根据引导把python安装了。记得在安装选项中,要选择把python安装目录加入环境变量path中, 忘记勾选的话需要自己去更新一下环境变量。
在命令行中输入python -m pip install --upgrade pip
和pip list --format legacy
,看一下是否有响应。
相关库
numpy:
去http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy 下载。
根据之前选择的python版本下载对应的numpy,我选择的是64位的python3.5,所以选的是
numpy‑1.12.1+mkl‑cp35‑cp35m‑win_amd64.whl
scipy:
去http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy 下载。选择版本的方式同上。
virtualenv:
考虑到兼容性的问题,尽量不要直接用pip安装库文件,先安装virtualenv,建立一个虚拟环境。
这样可以在不同虚拟环境下安装不同版本的库,满足不同的需求。并且不需要某个环境时,直接删除相应文件夹即可。
进入命令行,输入
pip install virtualenv
然后通过cd
命令,改变命令行的路径,选择你想安装的虚拟环境的位置,就像这样
然后输入
virtualenv yourname
yourname 可替换成自己想要的虚拟环境名字。如下图
输入D:\PROGRAMMING\MyPyEnv\yourname\activate
激活虚拟环境,如果嫌麻烦,可将“D:\PROGRAMMING\MyPyEnv\yourname\”这个路径加入Path环境变量中,以后只要输入activate
即可激活。
使用 deactivate 推出当前虚拟环境,如果创建了多个虚拟环境,有如下两种办法可选择
- 使用绝对路径的activate,激活相应的虚拟环境,使用对应的deactivate推出当前的虚拟环境
- 对当前阶段经常使用的虚拟环境,将其路径加入环境变量中,使用activate激活的是这个环境,对于其他的环境使用绝对路径即可
安装:
安装numpy
pip install \path\to\your\numpy.whl
安装scipy
pip install \path\to\your\scipy.whl
intsall 后面的东西替换成自己下载的whl文件路径
安装matplotlib
pip install matplotlib
安装ipython
pip install ipython
CUDA环境搭建
下载
想要在GPU上进行计算,可以使用opengl、opencl之类可以在GPU中计算以及把结果取回内存的库。
GPU的并行计算力是远大于CPU的。机器学习特别是深度学习的计算要求比较大,并且很多算法可以写成并行计算的方式,所以利用好GPU的计算力是很有必要的。
cuda是Nvidia推出的GPU并行运算架构,很多深度学习相关的库如caffe、TensorFlow,在调用GPU的时候,都使用了cuda。
TensorFlow目前支持CUDA 8.0,cuDNN 5.1,下载的时候注意版本
先去官网下载 https://developer.nvidia.com/cuda-downloads
然后下载cuDNN https://developer.nvidia.com/cudnn
CUDA只是一个并行计算架构的SDK,而cuDNN是NVIDIA官方专为深度学习提供的cuda库,里面封装
了卷积、池化等标程。
注册账号,填写一下问卷就可以下载了
安装
Windows环境下的cuda安装很容易的,直接运行安装程序,跟着向导走就行。而且还是全家桶,连Nvidia GeForce Experience之类的东西一起给你安装一遍。
然后把刚才下载的cuDNN压缩包解压缩,把里面三个文件复制到“C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0” (如果安装CUDA时候,没改这个路径)
运行Sample
先安装一个visual studio 2010/2012/2013/2015,2017虽然好用,但是目前CUDA还不支持。
个人建议安装个VS2013,因为2015装起来出的问题很多、坑太多,最后还是换成13版本才成功。
进入 C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0 (ProgramData是隐藏文件夹)
选择自己安装的VS版本的sln,双击运行
可以选择编译整个解决方案,也可以只编译运行一个demo项目,主要是看一下是否安装成功。
这里就只演示其中一个项目,如果效果和我的一样,差不多就意味着安装成功了。
点击解决方案,然后在“Startup project”中选择“bilateralFilter” 双边滤波 这个项目。
Ctrl + F5, 编译运行。
按 +
-
,可以改变图片的清晰度
查看显卡计算力
TensorFlow要求显卡的计算力要超过3.0,官网是这么说的,实际上是不是这回事就不清楚了
怎么知道自己显卡是否支持呢?
最简单的办法就是去官网查 https://developer.nvidia.com/cuda-gpus (好像这块内容应该放在安装CUDA之前。。。。)
但是既然安装了CUDA,那就用代码查一下吧。
开一个win32 控制台工程,把下面代码复制上去
#include<stdio.h>
#include<stdlib.h>
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
bool Testing()
{
int count;
cudaGetDeviceCount(&count);
if (count == 0)
{
fprintf(stderr, "There is no device.\n");
return false;
}
int i, maxMajor, maxMinor;
bool canUseTensorflow = false;
maxMajor = maxMinor = 0;
for (i = 0; i < count; i++)
{
cudaDeviceProp prop;
if (cudaGetDeviceProperties(&prop, i) == cudaSuccess)
{
fprintf(stdout, "Device number %d , computer capability : %d.%d\n", i, prop.major, prop.minor);
if (prop.major >= 3)
{
canUseTensorflow = true;
if (prop.major>maxMajor || (prop.major == maxMajor&&prop.minor > prop.minor))
{
maxMajor = prop.major;
maxMinor = prop.minor;
}
}
}
}
if (!canUseTensorflow)
{
fprintf(stderr, "There is no device supporting TensorFlow GPU version.\n");
return false;
}
fprintf(stdout, "Max computer capability of this computer is %d.%d\nYou can use TensorFlow GPU version. \n", maxMajor, maxMinor);
return true;
}
int main()
{
Testing()
system("pause");
return 0;
}
根据上图,右键工程,一步步最后加上 cudart.lib
然后如下图,右键工程 ->“生成依赖项” -> “生成定制”
勾上 CUDA 8.0。
然后 Ctrl + F5,运行。之后会输出机子上每个显卡编号和对应的计算力,然后告诉你能否使用Tensorflow GPU 版本。
安装TensorFlow
这里坑还蛮多的,而且过程有点乱,第一次是用pip安装的,pip install tensorflow-gpu
,出现各种错误。然后去github下载 .whl文件,GPU运行还是有问题。我还重装了一次CUDA,最后又换成了更早的nightly 版本,所以我不确定到底哪种方法最靠谱,下面列出几个安装途径,都试试吧。
出现问题可以用pip uninstall tensorflow-gpu
把当前版本删了,去安装其他版本
- 使用pip安装:
pip install tensorflow-gpu
- GitHub上最新的nightly版本: Python 3.5 64-bit(我给的链接可能很快就不是最新版了,建议直接去github页面下载
- 历史nightly版本: http://ci.tensorflow.org/view/Nightly/job/nightly-win/
总之方法很多,还是能装上的。下面给一个测试代码。
其实就是官方的Mnist入门Tutorial。
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
x = tf.placeholder(tf.float32, [None, 784])
y_labels = tf.placeholder(tf.float32, [None, 10])
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
logits = tf.matmul(x, W) + b
y = tf.nn.softmax(logits)
cross_entropy = tf.nn.softmax_cross_entropy_with_logits(logits=logits,labels=y_labels)
loss = tf.reduce_sum(cross_entropy)
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(loss)
correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_labels,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
sess = tf.Session()
sess.run(tf.global_variables_initializer())
for _ in range(10000):
batch_xs, batch_ys = mnist.train.next_batch(100)
sess.run(train_step, feed_dict={x: batch_xs, y_labels: batch_ys})
print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_labels: mnist.test.labels}))
可在ipython使用 paste
cpaste
命令直接复制代码运行,或者在IDE下运行
最后能运行,并且输出测试集的准确率,即成功安装
如果装的是nightly版本的tensorflow-gpu,可能会出现一下错误,可以忽略