Skip to content

meter

learning.meter

Meter, updates and stores loss values and report average value.

Meter

Meter()

Computes and stores the average and current losses by keys

Attributes:

  • meters (dict) –

    stored loss information by keys

Source code in SaigeToolkit/learning/meter.py
def __init__(self) -> None:
    self.meters: Dict[str, AverageMeter] = {}

meters instance-attribute

meters: Dict[str, AverageMeter] = {}

reset

reset() -> None
Source code in SaigeToolkit/learning/meter.py
def reset(self) -> None:
    for _, mtr in self.meters.items():
        mtr.reset()

update

update(loss: Union[Dict[str, float], List[float], float]) -> None

update result loss from network

Parameters:

  • loss (Union[Dict[str, float], List[float], float]) –

    loss to be stored. can be three types of data.

Source code in SaigeToolkit/learning/meter.py
def update(self, loss: Union[Dict[str, float], List[float], float]) -> None:
    """update result loss from network

    Args:
        loss (Union[Dict[str, float], List[float], float]):
            loss to be stored. can be three types of data.
    """

    if isinstance(loss, dict):
        keys, loss = list(loss.keys()), list(loss.values())
    elif isinstance(loss, list):
        keys = ["loss" + str(i) for i in range(len(loss))]
    else:
        keys = ["loss"]
        loss = [loss]

    for key, l in zip(keys, loss):
        if key not in self.meters.keys():
            self.meters[key] = AverageMeter()
        self.meters[key].update(l)

AverageMeter

AverageMeter()

Computes and stores the average and current value Attributes: val (float): last input loss value avg (float): average loss value sum (float): summed loss value min (float): min loss value max (float): max loss value count (int): total number of loss inputs

Source code in SaigeToolkit/learning/meter.py
def __init__(self) -> None:
    self.reset()

reset

reset() -> None
Source code in SaigeToolkit/learning/meter.py
def reset(self) -> None:
    self.val = 0.0
    self.avg = 0.0
    self.sum = 0.0
    self.min = float("inf")
    self.max = -float("inf")
    self.count = 0

update

update(val: float, n: int = 1) -> None

update single loss value

Parameters:

  • val (float) –

    current loss value

  • n (int, default: 1 ) –

    current number of loss inputs. Defaults to 1.

Source code in SaigeToolkit/learning/meter.py
def update(self, val: float, n: int = 1) -> None:
    """update single loss value

    Args:
        val (float): current loss value
        n (int, optional): current number of loss inputs. Defaults to 1.
    """
    self.val = val
    self.sum += val * n
    self.count += n
    self.avg = self.sum / self.count
    self.min = min(val, self.min)
    self.max = max(val, self.max)

get_meter

get_meter() -> Tuple[Meter, Meter]

get loss/score average meter for training and validation

Returns:

  • Tuple[Meter, Meter]

    Tuple[Meter, Meter]: training/validation meters

Source code in SaigeToolkit/learning/meter.py
def get_meter() -> Tuple[Meter, Meter]:
    """get loss/score average meter for training and validation

    Returns:
        Tuple[Meter, Meter]: training/validation meters
    """

    train_meter = Meter()
    val_meter = Meter()

    return train_meter, val_meter