【发布时间】:2021-06-30 15:24:25
【问题描述】:
我正在学习 tensorflow,并希望将 tensorflow 实现与数学联系起来。
据我所知,数学交叉熵要求其输入之和为 1。在以下代码中,y_true 是有效输入,而 y_pred 不是数学有效输入:
y_true = [[0, 1]]
y_pred = [[1.0, 20.0]]
print(tf.keras.losses.CategoricalCrossentropy(from_logits=False).call(y_true, y_pred))
print(tf.keras.losses.CategoricalCrossentropy(from_logits=True).call(y_true, y_pred))
给予:
tf.Tensor([0.04879016], shape=(1,), dtype=float32)
tf.Tensor([0.], shape=(1,), dtype=float32)
请找到要点here。
This answer 说:
如果from_logits=False,表示输入是概率
This answer 说:
from_logits=True表示crossEntropy层的输入正常 张量/logits
This answer 说:
"上面代码中
raw_predictions的另一个名字是logit
from_logits,我猜,意思是输入是raw_predictions。
由于我输入的不是概率,所以我设置了from_logits=True,但我得到的结果是0。
谁能解释一下?
【问题讨论】:
标签: python tensorflow