【TensorFlow】神经网络模型训练及完整程序实例(五)
首先,看一下神经网络反向传播优化流程图:
反向传播算法实现了一个迭代的过程。每次迭代的开始,都选取一部分训练数据batch。然后,这个batch的样例会通过前向传播算法得到神经网络模型的预测结果。因为训练数据都是有正确答案标注的,所以可以计算出当前神经网络模型的预测答案与正确答案之间的差距。最后,基于这个差距,通过反向传播算法会更新神经网络参数的取值,使得在这个batch上神经网络的预测结果与真实答案更加接近。
TensorFlow提供一个placeholder的机制用于提供数据输入,避免大量常量生成造成的计算量大带来的效率低下。英语拼写以下是placeholder实现前向传播算法的代码:
在得到一个batch的前向传播结果后,需要定义一个损失函数来刻画当前预测值与真实答案之间的差距。然后通过反向传播算法来调整神经网络参数的取值使得差距可以被缩小。
TensorFlow目前有7中优化器,比较常用的优化方法有三种:
tf.train.GradientDescentOptimizer,tf.train.AdamOptimizer,tf.train.MomentumOptimizer。在定义反向传播算法之后,通过运行sess.run(train_step)就可以对所在集合中的变量进行优化,使得当前batch的损失函数最小。
完整的神经网络训练模型: