《深度学习之TensorFlow入门、原理与进阶实战》—3.1.2 搭建模型

举报
华章计算机 发表于 2019/05/31 13:48:13 2019/05/31
【摘要】 本书摘自《深度学习之TensorFlow入门、原理与进阶实战》一书中的第3章,第3.1.2节,编著是李金洪.

3.1.2  搭建模型

  现在开始进行模型搭建。模型分为两个方向:正向和反向。

  1.正向搭建模型

  (1)了解模型及其公式

  在具体操作之前,先来了解一下模型的样子。神经网络是由多个神经元组成的,单个神经元的网络模型如图3-2所示。

image.png

图3-2  神经元模型

  其计算公式见式(3-1):

image.png式(3-1)

  式中,z为输出的结果,x为输入,w为权重,b为偏执值。

  z的计算过程是将输入的x与其对应的w相乘,然后再把结果相加上偏执b。

  例如,有3个输入x1,x2,x3,分别对应w1,w2,w3,则,z=x1×w1+x2×w2+x3×w3+b。这一过程中,在线性代数中正好可以用两个矩阵来表示,于是就可以写成(矩阵W)×(矩阵X)+b。矩阵相乘的展开如式(3-2):

image.png式(3-2)

  上面的算式(3-2)表明:形状为1行3列的矩阵与3行1列的矩阵相乘,结果的形状为1行1列的矩阵,即(1,3)×(3,1)=(1,1)

?注意:这里有个小窍门,如果想得到两个矩阵相乘后的形状,可以将第一个矩阵的行与第二个矩阵的列组合起来,就是相乘后的形状。

  在神经元中,w和b可以理解为两个变量。模型每次的“学习”都是调整w和b以得到一个更合适的值。最终,有这个值配合上运算公式所形成的逻辑就是神经网络的模型。

  (2)创建模型

  下面的代码演示了如何创建图3-2中的模型。

代码3-1  线性回归(续)

11  # 创建模型

12  # 占位符

13  X = tf.placeholder("float")

14  Y = tf.placeholder("float")

15  # 模型参数

16  W = tf.Variable(tf.random_normal([1]), name="weight")

17  b = tf.Variable(tf.zeros([1]), name="bias")

18  # 前向结构

19  z = tf.multiply(X, W)+ b

  

  下面解说一下代码。

  (1)X和Y:为占位符,使用了placeholder函数进行定义。一个代表x的输入,一个代表对应的真实值y。占位符的意思后面再解释。

  (2)W和b:就是前面说的参数。W被初始化成[-1,1]的随机数,形状为一维的数字,b的初始化为0,形状也是一维的数字。

  (3)Variable:定义变量,在3.3节会有详细介绍。

  (4)tf.multiply:是两个数相乘的意思,结果再加上b就等于z了。

  2.反向搭建模型

  神经网络在训练的过程中数据的流向有两个方向,即先通过正向生成一个值,然后观察其与真实值的差距,再通过反向过程将里面的参数进行调整,接着再次正向生成预测值并与真实值进行比对,这样循环下去,直到将参数调整为合适值为止。

  正向相对比较好理解,反向传播会引入一些算法来实现对参数的正确调整。

  下面先看一下反向优化的相关代码。

代码3-1  线性回归(续)

20  #反向优化

21  cost = tf.reduce_mean(tf.square(Y - z))

22  learning_rate = 0.01

23  optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize 

    (cost) #梯度下降

  

  代码说明如下:

  (1)第21行定义一个cost,它等于生成值与真实值的平方差。

  (2)第22行定义一个学习率,代表调整参数的速度。这个值一般是小于1的。这个值越大,表明调整的速度越大,但不精确;值越小,表明调整的精度越高,但速度慢。这就好比生物课上的显微镜调试,显微镜上有两个调节焦距的旋转钮,分为粗调和细调。

  (3)第23行GradientDescentOptimizer函数是一个封装好的梯度下降算法,里面的参数learning_rate叫做学习率,用来指定参数调节的速度。如果将“学习率”比作显微镜上不同档位的“调节钮”,那么梯度下降算法也可以理解成“显微镜筒”,它会按照学习参数的速度来改变显微镜上焦距的大小。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。