Practice: Overfitting Remedies & Tuning
Practice identifying deep learning concepts in a training simulation.
12 min•By Priygop Team•Updated 2026
Practice: Diagnose Training Problems
Practice: Diagnose Training Problems
# Practice: diagnose training problems from loss curves
scenarios = [
{
"name": "Scenario A",
"train_losses": [2.3, 1.8, 1.2, 0.8, 0.5, 0.3, 0.2, 0.15],
"val_losses": [2.2, 1.7, 1.1, 0.9, 0.7, 0.6, 0.65, 0.7],
},
{
"name": "Scenario B",
"train_losses": [2.3, 2.1, 2.0, 1.9, 1.8, 1.75, 1.7, 1.65],
"val_losses": [2.3, 2.2, 2.1, 2.0, 1.9, 1.85, 1.8, 1.75],
},
{
"name": "Scenario C",
"train_losses": [2.3, 1.5, 0.8, 0.4, 0.2, 0.1, 0.05, 0.02],
"val_losses": [2.2, 1.6, 1.0, 0.9, 0.95, 1.1, 1.3, 1.6],
},
]
def diagnose(train_losses, val_losses):
final_train = train_losses[-1]
final_val = val_losses[-1]
gap = final_val - final_train
if final_train > 1.0 and final_val > 1.0:
return "UNDERFITTING: both losses are high. Increase model complexity or train longer."
elif gap > 0.5:
return "OVERFITTING: training loss low but validation loss high. Add dropout or more data."
elif gap < 0.2 and final_val < 1.0:
return "GOOD FIT: training and validation losses are close and both low."
else:
return "WATCH: some gap developing. Monitor closely."
print("Deep Learning Training Diagnosis:")
print()
for s in scenarios:
print(f"{s['name']}:")
print(f" Final train loss: {s['train_losses'][-1]:.2f}")
print(f" Final val loss: {s['val_losses'][-1]:.2f}")
print(f" Diagnosis: {diagnose(s['train_losses'], s['val_losses'])}")
print()Diagram
Loading diagram…
Educational visual guide for AiVsMlVsDl.