该篇博客参考TensorFlow 官方文档中文版,对其进行进一步加深理解,博主也是刚刚入手TensorFlow,如果有什么不对的地方可以评论交流。


文章目录

  • TensorFlow 总程序
  • 构建 x、y 数组
  • 构建TensorFlow模型
  • 设置损失函数、操作、以及训练
  • 初始化变量
  • 启动图
  • 执行循环


TensorFlow 总程序

这里边介绍了一个TensorFlow基础教程,我们可以看一下这个程序

import tensorflow as tf
import numpy as np

# 使用 NumPy 生成假数据(phony data), 总共 100 个点.
x_data = np.float32(np.random.rand(2, 100)) # 随机输入
y_data = np.dot([0.100, 0.200], x_data) + 0.300

# 构造一个线性模型
# 
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)

# 初始化变量
init = tf.initialize_all_variables()

# 启动图 (graph)
sess = tf.Session()
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]

这个是一个最基本的TensorFlow程序,基本就是求解等式
深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_数组
该程序的主要任务就是:已知 深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_数组_02深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_初始化_03深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_初始化_04 一些数据,求解 深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_数组_05深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_数组_06深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_启动图_07数值大小。

构建 x、y 数组
# 使用 NumPy 生成假数据(phony data), 总共 100 个点.
x_data = np.float32(np.random.rand(2, 100)) # 随机输入
y_data = np.dot([0.100, 0.200], x_data) + 0.300

程序借助NumPy数据库对深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_初始化_08产生一个随机的2*100的数组,接着利用相应的乘法,使每一个深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_初始化_08数据都会产生一个深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_数组_02数据。其中[0.100,0.200]就是我们假设的深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_启动图_11, 0.300为深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_启动图_07

构建TensorFlow模型
# 构造一个线性模型
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

在上边程序中会构建一个TensorFlow变量,一个为 深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_启动图_07,另一个为 深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_启动图_14
深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_启动图_07 的创建直接借助tf.zeros()函数,创建一个 深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_初始化_16 的 0 数组。
深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_启动图_14 的创建使用tf.random_uniform()函数,会产生一个 深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_启动图_18的数组,最小值为-1.0(可以包括)、最大值为1.0(不包括)。
直接将 深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_启动图_07深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_启动图_14

<tf.Variable 'Variable:0' shape=(1,) dtype=float32_ref>
<tf.Variable 'Variable_1:0' shape=(1, 2) dtype=float32_ref>
设置损失函数、操作、以及训练
# 最小化方差
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)

在上边的程序中首先设置损失函数loss,它是借助tf.square()函数计算真实值与计算值之间的方差,接着使用tf.reduce_mean()函数计算各个数值的平均值。

使用tf.train.GradientDescentOptimizer接口使用GradientDescentOptimizer自适应学习率来自动调节训练过程中学习速率。

train = optimizer.minimize(loss)然后定义训练为使用GradientDescentOptimizer方法来使得损失函数最小的操作。

初始化变量
# 初始化变量
init = tf.initialize_all_variables()

使用tf.initialize_all_variables()函数将所有的函数进行初始化,就是将我们之前设定的 深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_启动图_07深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_启动图_14

启动图
# 启动图 (graph)
sess = tf.Session()
sess.run(init)

图 (graph)是TensorFlow中一个很重要的概念,TensorFlow 程序通常被组织成一个构建阶段和一个执行阶段. 在构建阶段, op 的执行步骤 被描述成一个图. 在执行阶段, 使用会话执行执行图中的 op。上边的程序就是将TensorFlow执行启动图的操作。

run(fetches, feed_dict=None, options=None, run_metadata=None)

run()运行fetches中的操作节点并求其,fetches参数可以是单个图元素(single graph element),也可以是任意嵌套的列表list,元组tuple,名称元组namedtuple,字典dict或包含图元素的OrderedDict。是将 ‘ feed_dict ’ 中的值替换为相应的输入值,通过运行必要的图形片段(necessary graph fragment)来执行每一个 ‘ Operation ’ 并评估 ‘ fetches ’ 中的每一个张量(evaluate every Tensor in fetches

执行循环
# 拟合平面
for step in range(0, 201):
    sess.run(train)
    if step % 20 == 0:
        print step, sess.run(W), sess.run(b)

在上边程序中我们开始执行循环,从for()函数中能够看出循环执行200次,每次循环都会启动图的训练操作( sess.run(train)),而且在每20次循环过程中输出一次优化以后的 深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_启动图_07深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_启动图_14

0 [[0.76612234 0.3431572 ]] [0.66802967]
20 [[0.8309442  0.18778986]] [0.34280622]
40 [[0.8805279 0.1933982]] [0.313826]
60 [[0.8942932  0.19743352]] [0.30440328]
80 [[0.8982843  0.19910687]] [0.30139136]
100 [[0.8994758  0.19970436]] [0.30043778]
120 [[0.8998383  0.19990459]] [0.30013737]
140 [[0.89994985 0.19996963]] [0.30004302]
160 [[0.8999844  0.19999044]] [0.30001345]
180 [[0.89999515 0.199997  ]] [0.3000042]

从上边的运行结果中能够看出深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_启动图_07深度学习之TensorFlow入门原理与进阶实战 tensorflow教程推荐_启动图_14再不断朝着我们期望的数值进行变化。