ignite.engine.create_supervised_evaluator(model, metrics=None, device=None, non_blocking=False, prepare_batch=<function _prepare_batch>, output_transform=<function <lambda>>, amp_mode=None)[source]#

Factory function for creating an evaluator for supervised models.

  • model (Module) – the model to train.

  • metrics (Optional[Dict[str, Metric]]) – a map of metric names to Metrics.

  • device (Optional[Union[str, device]]) – device type specification (default: None). Applies to batches after starting the engine. Model will not be moved.

  • non_blocking (bool) – if True and this copy is between CPU and GPU, the copy may occur asynchronously with respect to the host. For other cases, this argument has no effect.

  • prepare_batch (Callable) – function that receives batch, device, non_blocking and outputs tuple of tensors (batch_x, batch_y).

  • output_transform (Callable[[Any, Any, Any], Any]) – function that receives ‘x’, ‘y’, ‘y_pred’ and returns value to be assigned to engine’s state.output after each iteration. Default is returning (y_pred, y,) which fits output expected by metrics. If you change it you should use output_transform in metrics.

  • amp_mode (Optional[str]) – can be amp, model will be casted to float16 using torch.cuda.amp


an evaluator engine with supervised inference function.

Return type



engine.state.output for this engine is defined by output_transform parameter and is a tuple of (batch_pred, batch_y) by default.


The internal use of device has changed. device will now only be used to move the input data to the correct device. The model should be moved by the user before creating an optimizer.

For more information see:

Changed in version 0.4.5: - Added amp_mode argument for automatic mixed precision.