【问题标题】:Y_True in Loss Function not Correct损失函数中的 Y_True 不正确
【发布时间】: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


【解决方案1】:

我能够检测到来自我的数据生成器的问题。当我添加了 rotation_range 时,它​​会弄乱像素的值。这是因为在旋转时会创建新像素

【讨论】:

    猜你喜欢
    • 2020-03-07
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 2016-12-05
    • 2018-04-02
    • 2020-09-21
    • 2018-12-30
    相关资源
    最近更新 更多