我正在编写一个玩具模型以同时练习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
的值进行比较:这些值比“ mine”高2.3倍。
你能告诉我发生了什么吗?我觉得有PEBCAK来了:-)
答案 0 :(得分:4)
这是因为在Excel中, Log 函数会计算以10为底的对数。 二进制交叉熵的标准定义使用对数 e 的对数函数。 您看到的比率只是 log(10)= 2.302585