takipipo
2025-01-16 3530688e0a1b1dfbb22dcd3324db97be5bbc0d9b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import torch
 
 
def th_accuracy(pad_outputs, pad_targets, ignore_label):
    """Calculate accuracy.
 
    Args:
        pad_outputs (Tensor): Prediction tensors (B * Lmax, D).
        pad_targets (LongTensor): Target label tensors (B, Lmax, D).
        ignore_label (int): Ignore label id.
 
    Returns:
        float: Accuracy value (0.0 - 1.0).
 
    """
    pad_pred = pad_outputs.view(
        pad_targets.size(0), pad_targets.size(1), pad_outputs.size(1)
    ).argmax(2)
    mask = pad_targets != ignore_label
    numerator = torch.sum(pad_pred.masked_select(mask) == pad_targets.masked_select(mask))
    denominator = torch.sum(mask)
    return float(numerator) / float(denominator)
 
 
def compute_accuracy(pad_outputs, pad_targets, ignore_label):
    """Calculate accuracy.
 
    Args:
        pad_outputs (LongTensor): Prediction tensors (B, Lmax).
        pad_targets (LongTensor): Target label tensors (B, Lmax).
        ignore_label (int): Ignore label id.
 
    Returns:
        float: Accuracy value (0.0 - 1.0).
 
    """
    mask = pad_targets != ignore_label
    numerator = torch.sum(pad_outputs.masked_select(mask) == pad_targets.masked_select(mask))
    denominator = torch.sum(mask)
    return numerator.float() / denominator.float()  # (FIX:MZY):return torch.Tensor type