【发布时间】:2021-07-04 05:05:13
【问题描述】:
我有一些使用 CrossEntropyLoss 和忽略类的训练管道。
模型输出 log_probs 形状 (150, 3) - 表示 3 个可能的类,每批 150 个。
label_batch 的形状为 150,torch.max(label_batch) == tensor(3, device='cuda:0'),这意味着有一个标记为 3 的额外类,即忽略类。
损失处理得很好:
self._criterion = nn.CrossEntropyLoss(
reduction='mean',
ignore_index=3
)
但是准确度指标认为3 类是有效的并且给出了非常错误的结果:
self.train_acc = pl.metrics.Accuracy()
由于3 标签导致self.train_acc.update(log_probs, label_batch) 的错误结果应被忽略。
如何正确使用 pl.metrics.Accuracy() 和忽略类?
【问题讨论】:
标签: python machine-learning deep-learning pytorch pytorch-lightning