【问题标题】:How is cross entropy calculated for pixel level prediction如何为像素级预测计算交叉熵
【发布时间】:2019-01-28 09:15:10
【问题描述】:

我在 Keras 中运行一个 FCN,它使用 binary cross-entropy 作为损失函数。但是,我不确定这些损失是如何累积的。

我知道损失是在像素级别应用的,但是图像中每个像素的损失是否加起来形成每张图像的单个损失?或者不是被总结,而是被平均?

此外,每个图像的损失是否只是对批次进行了求和(或者是其他一些操作)?

【问题讨论】:

    标签: machine-learning artificial-intelligence cross-entropy


    【解决方案1】:

    我假设您的问题是一般性的,并且特定于特定模型(如果不是,您可以分享您的模型吗?)。

    您是对的,如果在像素级别使用交叉熵,则必须在所有像素上减少(求和或平均)结果以获得单个值。

    以下是 tensorflow 中卷积自动编码器的示例,其中此步骤是特定的:

    https://github.com/udacity/deep-learning/blob/master/autoencoder/Convolutional_Autoencoder_Solution.ipynb

    相关行是:

    loss = tf.nn.sigmoid_cross_entropy_with_logits(labels=targets_, logits=logits)
    cost = tf.reduce_mean(loss)
    

    无论您采用成本函数的均值还是总和都不会改变最小化器的值。但是如果你取平均值,那么当你改变批量大小或图像大小时,成本函数的值更容易在实验之间进行比较。

    【讨论】:

    • 只是通用的,与具体型号无关。但特定于 keras
    • 所以我的问题是具体是在 keras 中求和还是求平均值
    • 在 Keras 中,成本函数求和:github.com/keras-team/keras/blob/…
    • 这是否意味着模型不会考虑个人图像丢失?考虑以下场景,每张图像添加所有像素损失,然后为该批次中的所有图像求和每张图像的损失。如果我有 16 个图像(256×256)批量大小,那么一次迭代的损失将是 16x256x256 个单个损失计算的总和,并且除非批量大小为 1,否则损失将永远不会考虑单个图像。我理解对吗?
    • 批量大小的总损失基本上是批量大小中每个图像的损失总和(如果我理解你的问题)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 2020-12-23
    • 2020-05-26
    • 2017-10-22
    相关资源
    最近更新 更多