Training Loop: Batches, Epochs, And Optimizers