如何计算像素级预测的交叉熵

How is cross entropy calculated for pixel level prediction

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

我知道损失是在像素级别应用的,但是图像中每个像素的损失是否加起来形成每张图像的单个损失?还是不求和,求平均?

此外,每张图像的损失是不是简单地在批处理中求和(或者是其他一些操作)?

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

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

这是一个在 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)

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