首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从火炬度量中使用F1Score的不切实际的结果

从火炬度量中使用F1Score的不切实际的结果
EN

Stack Overflow用户
提问于 2022-02-18 16:35:02
回答 1查看 1.1K关注 0票数 0

针对毕火炬闪电中的二值分类问题,提出了一种分段神经网络模型。为了实现这一点,我使用了BCEWithLogitsLoss。我的真实和预测的形状分别是(BZ,640,256),它们的内容分别是(0,1) 0,1。

现在,我正在尝试从火炬度量中用F1计算我的验证数据集中批量数据的F1Score分数,然后用Pytroch闪电的log_dict进行累积

代码语言:javascript
复制
from torchmetrics import F1Score
self.f1 = F1Score(num_classes=2)

我的验证步骤如下所示:

代码语言:javascript
复制
def validation_step(self, batch, batch_idx):

    t0, t1, mask_gt = batch
    mask_pred = self.forward(t0, t1)
    mask_pred = torch.sigmoid(mask_pred).squeeze()
    mask_pred = torch.where(mask_pred > 0.5, 1, 0)
    f1_score_ = self.f1(mask_pred, mask_gt)
    metrics = {
        'val_f1_score': f1_score_,
    }
    self.log_dict(metrics, on_epoch=True)

这给了我在每个时代结束时(甚至在培训开始前进行的心智验证检查)的高得离谱的F1分数,~0.99,这让我认为我没有以正确的方式使用F1Score和log_dict。我尝试了几个论点(https://github.com/PyTorchLightning/metrics/blob/master/torchmetrics/classification/f_beta.py#L181-L310)却没有结果。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-20 17:58:49

事实证明,我有一个非常不平衡的数据集,其中"False“类被过度表示,是"True”类的40倍。该模型能很好地检测“假”类,因此通过取两个类的宏F1平均值(每个类的权重相等)来掩盖检测“真”类的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71176911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档