Tensorflow 基于多值张量的张量流优化器

Tensorflow 基于多值张量的张量流优化器,tensorflow,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 =

在我把交叉熵作为损失输入之前,我错误地忘记了减少交叉熵输出的平均值,但无论如何,训练都是有效的,并且产生了合理的结果

现在我想知道我做了什么:

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)
我的印象是,成本函数的优化需要一个单值张量,但我不明白为什么尽管通过了一个具有多个值的张量,但仍要进行训练

tf.gradients
(因此它的大多数高级接口,包括
Optimizer
s)隐式地对您所区分的内容求和
tf.渐变
将只计算关于标量的渐变。报纸上提到了这一点


因此,在你的例子中,它只是被
reduce\u的意思除以。

Aha,所以它非常相似。如果没有tf.reduce\u mean,我假设损失会更大,对吗?与reduce\u mean相比,隐式reduce\u sum版本只会将您的学习率乘以您的批量大小,因此可能是的,除非批量非常小。