- Added an internal step counter to the tracker. Now logging something such as a scalar without specifying the step will log it to that step. To log to no step, explicitly pass step=None or step=-1. The internal step can be incremented using tracker.step(). You can also pass the step to which the internal step needs to be set : tracker.step(50). However, the steps can only grow larger with time.
Old syntax (still works) :
for epoch in epochs:
...
tracker.log_scalar("accuracy", acc, step=epoch)
tracker.log_scalar("r2", acc, step=epoch)
tracker.log_scalar("mse", acc, step=epoch)
...
New syntax (with identical behaviour) :
for epoch in epochs:
...
tracker.log_scalar("accuracy", acc)
tracker.log_scalar("r2", acc)
tracker.log_scalar("mse", acc)
...
tracker.step()
- Added features to track time in the Tracker
Instead of :
data_prep_timer = time.time()
prepare_data()
data_prep_timer = time.time() - data_prep_timer
You can do :
tracker.start_timer("data prep")
prepare_data()
tracker.stop_timer("data prep")
Times that are tracked during a given step are printed and logged to this step automatically when calling tracker.step(). They can also be retrieved using tracker.timer["last"] to log or print them manually. Please refer to the Timer and TimerManager classes for details.
- Added feature to shorten details
- Solved bug where logging level was not properly taken into account in some cases