Logging and Plotting¶
Logging¶
garage supports convenient and useful logging. garage uses dowel
for logging. The logger
supports many outputs, including
Std output
Text output
Csv output
TensorBoard output
In garage’s experiment, the logger
will output to all of these.
Here is an example of logging in garage.
from garage import wrap_experiment
from dowel import logger, tabular
@wrap_experiment
def log_experiment(ctxt=None):
for i in range(100):
# Log str directly
logger.log('Logging messages:')
# Log scalar values with the key 'AverageReturn'
tabular.record('AverageReturn', i)
# The Trainer will do these steps for you, if you log things in
# the algorithms.
logger.log(tabular)
logger.dump_all()
log_experiment()
Running the example will generate outputs like:
2020-10-21 14:06:04 | [log_experiment] Logging to [CUR_DIR]/data/local/experiment/log_experiment
2020-10-21 14:06:04 | [log_experiment] Logging messages:
------------- -
AverageReturn 0
------------- -
2020-10-21 14:06:04 | [log_experiment] Logging messages:
------------- -
AverageReturn 1
------------- -
2020-10-21 14:06:04 | [log_experiment] Logging messages:
------------- -
AverageReturn 2
------------- -
To look at outputs with TensorBoard, you can refer to this page.
To set a customized log directory, just pass a log_dir
argument to the
experiment.
@wrap_experiment(log_dir='my_custom_log_fir')
Plotting¶
In garage, as long as the environment implement the visualize()
method, is
it easy to plot a policy running in the environment when training.
To visualize an experiment, just set the plot
argument to True
in the
train
method of
Trainer
. For example, in example/tf/trpo_cartpole.py,
change the train line into:
trainer.train(n_epochs=100, batch_size=4000, plot=True)
If you want to pause in every epoch, just set pause_for_plot
to True
.
This page was authored by Ruofu Wang (@yeukfu).