torchmetricsをつかって、AccuracyやF1スコア等を出力したく、
ドキュメントにF1も付け加えた形としました。
python
1import torch 2import torchmetrics 3 4metric_acc = torchmetrics.Accuracy() 5metric_f1 = torchmetrics.F1() 6 7n_batches = 10 8for i in range(n_batches): 9 # simulate a classification problem 10 preds = torch.randn(10, 5).softmax(dim=-1) 11 target = torch.randint(5, (10,)) 12 13 acc = metric_acc(preds, target) 14 f1 = metric_f1(preds, target) 15 print(f"Accuracy on batch {i}: {acc}") 16 print(f"F1 score on batch {i}: {f1}") 17 18 19 20acc = metric_acc.compute() 21f1 = metric_f1.compute() 22print(f"Accuracy on all data: {acc}") 23print(f"f1 score on all data: {f1}")
です。ですが、出力がそれぞれ10バッチとも同じ値が出てきてしまいます。
python
1Accuracy on batch 0: 0.10000000149011612 2tensor(0.1000) 3Accuracy on batch 1: 0.10000000149011612 4tensor(0.1000) 5Accuracy on batch 2: 0.30000001192092896 6tensor(0.3000) 7Accuracy on batch 3: 0.30000001192092896 8tensor(0.3000) 9Accuracy on batch 4: 0.10000000149011612 10tensor(0.1000) 11Accuracy on batch 5: 0.20000000298023224 12tensor(0.2000) 13Accuracy on batch 6: 0.10000000149011612 14tensor(0.1000) 15Accuracy on batch 7: 0.4000000059604645 16tensor(0.4000) 17Accuracy on batch 8: 0.10000000149011612 18tensor(0.1000) 19Accuracy on batch 9: 0.30000001192092896 20tensor(0.3000) 21Accuracy on all data: 0.20000000298023224 22tensor(0.2000)
入力のデータがおかしいのでしょうか。。また、recallやspecificityでも同じ現象が起きています。
入力がバッチサイズ文次元が増えていて、かつモデルの作成にpytorch_lightningを使っているので、できればsklearn.metrcisではなくtorchmetricsを使用したいです。
解決方法が分からず止まっております。どなたか分かる方がいらっしゃったら、ご教示いただけますと幸いです。宜しくお願い致します。
あなたの回答
tips
プレビュー