geowatch.utils.lightning_ext.callbacks.tensorboard_plotter module

Parses an existing tensorboard event file and draws the plots as pngs on disk in the monitor/tensorboard directory.

Derived from netharn/mixins.py for dumping tensorboard plots to disk

CommandLine

# cd into training directory
GEOWATCH_PREIMPORT=0 python -m geowatch.utils.lightning_ext.callbacks.tensorboard_plotter .

python -m geowatch.utils.lightning_ext.callbacks.tensorboard_plotter \
    /data/joncrall/dvc-repos/smart_expt_dvc/training/toothbrush/joncrall/Drop6/runs/Drop6_BAS_scratch_landcover_10GSD_split2_V4/lightning_logs/version_4/
class geowatch.utils.lightning_ext.callbacks.tensorboard_plotter.TensorboardPlotter[source]

Bases: Callback

Asynchronously dumps PNGs to disk visualize tensorboard scalars. exit

CommandLine

xdoctest -m geowatch.utils.lightning_ext.callbacks.tensorboard_plotter TensorboardPlotter

Example

>>> # xdoctest: +REQUIRES(module:tensorboard)
>>> from geowatch.utils.lightning_ext import demo
>>> from geowatch.monkey import monkey_lightning
>>> import pytorch_lightning as pl
>>> import pandas as pd
>>> monkey_lightning.disable_lightning_hardware_warnings()
>>> self = demo.LightningToyNet2d(num_train=55)
>>> default_root_dir = ub.Path.appdir('lightning_ext/tests/TensorboardPlotter').ensuredir()
>>> #
>>> trainer = pl.Trainer(callbacks=[TensorboardPlotter()],
>>>                      default_root_dir=default_root_dir,
>>>                      max_epochs=3, accelerator='cpu', devices=1)
>>> trainer.fit(self)
>>> train_dpath = trainer.logger.log_dir
>>> print('trainer.logger.log_dir = {!r}'.format(train_dpath))
>>> data = read_tensorboard_scalars(train_dpath)
>>> for key in data.keys():
>>>     d = data[key]
>>>     df = pd.DataFrame({key: d['ydata'], 'step': d['xdata'], 'wall': d['wall']})
>>>     print(df)
on_train_epoch_end(trainer, logs=None)[source]
on_validation_epoch_end(trainer, logs=None)[source]
on_test_epoch_end(trainer, logs=None)[source]