Coverage for src/nos/trainers/average_metric.py: 100%
21 statements
« prev ^ index » next coverage.py v7.6.1, created at 2024-09-19 11:29 +0000
« prev ^ index » next coverage.py v7.6.1, created at 2024-09-19 11:29 +0000
1class AverageMetric:
2 def __init__(self, name: str, fmt: str = ":f"):
3 self.name = name
4 self.fmt = fmt
5 self.val = 0.0
6 self.n_items = 0
7 self.avg = 0.0
9 def __call__(self):
10 return self.avg
12 def reset(self):
13 self.val = 0.0
14 self.n_items = 0
15 self.avg = 0.0
17 def update(self, val: float, n: int = 1):
18 self.n_items += n
19 self.val += val
21 self.avg = self.val / self.n_items
23 def __str__(self):
24 return f"{self.name}: {self.avg: {self.fmt}}"
26 def to_dict(self):
27 return {"name": self.name, "val": self.avg}