在 TensorFlow 中,术语“logits”指的是前几层的未缩放输出,表示线性相对尺度。它们通常在机器学习模型中用于表示应用 softmax 函数之前的预概率激活。
Softmax 和 softmax_cross_entropy_with_logits 之间的差异
Softmax (tf.nn.softmax) 将 softmax 函数应用于输入张量,将对数概率 (logits) 转换为 0 到 1 之间的概率。输出保持与输入相同的形状。
softmax_cross_entropy_with_logits (tf.nn.softmax_cross_entropy_with_logits) 将 softmax 步骤和交叉熵损失的计算结合在一个操作中。它提供了一种数学上更合理的方法来优化 softmax 层的交叉熵损失。此函数的输出形状小于输入,创建一个对元素求和的汇总指标。
示例
考虑以下示例:
<code class="python">import tensorflow as tf # Create logits logits = tf.constant([[0.1, 0.3, 0.5, 0.9]]) # Apply softmax softmax_output = tf.nn.softmax(logits) # Compute cross-entropy loss and softmax loss = tf.nn.softmax_cross_entropy_with_logits(logits, tf.one_hot([0], 4)) print(softmax_output) # [[ 0.16838508 0.205666 0.25120102 0.37474789]] print(loss) # [[0.69043917]]</code>
softmax_output 表示每个类的概率,而损失值表示 logits 和提供的标签之间的交叉熵损失。
何时使用 softmax_cross_entropy_with_logits
建议对模型输出进行 softmax 处理的优化场景使用 tf.nn.softmax_cross_entropy_with_logits。此功能可确保数值稳定性并无需手动调整。
以上是## TensorFlow 中 Softmax 和 softmax_cross_entropy_with_logits 有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!