TensorFlow 实验环境搭建
一、实验说明
本实验课提供一个TensorFlow的环境,让Deep Learning的新手通过动手实践对TensorFlow有所了解。
Deep Learning的学习需要很多理论基础,必须花足够的时间学习原理与算法,请先阅读课程中推荐的理论文章。实验课是对理论学习的补充,将理论写成代码,将数据跑出结果,实践的过程可以更好的融会贯通理论知识。
教程内容部分来自官方文档翻译。
本节实验将会学习到的知识点包括:
- Python基础知识
- 设置virtualenv环境
- 深度学习基本概念
- TensorFlow系统安装部署
1. 推荐阅读
TensorFlow 系统来源及原理推荐阅读:
2. 环境介绍
本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到桌面上的程序:
- LX终端(LXTerminal): Linux命令行终端,打开后会进入Bash环境,可以使用Linux命令
- Firefox:浏览器,可以用在需要前端界面的课程里,只需要打开环境里写的HTML/JS页面即可
- GVim:非常好用的编辑器,最简单的用法可以参考课程Vim编辑器
3. 环境使用
使用GVim编辑器输入实验所需的代码及文件,使用LX终端(LXTerminal)运行所需命令进行操作。
实验报告可以在“我的主页”中查看,其中含有每次实验的截图及笔记,实验的有效学习时间(指的是在实验桌面内操作的时间,如果没有操作,系统会记录为发呆时间)。这些都是您学习的真实性证明。
二、TensorFlow 简介
Google曾经开发过两代Deep learning的系统,其中第一代称为DistBelief,第二代就是TensorFlow。由于DisBelief虽然具备很好的扩展性但一些研究场景中使用起来不够灵活,所以Google设计研发了TensorFlow,比第一代系统更快更灵活,更容易适应新的研究需求。这两套系统都应用在Google的大量的技术产品中,例如语音识别,图像识别及翻译等。
TensorFlow系统的核心是C++编写的,并且提供了C++和Python两种Frontend接口。我们后续实验中主要使用Python语言。
三、TensorFlow 安装
TensorFlow安装非常简单,官方安装文档提供了几种安装选择,我们选择使用Python Virtualenv
环境安装。安装步骤为了适应实验楼所在的网络环境,进行了少量修改。
3.1 安装依赖的软件包
首先打开桌面上的Xfce终端
,在终端中执行后续命令。
为了构建virtualenv环境,我们先安装必要的组件:
$ sudo apt-get update
$ sudo apt-get install python-pip python-dev python-virtualenv
3.2 设置Virtualenv环境
将tensorflow安装到/home/shiyanlou/tensorflow
,我们需要为这个目录设置virtualenv环境:
$ virtualenv --system-site-packages /home/shiyanlou/tensorflow
进入到/home/shiyanlou/tensorflow
目录并激活virtualenv环境:
$ cd /home/shiyanlou/tensorflow
$ source bin/activate
# 进入到virtualenv的环境
(tensorflow) $
如果需要退出virtualenv的话,只需要执行命令deactive
即可。
3.3 安装TensorFlow
由于网络原因,TensorFlow安装包的下载会很慢,所以我们将0.5.0
版本安装包拷贝到了阿里云上,仅用于内部实验教学。
使用pip安装TensorFlow:
# 升级依赖的包six到1.10.0版本
(tensorflow) $ pip install --upgrade http://labfile.oss.aliyuncs.com/courses/470/six-1.10.0-py2.py3-none-any.whl
# 安装tensorflow
(tensorflow) $ pip install --upgrade http://labfile.oss.aliyuncs.com/courses/470/tensorflow-0.5.0-cp27-none-linux_x86_64.whl
安装过程中会首先安装几个依赖包,例如numpy
,six
等。
上述命令完成并没有报错时,说明TensorFlow已经安装好了。
四、测试
我们通过一些简单的程序来对TensorFlow进行测试,你也可以根据官网的教程进行任何操作。
首先启动python,然后import tensorflow
就可以进行测试,记住要在virtualenv环境下执行才可以:
(tensorflow) $ python
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print sess.run(hello)
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print sess.run(a+b)
42
>>> sess.close()
>>> quit()
上面的操作描述了两个最简单的计算示例,其中tf.constant
用来生成各种类型的TensorFlow常量,Session对象用来加载图并进行计算,在创建Session对象时会输出一些信息,当运算执行完可以调用close()
来释放资源。
每个语句都能通过阅读TensorFlow Python 文档学习。
4.1 运行简单的TensorFlow程序
TensorFlow官网给出了一个简单的程序,是一个简单的线性回归模型的拟合。利用梯度下降法来进行最优化。程序内容如下。
程序中x_data = np.float32(np.random.rand(2,100))
生成的是一个2x100的矩阵,所以下面的y_data就可以很容易理解,它的含义其实就是一个1x2的矩阵乘以一个2x100的矩阵,按照简单的矩阵乘法的意义给出了1x100的矩阵,也可以理解成一个行向量。
此外,程序中定义很多tf.Variable
,在TensorFlow使用的变量类型可以直接作为各个模型的输入和输出。
import tensorflow as tf
import numpy as np
# Make 100 phony data points in NumPy.
x_data = np.float32(np.random.rand(2, 100)) # Random input
# 对于随机X按照需要的方法生成y,注意np.dot是矩阵乘法
y_data = np.dot([0.100, 0.200], x_data) + 0.300
# 下面就是简单的构建线性模型
# Construct a linear model.
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
# 拟合的过程,使用的是梯度下降方法
# Minimize the squared errors.
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
# For initializing the variables.
init = tf.initialize_all_variables()
# Launch the graph
sess = tf.Session()
sess.run(init)
# Fit the plane.
for step in xrange(0, 201):
sess.run(train)
if step % 20 == 0:
print step, sess.run(W), sess.run(b)
# Learns best fit is W: [[0.100 0.200]], b: [0.300]
使用gedit或gvim将上述程序内容输入到文件/home/shiyanlou/tensorflow/test.py
,保存并执行下面的命令:
(tensorflow) $ python test.py
运行上面的程序可以得到下图的输出信息:
五、下一步
现在你已经有了一个TensorFlow实验环境,下一步可以通过通过TensorFlow官网官网丰富的教程进行学习。官网资料非常丰富,具备基本的英语基础就可以学习。
建议先学习下面两个教程:
六、参考资料
七、后续实验
由于TensorFlow官方教程是最权威准确的,并且已经有人开始进行翻译。在实验楼我就不重复制作轮子了。建议大家可以充分利用实验楼本节提供的实验环境,结合官方教程,边学习边逐步实践TensorFlow教程,如果有任何疑问,欢迎在问答页面提出,期待与大家的交流。