我应该在计算指标精度或类似指标之前应用 Softmax 吗?

数据挖掘 火炬 公制 软最大
2022-03-01 18:11:14

我正在使用PyTorch Lightning(没有标签,而且我没有足够的声誉来创建一个)并且正面临多分类问题。

我的损失函数是torch.nn.CrossEntropyLoss在内部应用softmax。所以,由于我不必处理这个问题,我的模型预测输出不是概率向量。现在,就代码而言,一个步骤如下所示:

def train_step(self, batch):
    datapoints, labels = batch
    y_out = self(datapoints)
    loss = torch.nn.CrossEntropyLoss()(y_out, labels)
    metric_output = calculate_some_metric(y_out, labels)

我现在的问题是,在计算指标之前是否需要手动应用 softmax。当然,这可能取决于指标本身是否有必要......但是是否有共同的指标可以产生影响?

1个回答

是的,您应该应用 softmax 或 sigmoid(对于二进制情况)。y_out 就是通常所说的 logits。像 AUC 这样的指标需要概率作为输入,并且不适用于 y_out。