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

问题描述 投票:0回答:2

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

machine-learning neural-network tensorflow
2个回答
1
投票

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

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

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


0
投票

我认为这可能会有所帮助:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.