`pytorch`를 사용하면 메트릭을 계산할 때에 저는 주로 `torchmetrics`를 사용합니다. 실험 조건이나 데이터의 상태에 따라 여러 메트릭이 필요한데, `torchmetrics`에는 부족함 없이 구현되어있기 때문입니다. 그런데 신기하게도 멀티라벨 에서의 `AUC-PR`은 없습니다. 저 메트릭을 위해 조사하다 `torcheval`이라는 라이브러리를 찾았습니다. 기본적으로 `torchmetrics`과 매우 유사하지만, `AUC-PR`이 구현되어 있습니다. 함수 불러오는것 까지는 `torchmetrics`과 똑같은데, 함수형으로의 구현은 안되어있는듯 합니다.
멀티라벨 이다보니 기본적으로 prediction & real target 모두 벡터가 아닌 원핫인코딩 된 행렬로 넣으면 됩니다.
>>> import torch
>>> from torcheval.metrics import MultilabelAUPRC
>>> metric = MultilabelAUPRC(num_labels=3, average=None)
>>> input = torch.tensor([[0.75, 0.05, 0.35], [0.45, 0.75, 0.05], [0.05, 0.55, 0.75], [0.05, 0.65, 0.05]])
>>> target = torch.tensor([[1, 0, 1], [0, 0, 0], [0, 1, 1], [1, 1, 1]])
이제 계산 부분은 `.update()`와 `.compute()`를 이용하면 됩니다.
>>> metric.update(input, target)
>>> metric.compute()
이런 모듈형 방식은 아무래도 여러 배치(batch)에서 누적된 예측값을 기반으로 성능을 계산할 수 있도록 설계되어 있기 때문입니다. 나중에 `Custom Metric`을 구현 할 때에 자세히 확인하겠습니다.
출처
https://pytorch.org/torcheval/main/generated/torcheval.metrics.MultilabelAUPRC.html
torcheval.metrics.MultilabelAUPRC — TorchEval main documentation
Shortcuts
pytorch.org
'코딩 > 이슈' 카테고리의 다른 글
[PyTorch] Softmax + CrossEntropyLoss (0) | 2024.11.06 |
---|---|
[EarlyStopping] 변수설정 실수 (0) | 2024.10.28 |
[PyTorch] 모델 평가시 주의, trainloader shuffle (0) | 2024.10.25 |
[pandas] 피쳐엔지니어링 주의: 더미코딩 순서 (0) | 2024.10.23 |
[PyTorch] torchmetrics: Multiclass vs. Multilabel F1-score (1) | 2024.09.11 |