【问题标题】:can I train(optimize) on f1 score loss with pytorch我可以用 pytorch 训练(优化)f1 分数损失吗
【发布时间】:2021-03-26 19:22:14
【问题描述】:

我正在构建一个如下所示的二元分类器。我可以替换 BCELoss 来优化 f1 分数吗?

criterion = nn.BCELoss()

preds = model(inputs)
loss = criterion(preds , labels)

【问题讨论】:

    标签: tensorflow deep-learning neural-network pytorch


    【解决方案1】:

    F1 分数不是一个平滑函数,因此不能直接用梯度下降进行优化。随着网络参数的逐渐变化,输出概率平滑变化,但 F1 分数仅在概率越过 0.5 的边界时发生变化。结果,F1 分数的梯度几乎处处为零。

    您可以按照here 的说明使用 F 度量的软版本。诀窍是您基本上用一种概率版本替换了真阳性和假阳性的计数:

    其中oi是网络输出,ti是ground truth目标概率。然后像往常一样继续计算 F-measure。

    另外,您可能会发现这个Kaggle tutorial 很有用。

    【讨论】:

      猜你喜欢
      • 2020-08-30
      • 1970-01-01
      • 1970-01-01
      • 2020-07-16
      • 2021-02-23
      • 1970-01-01
      • 2021-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多