Shortcuts

logger

class trojanzoo.utils.logger.SmoothedValue(name='', window_size=None, fmt='{global_avg:.3f}')[source]

Track a series of values and provide access to smoothed values over a window or the global series average.

Parameters:
  • name (str) – Name string.

  • window_size (int) – The maxlen of deque.

  • fmt (str) – The format pattern of str(self).

Variables:
  • name (str) – Name string.

  • fmt (str) – The string pattern.

  • deque (deque) – The unique data series.

  • count (int) – The amount of data.

  • total (float) – The sum of all data.

  • median (float) – The median of deque.

  • avg (float) – The avg of deque.

  • global_avg (float) – totalcount\frac{\text{total}}{\text{count}}

  • max (float) – The max of deque.

  • min (float) – The min of deque.

  • last_value (float) – The last value of deque.

reset()[source]

Reset deque, count and total to be empty.

Returns:

SmoothedValue – return self for stream usage.

synchronize_between_processes()[source]

Warning

Does NOT synchronize the deque!

update(value, n=1)[source]

Update n pieces of data with same value.

self.deque.append(value)
self.total += value * n
self.count += n
Parameters:
  • value (float) – the value to update.

  • n (int) – the number of data with same value.

Returns:

SmoothedValue – return self for stream usage.

update_list(value_list)[source]

Update value_list.

for value in value_list:
    self.deque.append(value)
    self.total += value
self.count += len(value_list)
Parameters:

value_list (list[float]) – the value list to update.

Returns:

SmoothedValue – return self for stream usage.

class trojanzoo.utils.logger.MetricLogger(delimiter='', meter_length=20, tqdm=None, indent=0, **kwargs)[source]
Parameters:
  • delimiter (str) – The delimiter to join different meter strings. Defaults to ''.

  • meter_length (int) – The minimum length for each meter. Defaults to 20.

  • tqdm (bool) – Whether to use tqdm to show iteration information. Defaults to env['tqdm'].

  • indent (int) – The space indent for the entire string. Defaults to 0.

Variables:
create_meters(**kwargs)[source]

Create meters with specific fmt in self.meters.

self.meters[meter_name] = SmoothedValue(fmt=fmt)

Parameters:

**kwargs(meter_name: fmt)

Returns:

MetricLogger – return self for stream usage.

get_str(cut_too_long=True, strip=True, **kwargs)[source]

Generate formatted string based on keyword arguments.

key: value with max length to be self.meter_length. The key string is green when env['color'] == True.

Parameters:
  • cut_too_long (bool) – Whether to cut too long values to first 5 characters. Defaults to True.

  • strip (bool) – Whether to strip trailing whitespaces. Defaults to True.

  • **kwargs – Keyword arguments to generate string.

log_every(iterable, header='', tqdm=None, tqdm_header='Iter', indent=None, verbose=None)[source]

Wrap an collections.abc.Iterable with formatted outputs.

  • Middle Output: {tqdm_header}: [ current / total ] str(self) {memory} {iter_time} {data_time} {time}<{remaining}

  • Final Output {header} str(self) {memory} {iter_time} {data_time} {total_time}

Parameters:
  • iterable (Iterable) – The raw iterator.

  • header (str) – The header string for final output. Defaults to ''.

  • tqdm (bool) – Whether to use tqdm to show iteration information. Defaults to self.tqdm.

  • tqdm_header (str) – The header string for middle output. Defaults to 'Iter'.

  • indent (int) – The space indent for the entire string. if None, use self.indent. Defaults to None.

  • verbose (int) – The verbose level of output information. Defaults to env[verbose]

Example:
reset()[source]

Reset meter in self.meters by calling SmoothedValue.reset().

Returns:

MetricLogger – return self for stream usage.

update(n=1, **kwargs)[source]

Update values to self.meters by calling SmoothedValue.update().

self.meters[meter_name].update(float(value), n=n)

Parameters:
  • n (int) – the number of data with same value.

  • **kwargs{meter_name: value}.

Returns:

MetricLogger – return self for stream usage.

update_list(**kwargs)[source]

Update values to self.meters by calling SmoothedValue.update_list().

self.meters[meter_name].update_list(value_list)

Parameters:

**kwargs{meter_name: value_list}.

Returns:

MetricLogger – return self for stream usage.

class trojanzoo.utils.logger.AverageMeter(name, fmt=':f')[source]

Computes and stores the average and current value.

Note

It is recommended to use SmoothedValue instead.

Docs

Access comprehensive developer documentation for TrojanZoo

View Docs