MCPcopy Create free account
hub / github.com/DanielShalam/BPA / MetricLogger

Class MetricLogger

utils.py:340–427  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

338
339
340class MetricLogger(object):
341 def __init__(self, delimiter="\t"):
342 self.meters = defaultdict(SmoothedValue)
343 self.delimiter = delimiter
344
345 def update(self, **kwargs):
346 for k, v in kwargs.items():
347 if isinstance(v, torch.Tensor):
348 v = v.item()
349 assert isinstance(v, (float, int))
350 self.meters[k].update(v)
351
352 def __getattr__(self, attr):
353 if attr in self.meters:
354 return self.meters[attr]
355 if attr in self.__dict__:
356 return self.__dict__[attr]
357 raise AttributeError("'{}' object has no attribute '{}'".format(
358 type(self).__name__, attr))
359
360 def __str__(self):
361 loss_str = []
362 for name, meter in self.meters.items():
363 loss_str.append(
364 "{}: {}".format(name, str(meter))
365 )
366 return self.delimiter.join(loss_str)
367
368 def add_meter(self, name, meter):
369 self.meters[name] = meter
370
371 def log_every(self, iterable, print_freq, header=None):
372 i = 0
373 if not header:
374 header = ''
375
376 start_time = time.time()
377 end = time.time()
378 iter_time = SmoothedValue(fmt='{avg:.6f}')
379 data_time = SmoothedValue(fmt='{avg:.6f}')
380 space_fmt = ':' + str(len(str(len(iterable)))) + 'd'
381 if torch.cuda.is_available():
382 log_msg = self.delimiter.join([
383 header,
384 '[{0' + space_fmt + '}/{1}]',
385 'eta: {eta}',
386 '{meters}',
387 'time: {time}',
388 'data: {data}',
389 'mem: {memory:.0f} '
390 'mem reserved: {memory_res:.0f} '
391 ])
392 else:
393 log_msg = self.delimiter.join([
394 header,
395 '[{0' + space_fmt + '}/{1}]',
396 'eta: {eta}',
397 '{meters}',

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected