我正在Keras中运行FCN,该FCN使用binary cross-entropy作为损失函数。但是,我不确定损失如何累积。
我知道损失是在像素级别上应用的,但是图像中每个像素的损失是否加起来就形成了每个图像一个损失?还是不是求和,而是求平均值?
此外,在批次中是否简单地对每个图像的损失求和(或者是其他操作)?
答案 0 :(得分:1)
我假设您的问题是一个普遍的问题,并且是针对特定模型的(如果不能,您是否可以共享您的模型?)。
您是正确的,如果在像素级别使用交叉熵,则必须在所有像素上减少(求和或取平均值)结果才能得到单个值。
以下是张量流中卷积自动编码器的示例,其中此步骤是特定的:
相关行是:
loss = tf.nn.sigmoid_cross_entropy_with_logits(labels=targets_, logits=logits)
cost = tf.reduce_mean(loss)
无论您采用成本函数的平均值还是总和都不会更改最小化器的值。但是,如果采用均值,则更改批次大小或图像大小时,成本函数的值在实验之间更容易比较。