Skip to content

Defining trainers and evaluators #1608

@etetteh

Description

@etetteh

If I have a training step that takes a different form from the inferencing step, and I have defined these functions separately,

def train_step(e, b):
    ...
    ...
    return batch_loss
trainer = Engine(train_step)

and

def infer_step(e, b):
    ...
    return batch_loss
evaluator = Engine(infer_step)

do I still need to define create_supervised_trainer and create_supervised_evaluator?
If yes, do I need to define

def run_traiin(engine):
    train_evaluator.run(train_loader)
def run_validation(engine):
    infer_evaluator.run(valid_loader) 

Do I need to do
trainer.add_event_handler(Events.EPOCH_STARTED(every=1), run_train)
evaluator.add_event_handler(Events.EPOCH_STARTED(every=1), run_validation)

I am a bit confused here.

Or I can do
@trainer.on(Events...)
add the evaluation execution here

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions