DeterministicEngine#
- class ignite.engine.deterministic.DeterministicEngine(process_function)[source]#
Deterministic engine derived from
Engine
.“Deterministic” run is done by adding additional handlers to synchronize the dataflow and overriding some methods of
Engine
:for e in range(num_epochs): set_seed(seed_offset + e) if resume: setup_saved_rng_states() do_single_epoch_iterations(dataloader)
If input data provider is DataLoader, its batch sampler is replaced by
ReproducibleBatchSampler
.for e in range(num_epochs): set_seed(seed_offset + e) setup_sampling(dataloader) if resume: setup_saved_rng_states() do_single_epoch_iterations(dataloader)
Internally, torch.backends.cudnn.deterministic = True and torch.backends.cudnn.benchmark = False are also applied.
For more details about dataflow synchronization, please see Dataflow synchronization.
Note
This class can produce exactly the same dataflow when resuming the run from an epoch (or more precisely from dataflow restart) and using torch DataLoader with num_workers > 1 as data provider.
- Parameters
process_function (Callable[[Engine, Any], Any]) – A function receiving a handle to the engine and the current batch in each iteration, and returns data to be stored in the engine’s state.
Methods
Returns a dictionary containing engine's state: "seed", "epoch_length", "max_epochs" and "iteration" and other state values defined by engine.state_dict_user_keys
- state_dict()[source]#
Returns a dictionary containing engine’s state: “seed”, “epoch_length”, “max_epochs” and “iteration” and other state values defined by engine.state_dict_user_keys
engine = Engine(...) engine.state_dict_user_keys.append("alpha") engine.state_dict_user_keys.append("beta") ... @engine.on(Events.STARTED) def init_user_value(_): engine.state.alpha = 0.1 engine.state.beta = 1.0 @engine.on(Events.COMPLETED) def save_engine(_): state_dict = engine.state_dict() assert "alpha" in state_dict and "beta" in state_dict torch.save(state_dict, "/tmp/engine.pt")
- Returns
a dictionary containing engine’s state
- Return type
OrderedDict