多值张量上的Tensorflow Optimizer

时间:2018-07-03 21:54:29

标签: tensorflow

由于错误,我忘了降低交叉熵输出的平均值,然后再将其作为损失进行补偿,但是无论如何训练还是产生了合理的结果。

现在我想知道我是否做了:

loss = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=labels, logits=logits, name='cross_entropy_per_example')
op = tf.train.AdamOptimizer(0.01).minimize(loss)

与:

loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(labels=labels, logits=logits, name='cross_entropy_per_example'))
op = tf.train.AdamOptimizer(0.01).minimize(loss)

我的印象是成本函数的优化需要单个值张量,但是我困惑为什么尽管传递了带有多个值的张量也要进行训练。

1 个答案:

答案 0 :(得分:1)

tf.gradients(因此,它的大多数更高级别的接口,包括Optimizer)都隐式地总结了您要区分的内容。 tf.gradients将仅计算相对于标量的梯度。 tf.gradients documentation中对此有所提及。

因此,根据您的情况,reduce_mean除以该值即可。