【发布时间】:2020-08-25 14:05:50
【问题描述】:
我正在构建我的损失函数。但是,当打印 y_true 张量的值时,它会打印带小数点的值(即 0.25,0.569,0.958)。这不应该是真的,因为 y_true 应该只有两个类 0 或 1。这是我的代码:
@tf.function
def weighted_binary_crossentropy(y_true, y_pred):
y_true= K.reshape(y_true, (K.shape(y_true)[0], -1))
tf.print("tensors1:", y_true, output_stream=sys.stdout, summarize=50000)
为什么我得到这样的输出而不是 0 和 1?
【问题讨论】:
-
这些小数点实际上是范围从 0 到 1 的概率。如果您想要 0 或 1,那么您必须将小于阈值(通常为 0.5)的概率分配给 0 和 1,否则您自己。但通常在计算损失时,您不必这样做。
-
是的,我知道这应该是 y-pred 的输出,但为什么是 y_true。为什么它应该给出 groundTruth (y_true) 的概率? Groundtruth 已经是 0 或 1。
-
您是否检查过
y_true在数据集中是否被正确标记? -
是的,我做到了,它是 0 和 1
-
现在我认为这是一个调试问题。可能是您在调用损失函数之前在某处更新
Y_true值。你能发布你的完整代码吗?
标签: tensorflow deep-learning loss-function