TrainingPhase
	
struct defined in module 
	FluxTraining.Phases
			TrainingPhase() <: AbstractTrainingPhase
			A regular training phase for supervised learning. It iterates over batches in 
			learner.data.training and updates the model parameters using 
			learner.optim after calculating the gradients.
Throws the following events in this order:
			
			
			EpochBegin
		
 when an epoch starts,
			
			
			StepBegin
		
 when a step starts,
			
			
			LossBegin
		
 after the forward pass but before loss calculation,
			
			
			BackwardBegin
		
 after loss calculation but before backward pass,
			
			
			BackwardEnd
		
 after the bacward pass but before the optimization step,
			
			
			StepEnd
		
 when a step ends; and
			
			
			EpochEnd
		
 when an epoch ends
			It writes the following step state to 
			learner.state, grouped by the event from which on it is available.
			
			StepBegin:
			
			xs and 
			ys: encoded input and target (batch)
			
			LossBegin:
			
			ŷs: model output
			
			BackwardBegin:
			
			loss: loss
			
			BackwardEnd:
			
			grads: calculated gradients
There is
			1
			method for FluxTraining.Phases.TrainingPhase:
		
The following pages link back here:
Performant data pipelines
training/lrfind.jl , training/onecycle.jl , FluxTraining.jl , callbacks/conditional.jl , callbacks/custom.jl , callbacks/metrics.jl , callbacks/phases.jl , callbacks/trace.jl , training.jl