diff --git a/docs/LightningModule/RequiredTrainerInterface.md b/docs/LightningModule/RequiredTrainerInterface.md index 53818cb8..345c5ac6 100644 --- a/docs/LightningModule/RequiredTrainerInterface.md +++ b/docs/LightningModule/RequiredTrainerInterface.md @@ -281,7 +281,7 @@ def validation_step(self, batch, batch_nb): # or generated text... or whatever sample_imgs = x[:6] grid = torchvision.utils.make_grid(sample_imgs) - self.experiment.add_image('example_images', grid, 0) + self.logger.experiment.add_image('example_images', grid, 0) # calculate acc labels_hat = torch.argmax(out, dim=1) diff --git a/docs/LightningModule/properties.md b/docs/LightningModule/properties.md index 1d513a37..189eee6d 100644 --- a/docs/LightningModule/properties.md +++ b/docs/LightningModule/properties.md @@ -11,18 +11,20 @@ Current dtype --- #### logger A reference to the logger you passed into trainer. +Passing a logger is optional. If you don't pass one in, Lightning will create one for you automatically. +This logger saves logs to '''/os.getcwd()/lightning_logs''' ```python Trainer(logger=your_logger) ``` Call it from anywhere in your LightningModule to add metrics, images, etc... whatever your logger supports. -Here is an example using the Test-tube logger (which is a wrapper on [PyTorch SummaryWriter](https://pytorch.org/docs/stable/tensorboard.html) with versioned folder structure). +Here is an example using the TestTubeLogger (which is a wrapper on [PyTorch SummaryWriter](https://pytorch.org/docs/stable/tensorboard.html) with versioned folder structure). ```{.python} -# if logger is a tensorboard logger or test-tube experiment -self.logger.add_embedding(...) -self.logger.log({'val_loss': 0.9}) -self.logger.add_scalars(...) +# if logger is a tensorboard logger or TestTubeLogger +self.logger.experiment.add_embedding(...) +self.logger.experiment.log({'val_loss': 0.9}) +self.logger.experiment.add_scalars(...) ``` --- diff --git a/docs/Trainer/Logging.md b/docs/Trainer/Logging.md index b6d5e47c..8c3cdc9e 100644 --- a/docs/Trainer/Logging.md +++ b/docs/Trainer/Logging.md @@ -81,7 +81,15 @@ If you write a logger than may be useful to others, please send a pull request to add it to Lighting! --- -### Using loggers +#### Using loggers +You can call the logger anywhere from your LightningModule by doing: +```python +self.logger + +# add an image if using TestTubeLogger +self.logger.experiment.add_image(...) +``` + #### Display metrics in progress bar ``` {.python} diff --git a/docs/Trainer/hooks.md b/docs/Trainer/hooks.md index e1823016..d05eb630 100644 --- a/docs/Trainer/hooks.md +++ b/docs/Trainer/hooks.md @@ -137,5 +137,5 @@ def on_after_backward(self): for k, v in params.items(): grads = v name = k - self.experiment.add_histogram(tag=name, values=grads, global_step=self.trainer.global_step) + self.logger.experiment.add_histogram(tag=name, values=grads, global_step=self.trainer.global_step) ``` diff --git a/examples/templates/gan.py b/examples/templates/gan.py index d15bdb5b..bb150162 100644 --- a/examples/templates/gan.py +++ b/examples/templates/gan.py @@ -109,7 +109,7 @@ class GAN(pl.LightningModule): # log sampled images sample_imgs = self.generated_imgs[:6] grid = torchvision.utils.make_grid(sample_imgs) - self.experiment.add_image('generated_images', grid, 0) + self.logger.experiment.add_image('generated_images', grid, 0) # ground truth result (ie: all fake) valid = torch.ones(imgs.size(0), 1) diff --git a/pytorch_lightning/root_module/root_module.py b/pytorch_lightning/root_module/root_module.py index 844a9e5d..47cad131 100644 --- a/pytorch_lightning/root_module/root_module.py +++ b/pytorch_lightning/root_module/root_module.py @@ -19,13 +19,14 @@ class LightningModule(GradInformation, ModelIO, ModelHooks): self.global_step = 0 self.loaded_optimizer_states_dict = {} self.trainer = None - self.experiment = None + self.logger = None self.example_input_array = None # track if gpu was requested for checkpointing self.on_gpu = False self.use_dp = False self.use_ddp = False + self.use_ddp2 = False self.use_amp = False def forward(self, *args, **kwargs): diff --git a/pytorch_lightning/trainer/trainer_io.py b/pytorch_lightning/trainer/trainer_io.py index d64b08f9..e11560ff 100644 --- a/pytorch_lightning/trainer/trainer_io.py +++ b/pytorch_lightning/trainer/trainer_io.py @@ -88,7 +88,7 @@ class TrainerIO(object): if self.proc_rank == 0: # save weights print('handling SIGUSR1') - self.hpc_save(self.weights_save_path, self.experiment) + self.hpc_save(self.weights_save_path, self.logger) # find job id job_id = os.environ['SLURM_JOB_ID'] @@ -105,7 +105,7 @@ class TrainerIO(object): print('requeue failed...') # close experiment to avoid issues - self.experiment.close() + self.logger.close() def term_handler(self, signum, frame): # save