Adding a `warmup` period to EarlyStopping and ModelCheckpoint
🚀 Feature
Add an optional warmup period for EarlyStopping and ModelCheckpoint callbacks.
Motivation
Sometimes the metric you want to monitor can take a number of epochs to stabilize and become meaningful.
For example: with GANs, you might want to monitor and minimize G's loss, but usually it starts out unreasonably low because it's based on the output of D, which hasn't learned anything about discriminating yet.
Pitch
I'd like to have this result in the callbacks having no effect for the first 10 epochs:
early_stop = EarlyStopping(..., warmup=10)
model_checkpoint = ModelCheckpoint(..., warmup=10)

Alternatives
I added this option through inheritance:
from pytorch_lightning.callbacks import EarlyStopping

class EarlyStoppingWithWarmup(EarlyStopping):
    """
    EarlyStopping, except don't watch the first `warmup` epochs.
    """
    def __init__(self, warmup=10, **kwargs):
        super().__init__(**kwargs)
        self.warmup = warmup

    def on_validation_end(self, trainer, pl_module):
        pass

    def on_epoch_end(self, trainer, pl_module):
        if trainer.current_epoch < self.warmup:
            return
        else:
            super()._run_early_stopping_check(trainer, pl_module)

Additional context
Edit: couldn't get this working at first, but got it figured out after upgrading my pl version. I would be happy to PR something like this if anyone can provide guidance on where to add it.