一、什么是TensorFlow
在这里,引入TensorFlow中文社区首页中的两段描述。
关于 TensorFlow
TensorFlow™ 是一个采用数据流图(data flow
graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。TensorFlow
最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。什么是数据流图(Data Flow Graph)?
数据流图用“结点”(nodes)和“线”(edges)的有向图来描述数学计算。“节点”
一般用来表示施加的数学操作,但也可以表示数据输入(feed in)的起点/输出(push
out)的终点,或者是读取/写入持久变量(persistent
variable)的终点。“线”表示“节点”之间的输入/输出关系。这些数据“线”可以输运“size可动态调整”的多维数据数组,即“张量”(tensor)。张量从图中流过的直观图像是这个工具取名为“Tensorflow”的原因。一旦输入端的所有张量准备好,节点将被分配到各种计算设备完成异步并行地执行运算。
二、示例
接下来的示例中,主要使用到以下两个文件。
mnist.py
fully_connected_feed.py
该示例的目的是建立一个手写图像识别模型,通过该模型,可以准确识别输入的28 * 28
像素的手写图片是0~9
这十个数字中的哪一个。
1、运行文件准备
需要下载好tensorflow源代码,注意这里的源代码版本需要与安装的TensorFlow版本保持一致。
在/home/mlusr/files/tensorflow/
下解压缩该文件。进入示例文件路径中,运行
cd ~/files/tensorflow/tensorflow-r0.11/tensorflow/examples/tutorials/mnist
python fully_connected_feed.py
运行过程中,需要联网下载训练数据,数据文件保存到~/files/tensorflow/tensorflow-r0.11/tensorflow/examples/tutorials/mnist/data
路径下,如果不能联网的话,可以手动到MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burges,下载好以下四个文件,放入data
目录。
t10k-images-idx3-ubyte.gz
t10k-labels-idx1-ubyte.gz
train-images-idx3-ubyte.gz
train-labels-idx1-ubyte.gz
2、运行
直接运行fully_connected_feed.py
文件。
python fully_connected_feed.py
输出信息如下:
Extracting data/train-images-idx3-ubyte.gz
Extracting data/train-labels-idx1-ubyte.gz
Extracting data/t10k-images-idx3-ubyte.gz
Extracting data/t10k-labels-idx1-ubyte.gz
Step 0: loss = 2.30 (0.007 sec)
Step 100: loss = 2.13 (0.005 sec)
Step 200: loss = 1.87 (0.004 sec)
Step 300: loss = 1.55 (0.004 sec)
Step 400: loss = 1.26 (0.004 sec)
Step 500: loss = 0.87 (0.004 sec)
Step 600: loss = 0.87 (0.004 sec)
Step 700: loss = 0.65 (0.005 sec)
Step 800: loss = 0.43 (0.004 sec)
Step 900: loss = 0.65 (0.005 sec)
Training Data Eval:
Num examples: 55000 Num correct: 47184 Precision @ 1: 0.8579
Validation Data Eval:
Num examples: 5000 Num correct: 4349 Precision @ 1: 0.8698
Test Data Eval:
Num examples: 10000 Num correct: 8663 Precision @ 1: 0.8663
Step 1000: loss = 0.47 (0.006 sec)
Step 1100: loss = 0.40 (0.051 sec)
Step 1200: loss = 0.55 (0.005 sec)
Step 1300: loss = 0.43 (0.004 sec)
Step 1400: loss = 0.39 (0.004 sec)
Step 1500: loss = 0.57 (0.005 sec)
Step 1600: loss = 0.50 (0.004 sec)
Step 1700: loss = 0.37 (0.005 sec)
Step 1800: loss = 0.38 (0.006 sec)
Step 1900: loss = 0.35 (0.004 sec)
Training Data Eval:
Num examples: 55000 Num correct: 49292 Precision @ 1: 0.8962
Validation Data Eval:
Num examples: 5000 Num correct: 4525 Precision @ 1: 0.9050
Test Data Eval:
Num examples: 10000 Num correct: 9027 Precision @ 1: 0.9027
3、启动TensorBoard并查看
在启动TensorBoard时注意指定输出log文件路径,在本例中启动命令如下
tensorboard --logdir /home/mlusr/files/tensorflow/tensorflow-r0.11/tensorflow/examples/tutorials/mnist/data
启动输出信息如下所示:
Starting TensorBoard 29 on port 6006
(You can navigate to http://192.168.1.100:6006)
浏览器访问页面指定ip和端口:
在TensorBoard中还可以查看该模型的更多信息。
本文接下来的部分,将以mnist.py
和fully_connected_feed.py
两个文件中的内容