Skip to content

Commit

Permalink
Fix(Early Stopping): move best score to device (#7959)
Browse files Browse the repository at this point in the history
  • Loading branch information
kaushikb11 authored Jun 21, 2021
1 parent 92a78d5 commit 2303f9c
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 3 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
- Pass the `stage` argument of `Callback.{setup,teardown}` as a keyword ([#7973](https://github.com/PyTorchLightning/pytorch-lightning/pull/7973))


- Fixed move best score to device in EarlyStopping Callback ([#7959](https://github.com/PyTorchLightning/pytorch-lightning/pull/7959))


## [1.3.6] - 2021-06-15

### Fixed
Expand Down
6 changes: 3 additions & 3 deletions pytorch_lightning/callbacks/early_stopping.py
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ def _run_early_stopping_check(self, trainer) -> None:
# when in dev debugging
trainer.dev_debugger.track_early_stopping_history(self, current)

should_stop, reason = self._evalute_stopping_criteria(current)
should_stop, reason = self._evalute_stopping_criteria(current, trainer)

# stop every ddp process if any world process decides to stop
should_stop = trainer.training_type_plugin.reduce_boolean_decision(should_stop)
Expand All @@ -206,7 +206,7 @@ def _run_early_stopping_check(self, trainer) -> None:
if reason and self.verbose:
self._log_info(trainer, reason)

def _evalute_stopping_criteria(self, current: torch.Tensor) -> Tuple[bool, str]:
def _evalute_stopping_criteria(self, current: torch.Tensor, trainer: 'pl.Trainer') -> Tuple[bool, str]:
should_stop = False
reason = None
if self.check_finite and not torch.isfinite(current):
Expand All @@ -229,7 +229,7 @@ def _evalute_stopping_criteria(self, current: torch.Tensor) -> Tuple[bool, str]:
f" {self.monitor} = {current} {self.order_dict[self.mode]} {self.divergence_threshold}."
" Signaling Trainer to stop."
)
elif self.monitor_op(current - self.min_delta, self.best_score):
elif self.monitor_op(current - self.min_delta, self.best_score.to(trainer.lightning_module.device)):
should_stop = False
reason = self._improvement_message(current)
self.best_score = current
Expand Down

0 comments on commit 2303f9c

Please sign in to comment.