深度学习·Tensorflow入门示例demo

本文基于程序版本:python 3.5.5 和 tensorflow 1.9.0

1. 目的

生成一些三维数据,并使用tensorflow进行平面拟合

2. 代码实现和注解

1)加载库

import numpy as np
import tensorflow as tf

2)生成伪随机数据

# process data
x_data = np.float32(np.random.rand(2, 100))
y_data = np.dot([0.100, 0.200], x_data) + 0.300  # dot product of 2 arrays

其中,no.dot()函数功能为点除,即让矩阵中的每对元素都除以[0.1, 0.2]

3)建立线性模型

# build 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

其中,

  • tf.Variable()的功能是创建一个当调用run()函数时能在图(graph)中维持状态的变量
  • tf.zeros()创建对应维度的零张量(tensor)
  • tf.random_uniform()获取服从均匀分布的随机变量
  • tf.matmul()矩阵乘法运算

4)最小化方差

# minimize square-error
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)

其中,

  • tf.reduce_mean()计算穿过一个张量维度所有元素的平均值
  • tf.train.GradientDescentOptimizer()实现梯度下降算法的优化器,参数为学习速率
  • optimizer.minimize()给优化器增加通过更新损失序列(var_list)来最小化损失(loss)的操作

5)初始化变量

# initialize variables
init = tf.global_variables_initializer() # tf.initialize_all_variables() is deprecated

其中,

扫描二维码关注公众号,回复: 2904656 查看本文章
  • tf.global_variables_initializer()用以初始化全局变量
  • 需要注意的是,tf.initialize_all_variables()在tensorflow 1.6.0版本中已被移除

6)启动图

# start graph
sess = tf.Session()
sess.run(init)

其中,

  • tf.Session()实例化封装好需要执行的操作(operation)和需要计算的张量环境的对象
  • sess.run()对传递过来的变量进行相应操作和计算张量

7)拟合平面

# fit plane
for step in range(0, 201): # similiar as xrange, which is deprecated
    sess.run(train)
    if step % 20 == 0:
        print(step, sess.run(w), sess.run(b))

打印结果:

0 [[ 0.2897141 -0.30422795]] [0.9615625]
20 [[0.05661043 0.02623773]] [0.4093204]
40 [[0.07334512 0.15256079]] [0.33803657]
60 [[0.08760083 0.18628207]] [0.31359386]
80 [[0.09479188 0.19579038]] [0.30494767]
100 [[0.09791644 0.19863556]] [0.3018224]
120 [[0.09918789 0.19953729]] [0.3006764]
140 [[0.09968808 0.19983763]] [0.30025226]
160 [[0.09988122 0.19994164]] [0.30009434]
180 [[0.09995499 0.19997868]] [0.30003536]
200 [[0.09998299 0.19999214]] [0.30001327]

可见,在经过200次迭代计算后,最佳拟合结果为:

w:[0.09998299 0.19999214], b:[0.30001327]

3. TensorFlow的一些基本概念

5个词
变量(variable)

  • 用以维护状态

操作(operation)

  • 图中的节点
  • 使用feed或者fetch方法可以对那个任意的操作赋值或者从中获取数据

张量(tensor)

  • 类型化的多维数组,表示数据

图(graph)

  • 也称为计算图,表示计算任务,描述了计算的过程

会话(session)

  • 在会话的上下文(context)执行图

2个阶段

TensorFlow程序通常分为构建阶段和执行阶段
1 构建阶段:
将操作的执行步骤描述为一个图(如创建一个图来表示和训练神经网络)
2 执行阶段:
使用会话执行图中的操作(如反复执行图中的训练操作)

一般计算过程

图在会话中启动 -> 会话将图中的操作分发给CPU或者GPU(同时提供执行操作的方法) -> 方法执行结束后将产生的张量返回

需要注意的是:在 Python 语言中, 返回的 tensor 是 numpy ndarray 对象; 在 C 和 C++ 语言中, 返回的 tensor 是 tensorflow::Tensor 实例

参考教程

猜你喜欢

转载自blog.csdn.net/Shuang_Mo/article/details/81503444
今日推荐