我正在编写一个玩具模型脚本来练习 PyTorch 和 GAN 模型,并且我确保我尽可能地理解每个步骤。 这让我检查了我对 BCEloss 函数的理解,显然我理解它......比率为 2.3。
为了检查结果,我为 Excel 写入了中间值:
tmp1 = y_pred.tolist() # predicted values in list (to copy/paste on Excel)
tmploss = nn.BCELoss(reduction='none') # redefining a loss giving the whole BCEloss tensor
tmp2 = tmploss(y_pred, y_real).tolist() # BCEloss values in list (to copy/paste Exel)
然后我在 Excel 上复制 tmp1
并计算:每个值的 -log(x)
,这是 y_target = y_real = 1< 的 BCEloss 公式
.
然后我将结果值与 tmp2
的值进行比较:这些值比“我的”值高 2.3 倍。
你能告诉我发生了什么事吗?我感觉到 PEBCAK 即将到来:-)
最佳答案
这是因为在 Excel 中,Log 函数计算以 10 为底的对数。 二元交叉熵的标准定义使用以e为底的对数函数。 您看到的比率只是log(10)=2.302585
关于machine-learning - 2.3 Pytorch BCEloss 和我自己的 "log"计算的比值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58962554/