我看到很多关于在背景下使用0或1作为真实值的CEL或二元交叉熵损失的解释,然后你会得到一个函数:
def CrossEntropy(yHat, y):
if yHat == 1:
return -log(y)
else:
return -log(1 - y)
然而,当yHat不是离散的0或1时,我对BCE的工作方式感到困惑。例如,如果我想查看MNIST数字的重构损失,其中我的基本事实为0 < yHat < 1,而我的预测也在同一范围内,那么这如何改变我的函数?
编辑:
抱歉,让我给出更多有关我的困惑的背景。在PyTorch VAE的教程中,他们使用BCE来计算重构损失,其中yhat(据我所知)不是离散的。请参见:
https://github.com/pytorch/examples/blob/master/vae/main.py
这个实现可以正常工作...但我不理解在这种情况下如何计算BCE损失。
[0, 1]
范围,然后使用BCE逐像素进行处理。 - Coolness