Computes and stores the average and current value
| 96 | |
| 97 | |
| 98 | class MeterBuffer(defaultdict): |
| 99 | """Computes and stores the average and current value""" |
| 100 | |
| 101 | def __init__(self, window_size=20): |
| 102 | factory = functools.partial(AverageMeter, window_size=window_size) |
| 103 | super().__init__(factory) |
| 104 | |
| 105 | def reset(self): |
| 106 | for v in self.values(): |
| 107 | v.reset() |
| 108 | |
| 109 | def get_filtered_meter(self, filter_key="time"): |
| 110 | return {k: v for k, v in self.items() if filter_key in k} |
| 111 | |
| 112 | def update(self, values=None, **kwargs): |
| 113 | if values is None: |
| 114 | values = {} |
| 115 | values.update(kwargs) |
| 116 | for k, v in values.items(): |
| 117 | if isinstance(v, torch.Tensor): |
| 118 | v = v.detach() |
| 119 | self[k].update(v) |
| 120 | |
| 121 | def clear_meters(self): |
| 122 | for v in self.values(): |
| 123 | v.clear() |