mirror of
https://github.com/wassname/pytorch-lightning.git
synced 2026-08-22 12:20:50 +08:00
* consolidate callbacks and hooks * ensure callbacks recieve proper arg types * remove model from init callback events * clean up early stopping event * update changelog * remove on_fit_start and on_fit_end * fix args for on_init_start and on_init_end * handle case where early stopping is not used * show all callback methods * wrap checkpoint callback logic into proper class * fix check for main process in checkpoint callback * move callbacks test to separate file * refactor arg checks * get model and call hook on same line * define trainer_options dict in one call * add more asserts to callback test
48 lines
1.1 KiB
ReStructuredText
48 lines
1.1 KiB
ReStructuredText
.. role:: hidden
|
|
:class: hidden-section
|
|
|
|
Callbacks
|
|
=========
|
|
|
|
Lightning has a callback system to execute arbitrary code. Callbacks should capture NON-ESSENTIAL
|
|
logic that is NOT required for your LightningModule to run.
|
|
|
|
An overall Lightning system should have:
|
|
|
|
1. Trainer for all engineering
|
|
2. LightningModule for all research code.
|
|
3. Callbacks for non-essential code.
|
|
|
|
Example
|
|
|
|
.. code-block:: python
|
|
|
|
import pytorch_lightning as pl
|
|
|
|
class MyPrintingCallback(pl.Callback):
|
|
|
|
def on_init_start(self, trainer):
|
|
print('Starting to init trainer!')
|
|
|
|
def on_init_end(self, trainer):
|
|
print('trainer is init now')
|
|
|
|
def on_train_end(self, trainer, pl_module):
|
|
print('do something when training ends')
|
|
|
|
# pass to trainer
|
|
trainer = pl.Trainer(callbacks=[MyPrintingCallback()])
|
|
|
|
We successfully extended functionality without polluting our super clean LightningModule research code
|
|
|
|
Callback Class
|
|
--------------
|
|
|
|
.. automodule:: pytorch_lightning.callbacks
|
|
:noindex:
|
|
:exclude-members:
|
|
_del_model,
|
|
_save_model,
|
|
_abc_impl,
|
|
check_monitor_top_k,
|