machine-learning - 2.3 Pytorch BCEloss 和我自己的 "log"计算的比值

标签 machine-learning deep-learning pytorch

我正在编写一个玩具模型脚本来练习 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 倍。

enter image description here (抱歉,我不知道如何设置此网站上的表格格式...)

你能告诉我发生了什么事吗?我感觉到 PEBCAK 即将到来:-)

最佳答案

这是因为在 Excel 中,Log 函数计算以 10 为底的对数。 二元交叉熵的标准定义使用以e为底的对数函数。 您看到的比率只是log(10)=2.302585

关于machine-learning - 2.3 Pytorch BCEloss 和我自己的 "log"计算的比值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58962554/

相关文章:

python - spacy中模型最佳和模型最后之间的差异

python-3.x - 对于高频多季节性数据使用哪种预测?

heroku - 我从哪里获得 PyTorch 的仅 CPU 版本?

machine-learning - copy_initial_weights 文档在 Pytorch 的更高库中是什么意思?

machine-learning - 如何使用 EM 算法计算患者-观察者示例中的概率

machine-learning - 机器学习根据先前学习的组合输出字符串

machine-learning - tensorflow 。从 BasicRNNCell 切换到 LSTMCell

python - TensorFlow:每个 session 运行是否在图中启动不同批处理的数据?

machine-learning - pytorch中的层标准化?

python - Pytorch 简单模型没有改进