Machine learning tensorflow如何使用反向传播来训练模型?

Machine learning tensorflow如何使用反向传播来训练模型?,machine-learning,neural-network,tensorflow,Machine Learning,Neural Network,Tensorflow,我是tensorflow的初学者,我想实现MLP并基于反向传播算法对其进行训练,但当我阅读教程时,我发现它使用了诸如“随机梯度下降”之类的optmizers,并称之为反向传播,而没有实现算法阶段。这种反向传播是如何进行的?通常,您使用这些优化器时,首先定义损失函数,然后调用优化器的。对其进行优化: loss = some_loss(predicted_outputs, true_outputs) optimizer = tf.train.GradientDescentOptimizer(lear

我是tensorflow的初学者,我想实现MLP并基于反向传播算法对其进行训练,但当我阅读教程时,我发现它使用了诸如“随机梯度下降”之类的optmizers,并称之为反向传播,而没有实现算法阶段。这种反向传播是如何进行的?

通常,您使用这些优化器时,首先定义损失函数,然后调用优化器的
。对其进行优化

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

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

我认为这可能有助于:

在[18]中,有两种方法可以通过 描述了计算图。第一个是作者提到的 要将符号转换为数字,请接收一组输入 值,然后计算渐变的数值 这些输入值。它通过显式遍历图来实现 在前向顺序(前向传播)中,首先计算成本, 然后以相反的顺序(反向传播)通过 链式法则。另一种与TensorFlow更相关的方法是 [18] 自动调用符号到符号的导数和[8]项 梯度计算。在这种情况下,渐变不是由 反向传播算法的显式实现。相当地 特殊节点添加到计算图形中,用于计算 每个操作的梯度,从而最终形成链式规则。到 如果执行反向传播,则必须简单地执行这些节点 与图形求值引擎中的任何其他节点一样。因此,这 方法不会产生所需的导数作为数值, 但仅作为计算这些值的符号句柄


参考资料:

好的,如果我把反向传播说成是两个阶段,用数据和反向传播对模型进行前馈以调整权重,这意味着“tf.train.GradientDescentOptimizer()”是反向传播用来调整权重以使成本最小化,是真的吗?从某种意义上说是的,是“正向传递”由
损耗
张量实现。但您需要记住,TF中的执行是懒惰的,运行
sess.run(train_op)
将强制tensorflow首先执行
loss
。好吧,但如果我将optmizer更改为另一个类似adamoptmizer的选项,会怎么样?我知道bp是否仍然是基于梯度下降的,所以我在训练bp时使用它。TF中的所有优化器都基于梯度下降的思想,并使用反向传播。
tf.train.GradientDescentOptimizer
正在实现一个原始SGD。很抱歉,如果是这样,那么如果所有OPTMizer都基于梯度下降的思想并使用反向传播,那么它们之间的主要区别是什么?