tensorflow之神经网络的搭建(3)

一、反向传播

反向传播:训练模型参数,在所有参数上用梯度下降,使NN训练模型在训练数据上的损失函数最小。

损失函数(loss):计算得到的预测值y与已知答案y_的差距。

均方误差MSE:求前向传播计算结果与已知答案之差的平方再求平均。

tensorflow之神经网络的搭建(3)

用tensorflow函数表示为:

loss_mse = tf.reduce_mean(tf.square(y_-y))

反向传播训练方法:以减少loss值为优化目标,有梯度下降、momentum优化器、adam优化器等优化方法。

train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss),使用随机梯度下降算法,使参数沿着梯度的反方向,即总损失减小的方向移动,实现更新参数。

学习率:决定每次参数更新的幅度。

学习率过大会出现震荡不收敛,学习率过小,同样会出现收敛速度比较慢。通常选择0.01,0.001.

二、搭建神经网络的步骤:准备工作、前向传播、反向传播、和循环迭代。

1.导入模块,生成模拟数据集;

import

常量定义

生成数据集

2、前向传播:定义输入、参数和输出

x =                    y_=

w1=                  w2=

a=                      y=

3.反向传播:定义损失函数、反向传播方法

loss=

train_step=

4.生成会话,训练STEPS轮

with tf.session() as sess:

    Init_op=tf.global_variables_initializer()

    sess_run=(init_op)

    STEPS=3000

    for i in range(STEPS):

            start=

            end=

            sess.run(train_step, feed_dict:)

例子:

随机产生32组生产出的零件的体积和重量,训练3000轮,每500轮输出一次损失函数。

0.导入模块,生成模拟数据集:

tensorflow之神经网络的搭建(3)

tensorflow之神经网络的搭建(3)

tensorflow之神经网络的搭建(3)

tensorflow之神经网络的搭建(3)