Training, Validation, and Preventing Overfitting
Monitor val_loss, apply Dropout, and use callbacks for early stopping.
Training, Validation, Test Split
Deep learning requires three data partitions: training (model learns parameters), validation (monitor generalisation during training, tune hyperparameters), and test (final unbiased evaluation). The validation_split argument in fit() creates the validation set automatically.
# validation_split = 0.2 reserves last 20% as validation
history <- model |> fit(
x_train, y_train,
epochs = 50,
batch_size = 32,
validation_split = 0.2,
verbose = 0
)
# history contains train and val metrics per epoch
names(history$metrics)The Training History Object
The object returned by fit() contains a $metrics list with one entry per logged metric per epoch. Call plot(history) to visualise training and validation curves side by side. Diverging curves (train improves, val plateaus) signal overfitting.
# Training loss and accuracy over epochs
head(history$metrics$loss)
head(history$metrics$val_loss)
# Plot training curves
plot(history)
# Or create a custom ggplot
library(ggplot2)
df <- data.frame(
epoch = seq_along(history$metrics$loss),
train = history$metrics$loss,
val = history$metrics$val_loss
)
ggplot(df, aes(epoch)) +
geom_line(aes(y = train, colour = 'Train')) +
geom_line(aes(y = val, colour = 'Validation')) +
labs(y = 'Loss', title = 'Training Curves')All lessons in this course
- Setting Up Keras and TensorFlow in R
- Building Sequential Models
- Convolutional Neural Networks Basics
- Training, Validation, and Preventing Overfitting