An optimizer that performs multiple passes over training data, updating the model parameters multiple times per epoch.
Creates training batches out of the given cases.
Returns true if the optimizer should perform another pass over the training data.
Updates the parameters of the model based on the outputs computed during the forward pass.