张量流如何在训练模型时使用反向传播?

时间:2016-12-15 13:22:33

标签: machine-learning neural-network tensorflow

我是张量流的初学者,我想实现MLP并基于反向传播算法训练它但是当我阅读教程时,我发现它使用了像“随机梯度下降”这样的选择器,并称之为反向传播,而没有实现算法阶段。这种反向传播怎么样?

2 个答案:

答案 0 :(得分:1)

通常,您首先使用这些优化器来定义损失函数,然后在其上调用优化程序.optimize

loss = some_loss(predicted_outputs, true_outputs)
optimizer = tf.train.GradientDescentOptimizer(learning_rate)
train_op = optimizer.minimize(loss)

现在,执行sess.run(train_op)将在权重渐变的方向上迈出一步,以尽量减少损失。

答案 1 :(得分:0)

我认为这可能有所帮助:

  

在[18]中,两种通过a传播梯度的方法   描述了计算图。第一,作者提到   作为符号到数字的区分,接收一组输入   值然后计算渐变的数值   那些输入值。它通过显式遍历图表来实现   首先在前向顺序(前向传播)中计算成本,   然后以相反的顺序(反向传播)来计算梯度   链规则。另一种与TensorFlow更相关的方法是什么   [18]称符号到符号的衍生物和[8]术语是自动的   梯度计算。在这种情况下,渐变不是由a计算的   显式实现反向传播算法。相反,   特殊节点被添加到计算图形中以计算   每个操作的梯度,从而最终是链规则。至   执行反向传播,然后必须简单地执行这些节点   与图形评估引擎的任何其他节点一样。就这样,这个   方法不会产生所需的导数作为数值,   但仅作为计算这些值的符号句柄。

参考:http://arxiv.org/abs/1610.0117