为什么使用 TensorFlow 的估算器高级 API 和原始 API 进行 mnist 分类的交叉熵损失在规模上是不同的?



我正在阅读一些TensorFlow示例代码,并且我发现CNN using-Estimatorapi的损失和RAW CNN的损失的规模确实不同,但它们都是相同的损失函数:

前者是 loss_op = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits_train, labels=tf.cast(labels, dtype=tf.int32))),它使用非一hot标签。

后者是loss_op =tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=Y)),它使用单速向量标签。

为什么前者损失几乎是0〜2.39026,而后者的损失更大,为什么?

我知道,这是因为可变的初始器差,tf.layers的默认值。log(0)中的机械图(0)在softmax_cross_entropy_with_logits中,我认为较低的损耗更准确,因为log(1e-5)= -11。

最新更新