Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,9 @@ Examples

Custom events related to backward and optimizer step calls:
```python
from ignite.engine import EventEnum


class BackpropEvents(EventEnum):
BACKWARD_STARTED = 'backward_started'
BACKWARD_COMPLETED = 'backward_completed'
Expand Down
2 changes: 2 additions & 0 deletions docs/source/concepts.rst
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,8 @@ and be registered with :meth:`~ignite.engine.engine.Engine.register_events` in a

.. code-block:: python

from ignite.engine import EventEnum

class CustomEvents(EventEnum):
"""
Custom events defined by user
Expand Down
2 changes: 2 additions & 0 deletions docs/source/engine.rst
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,8 @@ ignite.engine.events
.. autoclass:: Events
:members:

.. autoclass:: EventEnum

.. autoclass:: State

.. autoclass:: RemovableEventHandle
Expand Down
2 changes: 2 additions & 0 deletions docs/source/faq.rst
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ flexibility to the user to allow for this:

.. code-block:: python

from ignite.engine import EventEnum

class BackpropEvents(EventEnum):
"""
Events based on back propagation
Expand Down
30 changes: 30 additions & 0 deletions ignite/engine/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,36 @@ def __init__(self, *args, **kwargs):


class EventEnum(CallableEventWithFilter, Enum):
"""Base class for all :class:`~ignite.engine.events.Events`. User defined custom events should also inherit
this class. For example, Custom events based on the loss calculation and backward pass can be created as follows:

.. code-block:: python

from ignite.engine import EventEnum

class BackpropEvents(EventEnum):
BACKWARD_STARTED = 'backward_started'
BACKWARD_COMPLETED = 'backward_completed'
OPTIM_STEP_COMPLETED = 'optim_step_completed'

def update(engine, batch):
# ...
loss = criterion(y_pred, y)
engine.fire_event(BackpropEvents.BACKWARD_STARTED)
loss.backward()
engine.fire_event(BackpropEvents.BACKWARD_COMPLETED)
optimizer.step()
engine.fire_event(BackpropEvents.OPTIM_STEP_COMPLETED)
# ...

trainer = Engine(update)
trainer.register_events(*BackpropEvents)

@trainer.on(BackpropEvents.BACKWARD_STARTED)
def function_before_backprop(engine):
# ...
"""

pass


Expand Down