from_logits=True 在 SparseCategoricalcrossEntropy 损失函数中有什么作用?

数据挖掘 机器学习 Python 喀拉斯 张量流 损失函数
2021-10-08 22:20:13

在文档中已经提到y_pred需要在 [-inf to inf] when 的范围内from_logits=True我真的不明白这是什么意思,因为概率需要在 0 到 1 的范围内!有人可以用简单的话解释一下使用的效果from_logits=True吗?

model.compile(optimizer='adam',
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
              metrics=['accuracy'])
1个回答

from_logits=True属性通知损失函数模型生成的输出值未标准化,即 logits。换句话说,softmax 函数没有应用于它们来产生概率分布。因此,这种情况下的输出层没有softmax激活函数:

out = tf.keras.layers.Dense(n_units)  # <-- linear activation function

softmax 函数将通过损失函数自动应用于输出值。from_logits=False因此,当您在最后一层使用(默认)和 softmax 激活函数时,这与场景没有区别;但是,在某些情况下,这可能有助于模型训练期间的数值稳定性。您可能还会发现thisthis的答案与 时的数值稳定性相关且有用from_logits=True