tensorflow之神经网络的搭建(3)
一、反向传播
反向传播:训练模型参数,在所有参数上用梯度下降,使NN训练模型在训练数据上的损失函数最小。
损失函数(loss):计算得到的预测值y与已知答案y_的差距。
均方误差MSE:求前向传播计算结果与已知答案之差的平方再求平均。
用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.导入模块,生成模拟数据集: