Two-Stage Fine-Tuning Experiment
I wrote an app to
classify an object using transfer learning, and the model was trained on CIFAR-10 dataset, all by myself.
Two-Stage Fine-Tuning: Controlled Capacity Release in Practice
Why Two-Stage Fine-Tuning Was the Logical Next Step
At this point in the project, multiple experiments had already converged on the same
conclusion: the model was no longer limited by optimization, but by
how capacity
was being exposed during training.
Earlier signals were clear and consistent:
- Training accuracy saturated extremely early
- Validation accuracy plateaued around the mid-80% range
- Validation loss remained relatively high despite stable learning
This combination strongly suggests that the model’s higher layers were adapting too
quickly, while mid-level representations were not yet aligned with the new task.
Two-stage fine-tuning directly addresses this imbalance.
Implementation Details
Stage Definitions
- Stage 1: Train
fc only
- Stage 2: Unfreeze
layer4 + fc
This strategy deliberately constrains learning early on, forcing the classifier head
to align with frozen, pretrained features before allowing deeper adaptation.
Training Configuration
The following configuration was used consistently across runs:
EPOCHS = 100
LR_STAGE1 = 1e-3
LR_STAGE2 = 1e-4
USE_COSINE_LR = True
COSINE_T_MAX = EPOCHS
COSINE_ETA_MIN = 1e-6
label_smoothing = 0.15
Each hyperparameter choice serves a specific purpose:
- Higher LR in Stage 1 allows fast alignment of the classifier head
- Lower LR in Stage 2 protects pretrained features from destructive updates
- Cosine annealing ensures smooth convergence across both stages
- Label smoothing prevents overconfident logits in later epochs
Observed Results
With two-stage fine-tuning enabled, the model achieved:
Best Validation Accuracy: 86.20%
For comparison:
- Single-stage fine-tuning (same config): 84.8%
- Two-stage fine-tuning: 86.2%
This is a meaningful improvement, not a rounding artifact.
Importantly, both configurations were run multiple times with different random seeds
and dataset shuffles, and the performance gap remained consistent. This strongly
indicates that the gain is structural, not accidental.
Why Two-Stage Fine-Tuning Works Here
Stage 1: Feature Alignment Without Representation Drift
In Stage 1, only the final classification layer is trainable. This has several critical effects:
- The pretrained backbone acts as a fixed feature extractor
- The classifier learns the task decision boundaries in this fixed space
- No catastrophic forgetting occurs in early epochs
This stage effectively answers the question:
“Given these pretrained features, what is the best linear separation for my task?”
Stage 2: Controlled Adaptation of High-Level Semantics
Once the classifier head stabilizes, unfreezing
layer4 allows:
- Task-specific refinement of high-level features
- Gradual reshaping of semantic representations
- Better alignment between backbone features and class boundaries
Crucially, this happens at a lower learning rate, which preserves the useful structure
learned during pretraining while still enabling adaptation.
Interaction with Regularization and Label Smoothing
Two-stage fine-tuning also changes how regularization behaves.
- Label smoothing becomes more effective once logits stabilize
- Decision boundaries evolve more smoothly instead of oscillating
- Validation loss decreases without harming training convergence
In earlier experiments, strong regularization failed because the model had not yet
settled into a stable representation regime. Two-stage fine-tuning creates that regime.
What This Experiment Proves
This result reinforces an important principle in transfer learning:
When data is limited, controlling the timing of capacity release matters more than
adding capacity.
The improvement from 84.8% to 86.2% did not come from:
- More data
- A larger model
- More aggressive augmentation
It came from respecting the learning dynamics of pretrained networks.
Key Takeaway
Two-stage fine-tuning is not a trick — it is a disciplined way to let the model learn
in the right order.
- First: learn the task in a stable feature space
- Then: carefully adapt high-level representations
The consistency of the gains across runs confirms that this approach is both
principled and reproducible, making it the correct foundation for further optimization.
Raw Logs
Before two-stage fine-tuning:
========== CONFIG ==========
NUM_CLASSES = 10
TRAINING_SAMPLE_PER_CLASS = 100
VALIDATION_SAMPLE_PER_CLASS = 100
BATCH_SIZE = 256
EPOCHS = 200
LR = 0.001
TRAINABLE_LAYERS = 2
EARLY_STOP_PATIENCE = 100
USE_COSINE_LR = True
COSINE_T_MAX = 200
COSINE_ETA_MIN = 1e-06
============================
==============================
Training model: resnet18
==============================
Epoch [01/200] Train Loss: 1.7426 | Val Loss: 2.7907 | Train Acc: 48.10% | Val Acc: 49.60%
Epoch [02/200] Train Loss: 1.0792 | Val Loss: 2.2543 | Train Acc: 87.60% | Val Acc: 62.20%
Epoch [03/200] Train Loss: 0.9370 | Val Loss: 1.8037 | Train Acc: 95.00% | Val Acc: 62.20%
Epoch [04/200] Train Loss: 0.8621 | Val Loss: 1.4802 | Train Acc: 97.40% | Val Acc: 70.10%
Epoch [05/200] Train Loss: 0.8252 | Val Loss: 1.5355 | Train Acc: 98.80% | Val Acc: 66.70%
Epoch [06/200] Train Loss: 0.7963 | Val Loss: 1.3347 | Train Acc: 99.50% | Val Acc: 74.20%
Epoch [07/200] Train Loss: 0.7774 | Val Loss: 1.2389 | Train Acc: 99.80% | Val Acc: 78.00%
Epoch [08/200] Train Loss: 0.7587 | Val Loss: 1.1917 | Train Acc: 100.00% | Val Acc: 79.30%
Epoch [09/200] Train Loss: 0.7493 | Val Loss: 1.1764 | Train Acc: 99.90% | Val Acc: 80.20%
Epoch [10/200] Train Loss: 0.7396 | Val Loss: 1.1606 | Train Acc: 100.00% | Val Acc: 79.30%
Epoch [11/200] Train Loss: 0.7349 | Val Loss: 1.1482 | Train Acc: 100.00% | Val Acc: 80.10%
Epoch [12/200] Train Loss: 0.7317 | Val Loss: 1.1333 | Train Acc: 100.00% | Val Acc: 81.40%
Epoch [13/200] Train Loss: 0.7232 | Val Loss: 1.1533 | Train Acc: 100.00% | Val Acc: 80.40%
Epoch [14/200] Train Loss: 0.7225 | Val Loss: 1.1270 | Train Acc: 100.00% | Val Acc: 81.60%
Epoch [15/200] Train Loss: 0.7186 | Val Loss: 1.1268 | Train Acc: 100.00% | Val Acc: 82.20%
Epoch [16/200] Train Loss: 0.7193 | Val Loss: 1.1262 | Train Acc: 100.00% | Val Acc: 81.90%
Epoch [17/200] Train Loss: 0.7186 | Val Loss: 1.1412 | Train Acc: 100.00% | Val Acc: 81.40%
Epoch [18/200] Train Loss: 0.7163 | Val Loss: 1.1249 | Train Acc: 100.00% | Val Acc: 82.30%
Epoch [19/200] Train Loss: 0.7153 | Val Loss: 1.1261 | Train Acc: 100.00% | Val Acc: 81.50%
Epoch [20/200] Train Loss: 0.7111 | Val Loss: 1.1223 | Train Acc: 100.00% | Val Acc: 82.60%
Epoch [21/200] Train Loss: 0.7109 | Val Loss: 1.1108 | Train Acc: 100.00% | Val Acc: 82.50%
Epoch [22/200] Train Loss: 0.7094 | Val Loss: 1.1233 | Train Acc: 100.00% | Val Acc: 82.30%
Epoch [23/200] Train Loss: 0.7106 | Val Loss: 1.1189 | Train Acc: 100.00% | Val Acc: 82.50%
Epoch [24/200] Train Loss: 0.7113 | Val Loss: 1.1105 | Train Acc: 100.00% | Val Acc: 82.50%
Epoch [25/200] Train Loss: 0.7100 | Val Loss: 1.1169 | Train Acc: 100.00% | Val Acc: 82.60%
Epoch [26/200] Train Loss: 0.7090 | Val Loss: 1.1148 | Train Acc: 100.00% | Val Acc: 82.60%
Epoch [27/200] Train Loss: 0.7089 | Val Loss: 1.1177 | Train Acc: 100.00% | Val Acc: 82.60%
Epoch [28/200] Train Loss: 0.7093 | Val Loss: 1.1159 | Train Acc: 100.00% | Val Acc: 82.70%
Epoch [29/200] Train Loss: 0.7076 | Val Loss: 1.1130 | Train Acc: 100.00% | Val Acc: 83.00%
Epoch [30/200] Train Loss: 0.7071 | Val Loss: 1.1213 | Train Acc: 100.00% | Val Acc: 82.50%
Epoch [31/200] Train Loss: 0.7076 | Val Loss: 1.1137 | Train Acc: 100.00% | Val Acc: 82.70%
Epoch [32/200] Train Loss: 0.7070 | Val Loss: 1.1257 | Train Acc: 100.00% | Val Acc: 81.50%
Epoch [33/200] Train Loss: 0.7086 | Val Loss: 1.1165 | Train Acc: 100.00% | Val Acc: 83.40%
Epoch [34/200] Train Loss: 0.7071 | Val Loss: 1.1084 | Train Acc: 100.00% | Val Acc: 83.20%
Epoch [35/200] Train Loss: 0.7064 | Val Loss: 1.1240 | Train Acc: 100.00% | Val Acc: 82.10%
Epoch [36/200] Train Loss: 0.7050 | Val Loss: 1.1162 | Train Acc: 100.00% | Val Acc: 82.30%
Epoch [37/200] Train Loss: 0.7064 | Val Loss: 1.1135 | Train Acc: 100.00% | Val Acc: 82.30%
Epoch [38/200] Train Loss: 0.7047 | Val Loss: 1.1120 | Train Acc: 100.00% | Val Acc: 83.20%
Epoch [39/200] Train Loss: 0.7064 | Val Loss: 1.1200 | Train Acc: 100.00% | Val Acc: 82.80%
Epoch [40/200] Train Loss: 0.7059 | Val Loss: 1.1192 | Train Acc: 100.00% | Val Acc: 82.10%
Epoch [41/200] Train Loss: 0.7046 | Val Loss: 1.1120 | Train Acc: 100.00% | Val Acc: 82.50%
Epoch [42/200] Train Loss: 0.7052 | Val Loss: 1.1101 | Train Acc: 100.00% | Val Acc: 83.30%
Epoch [43/200] Train Loss: 0.7054 | Val Loss: 1.1068 | Train Acc: 100.00% | Val Acc: 82.50%
Epoch [44/200] Train Loss: 0.7044 | Val Loss: 1.1135 | Train Acc: 100.00% | Val Acc: 83.80%
Epoch [45/200] Train Loss: 0.7042 | Val Loss: 1.1085 | Train Acc: 100.00% | Val Acc: 83.30%
Epoch [46/200] Train Loss: 0.7033 | Val Loss: 1.1061 | Train Acc: 100.00% | Val Acc: 83.70%
Epoch [47/200] Train Loss: 0.7019 | Val Loss: 1.1084 | Train Acc: 100.00% | Val Acc: 83.20%
Epoch [48/200] Train Loss: 0.7043 | Val Loss: 1.1051 | Train Acc: 100.00% | Val Acc: 82.70%
Epoch [49/200] Train Loss: 0.7033 | Val Loss: 1.1035 | Train Acc: 100.00% | Val Acc: 83.00%
Epoch [50/200] Train Loss: 0.7032 | Val Loss: 1.1036 | Train Acc: 100.00% | Val Acc: 83.20%
Epoch [51/200] Train Loss: 0.7039 | Val Loss: 1.0930 | Train Acc: 100.00% | Val Acc: 83.80%
Epoch [52/200] Train Loss: 0.7023 | Val Loss: 1.1023 | Train Acc: 100.00% | Val Acc: 83.30%
Epoch [53/200] Train Loss: 0.7039 | Val Loss: 1.1003 | Train Acc: 100.00% | Val Acc: 83.00%
Epoch [54/200] Train Loss: 0.7024 | Val Loss: 1.1020 | Train Acc: 100.00% | Val Acc: 84.00%
Epoch [55/200] Train Loss: 0.7017 | Val Loss: 1.1107 | Train Acc: 100.00% | Val Acc: 83.10%
Epoch [56/200] Train Loss: 0.7021 | Val Loss: 1.1004 | Train Acc: 100.00% | Val Acc: 83.00%
Epoch [57/200] Train Loss: 0.7024 | Val Loss: 1.0985 | Train Acc: 100.00% | Val Acc: 83.70%
Epoch [58/200] Train Loss: 0.7029 | Val Loss: 1.0986 | Train Acc: 100.00% | Val Acc: 83.10%
Epoch [59/200] Train Loss: 0.7023 | Val Loss: 1.0947 | Train Acc: 100.00% | Val Acc: 83.80%
Epoch [60/200] Train Loss: 0.7011 | Val Loss: 1.0982 | Train Acc: 100.00% | Val Acc: 83.70%
Epoch [61/200] Train Loss: 0.7026 | Val Loss: 1.0949 | Train Acc: 100.00% | Val Acc: 83.40%
Epoch [62/200] Train Loss: 0.7010 | Val Loss: 1.0900 | Train Acc: 100.00% | Val Acc: 83.80%
Epoch [63/200] Train Loss: 0.6997 | Val Loss: 1.1010 | Train Acc: 100.00% | Val Acc: 83.90%
Epoch [64/200] Train Loss: 0.7004 | Val Loss: 1.0959 | Train Acc: 100.00% | Val Acc: 84.20%
Epoch [65/200] Train Loss: 0.7005 | Val Loss: 1.1003 | Train Acc: 100.00% | Val Acc: 84.00%
Epoch [66/200] Train Loss: 0.6998 | Val Loss: 1.0951 | Train Acc: 100.00% | Val Acc: 83.90%
Epoch [67/200] Train Loss: 0.6996 | Val Loss: 1.0921 | Train Acc: 100.00% | Val Acc: 84.70%
Epoch [68/200] Train Loss: 0.7004 | Val Loss: 1.0879 | Train Acc: 100.00% | Val Acc: 84.20%
Epoch [69/200] Train Loss: 0.6996 | Val Loss: 1.0906 | Train Acc: 100.00% | Val Acc: 84.10%
Epoch [70/200] Train Loss: 0.6991 | Val Loss: 1.1024 | Train Acc: 100.00% | Val Acc: 83.40%
Epoch [71/200] Train Loss: 0.6993 | Val Loss: 1.1028 | Train Acc: 100.00% | Val Acc: 83.40%
Epoch [72/200] Train Loss: 0.6989 | Val Loss: 1.0970 | Train Acc: 100.00% | Val Acc: 83.70%
Epoch [73/200] Train Loss: 0.6997 | Val Loss: 1.1001 | Train Acc: 100.00% | Val Acc: 83.40%
Epoch [74/200] Train Loss: 0.6997 | Val Loss: 1.0956 | Train Acc: 100.00% | Val Acc: 83.60%
Epoch [75/200] Train Loss: 0.6999 | Val Loss: 1.0965 | Train Acc: 100.00% | Val Acc: 83.90%
Epoch [76/200] Train Loss: 0.7007 | Val Loss: 1.0960 | Train Acc: 100.00% | Val Acc: 83.80%
Epoch [77/200] Train Loss: 0.6998 | Val Loss: 1.0927 | Train Acc: 100.00% | Val Acc: 84.30%
Epoch [78/200] Train Loss: 0.6992 | Val Loss: 1.1003 | Train Acc: 100.00% | Val Acc: 84.20%
Epoch [79/200] Train Loss: 0.6997 | Val Loss: 1.0940 | Train Acc: 100.00% | Val Acc: 84.00%
Epoch [80/200] Train Loss: 0.6989 | Val Loss: 1.0980 | Train Acc: 100.00% | Val Acc: 83.90%
Epoch [81/200] Train Loss: 0.6990 | Val Loss: 1.0994 | Train Acc: 100.00% | Val Acc: 83.00%
Epoch [82/200] Train Loss: 0.6990 | Val Loss: 1.0935 | Train Acc: 100.00% | Val Acc: 84.00%
Epoch [83/200] Train Loss: 0.6991 | Val Loss: 1.0928 | Train Acc: 100.00% | Val Acc: 84.20%
Epoch [84/200] Train Loss: 0.6984 | Val Loss: 1.0931 | Train Acc: 100.00% | Val Acc: 84.60%
Epoch [85/200] Train Loss: 0.6978 | Val Loss: 1.0946 | Train Acc: 100.00% | Val Acc: 83.90%
Epoch [86/200] Train Loss: 0.6987 | Val Loss: 1.0891 | Train Acc: 100.00% | Val Acc: 83.90%
Epoch [87/200] Train Loss: 0.6983 | Val Loss: 1.0932 | Train Acc: 100.00% | Val Acc: 84.80%
Epoch [88/200] Train Loss: 0.6983 | Val Loss: 1.0953 | Train Acc: 100.00% | Val Acc: 84.50%
...
Epoch [187/200] Train Loss: 0.6952 | Val Loss: 1.0861 | Train Acc: 100.00% | Val Acc: 84.20%
Early stopping triggered at epoch 187
Best results for resnet18:
Train Loss: 0.6983 | Val Loss: 1.0932 | Train Acc: 100.00% | Val Acc: 84.80%
Training Time: 737.00 seconds
After two-stage fine-tuning:
========== CONFIG ==========
NUM_CLASSES = 10
TRAINING_SAMPLE_PER_CLASS = 100
VALIDATION_SAMPLE_PER_CLASS = 100
BATCH_SIZE = 256
EPOCHS = 100
LR_STAGE1 = 1e-3
LR_STAGE2 = 1e-4
TRAINABLE_LAYERS_STAGE1 = 1
TRAINABLE_LAYERS_STAGE2 = 2
EARLY_STOP_PATIENCE = 100
USE_COSINE_LR = True
COSINE_T_MAX = 100
COSINE_ETA_MIN = 1e-06
============================
===== Stage-1: Train fc only =====
Stage1 Epoch [01/100] Train Loss: 2.4508 | Val Loss: 2.3878 | Train Acc: 8.80% | Val Acc: 15.10%
Stage1 Epoch [02/100] Train Loss: 2.2751 | Val Loss: 2.1953 | Train Acc: 18.10% | Val Acc: 22.70%
Stage1 Epoch [03/100] Train Loss: 2.0997 | Val Loss: 2.0263 | Train Acc: 30.60% | Val Acc: 31.90%
Stage1 Epoch [04/100] Train Loss: 1.9801 | Val Loss: 1.8800 | Train Acc: 37.50% | Val Acc: 40.60%
Stage1 Epoch [05/100] Train Loss: 1.8626 | Val Loss: 1.7790 | Train Acc: 46.20% | Val Acc: 49.10%
Stage1 Epoch [06/100] Train Loss: 1.7675 | Val Loss: 1.6993 | Train Acc: 53.50% | Val Acc: 56.20%
Stage1 Epoch [07/100] Train Loss: 1.6714 | Val Loss: 1.6340 | Train Acc: 61.90% | Val Acc: 58.90%
Stage1 Epoch [08/100] Train Loss: 1.5955 | Val Loss: 1.5817 | Train Acc: 64.90% | Val Acc: 62.80%
Stage1 Epoch [09/100] Train Loss: 1.5356 | Val Loss: 1.5417 | Train Acc: 66.90% | Val Acc: 64.10%
Stage1 Epoch [10/100] Train Loss: 1.4891 | Val Loss: 1.5128 | Train Acc: 70.70% | Val Acc: 65.10%
Stage1 Epoch [11/100] Train Loss: 1.4518 | Val Loss: 1.4882 | Train Acc: 72.60% | Val Acc: 65.90%
Stage1 Epoch [12/100] Train Loss: 1.4148 | Val Loss: 1.4558 | Train Acc: 72.60% | Val Acc: 67.80%
Stage1 Epoch [13/100] Train Loss: 1.3866 | Val Loss: 1.4393 | Train Acc: 72.90% | Val Acc: 69.40%
Stage1 Epoch [14/100] Train Loss: 1.3460 | Val Loss: 1.4256 | Train Acc: 76.40% | Val Acc: 69.60%
Stage1 Epoch [15/100] Train Loss: 1.3213 | Val Loss: 1.4103 | Train Acc: 76.90% | Val Acc: 69.00%
Stage1 Epoch [16/100] Train Loss: 1.3125 | Val Loss: 1.3959 | Train Acc: 75.40% | Val Acc: 70.10%
Stage1 Epoch [17/100] Train Loss: 1.2905 | Val Loss: 1.3851 | Train Acc: 76.40% | Val Acc: 70.10%
Stage1 Epoch [18/100] Train Loss: 1.2784 | Val Loss: 1.3807 | Train Acc: 78.20% | Val Acc: 70.60%
Stage1 Epoch [19/100] Train Loss: 1.2698 | Val Loss: 1.3745 | Train Acc: 77.10% | Val Acc: 70.40%
Stage1 Epoch [20/100] Train Loss: 1.2544 | Val Loss: 1.3661 | Train Acc: 79.20% | Val Acc: 70.00%
Stage1 Epoch [21/100] Train Loss: 1.2566 | Val Loss: 1.3573 | Train Acc: 78.50% | Val Acc: 70.80%
Stage1 Epoch [22/100] Train Loss: 1.2472 | Val Loss: 1.3563 | Train Acc: 79.00% | Val Acc: 71.30%
Stage1 Epoch [23/100] Train Loss: 1.2398 | Val Loss: 1.3511 | Train Acc: 79.00% | Val Acc: 71.00%
Stage1 Epoch [24/100] Train Loss: 1.2123 | Val Loss: 1.3458 | Train Acc: 81.00% | Val Acc: 71.10%
Stage1 Epoch [25/100] Train Loss: 1.2169 | Val Loss: 1.3359 | Train Acc: 78.80% | Val Acc: 71.90%
Stage1 Epoch [26/100] Train Loss: 1.2062 | Val Loss: 1.3362 | Train Acc: 80.30% | Val Acc: 71.80%
Stage1 Epoch [27/100] Train Loss: 1.1997 | Val Loss: 1.3420 | Train Acc: 80.80% | Val Acc: 70.60%
Stage1 Epoch [28/100] Train Loss: 1.1865 | Val Loss: 1.3348 | Train Acc: 83.00% | Val Acc: 71.60%
Stage1 Epoch [29/100] Train Loss: 1.1775 | Val Loss: 1.3280 | Train Acc: 82.40% | Val Acc: 71.60%
Stage1 Epoch [30/100] Train Loss: 1.1846 | Val Loss: 1.3287 | Train Acc: 80.40% | Val Acc: 72.00%
Stage1 Epoch [31/100] Train Loss: 1.1783 | Val Loss: 1.3267 | Train Acc: 81.20% | Val Acc: 71.60%
Stage1 Epoch [32/100] Train Loss: 1.1767 | Val Loss: 1.3296 | Train Acc: 82.20% | Val Acc: 71.30%
Stage1 Epoch [33/100] Train Loss: 1.1755 | Val Loss: 1.3268 | Train Acc: 82.50% | Val Acc: 70.90%
Stage1 Epoch [34/100] Train Loss: 1.1769 | Val Loss: 1.3229 | Train Acc: 81.20% | Val Acc: 71.70%
Stage1 Epoch [35/100] Train Loss: 1.1740 | Val Loss: 1.3204 | Train Acc: 83.60% | Val Acc: 72.00%
Stage1 Epoch [36/100] Train Loss: 1.1427 | Val Loss: 1.3186 | Train Acc: 83.60% | Val Acc: 71.80%
Stage1 Epoch [37/100] Train Loss: 1.1553 | Val Loss: 1.3218 | Train Acc: 81.80% | Val Acc: 70.90%
Stage1 Epoch [38/100] Train Loss: 1.1466 | Val Loss: 1.3254 | Train Acc: 83.30% | Val Acc: 71.40%
Stage1 Epoch [39/100] Train Loss: 1.1515 | Val Loss: 1.3191 | Train Acc: 83.40% | Val Acc: 71.40%
Stage1 Epoch [40/100] Train Loss: 1.1280 | Val Loss: 1.3183 | Train Acc: 84.80% | Val Acc: 71.50%
Stage1 Epoch [41/100] Train Loss: 1.1382 | Val Loss: 1.3212 | Train Acc: 84.30% | Val Acc: 70.70%
Stage1 Epoch [42/100] Train Loss: 1.1277 | Val Loss: 1.3164 | Train Acc: 84.20% | Val Acc: 71.80%
Stage1 Epoch [43/100] Train Loss: 1.1515 | Val Loss: 1.3144 | Train Acc: 82.90% | Val Acc: 72.00%
Stage1 Epoch [44/100] Train Loss: 1.1391 | Val Loss: 1.3151 | Train Acc: 83.00% | Val Acc: 71.30%
Stage1 Epoch [45/100] Train Loss: 1.1320 | Val Loss: 1.3171 | Train Acc: 83.40% | Val Acc: 70.90%
Stage1 Epoch [46/100] Train Loss: 1.1386 | Val Loss: 1.3156 | Train Acc: 82.40% | Val Acc: 71.10%
Stage1 Epoch [47/100] Train Loss: 1.1206 | Val Loss: 1.3122 | Train Acc: 85.50% | Val Acc: 72.30%
Stage1 Epoch [48/100] Train Loss: 1.1282 | Val Loss: 1.3127 | Train Acc: 84.60% | Val Acc: 71.60%
Stage1 Epoch [49/100] Train Loss: 1.1247 | Val Loss: 1.3120 | Train Acc: 84.00% | Val Acc: 71.00%
Stage1 Epoch [50/100] Train Loss: 1.1171 | Val Loss: 1.3127 | Train Acc: 84.60% | Val Acc: 71.20%
Stage1 Epoch [51/100] Train Loss: 1.1130 | Val Loss: 1.3160 | Train Acc: 85.70% | Val Acc: 71.50%
Stage1 Epoch [52/100] Train Loss: 1.1169 | Val Loss: 1.3134 | Train Acc: 83.60% | Val Acc: 72.30%
Stage1 Epoch [53/100] Train Loss: 1.1080 | Val Loss: 1.3143 | Train Acc: 85.40% | Val Acc: 71.60%
Stage1 Epoch [54/100] Train Loss: 1.1040 | Val Loss: 1.3131 | Train Acc: 85.80% | Val Acc: 71.20%
Stage1 Epoch [55/100] Train Loss: 1.1029 | Val Loss: 1.3125 | Train Acc: 85.00% | Val Acc: 71.40%
Stage1 Epoch [56/100] Train Loss: 1.1153 | Val Loss: 1.3133 | Train Acc: 84.50% | Val Acc: 71.40%
Stage1 Epoch [57/100] Train Loss: 1.1137 | Val Loss: 1.3117 | Train Acc: 86.00% | Val Acc: 71.50%
Stage1 Epoch [58/100] Train Loss: 1.0955 | Val Loss: 1.3099 | Train Acc: 86.10% | Val Acc: 72.40%
Stage1 Epoch [59/100] Train Loss: 1.1120 | Val Loss: 1.3102 | Train Acc: 85.00% | Val Acc: 71.70%
Stage1 Epoch [60/100] Train Loss: 1.1045 | Val Loss: 1.3101 | Train Acc: 86.20% | Val Acc: 71.80%
Stage1 Epoch [61/100] Train Loss: 1.1071 | Val Loss: 1.3122 | Train Acc: 85.80% | Val Acc: 72.20%
Stage1 Epoch [62/100] Train Loss: 1.1005 | Val Loss: 1.3094 | Train Acc: 85.70% | Val Acc: 72.50%
Stage1 Epoch [63/100] Train Loss: 1.1030 | Val Loss: 1.3072 | Train Acc: 86.20% | Val Acc: 71.40%
Stage1 Epoch [64/100] Train Loss: 1.1120 | Val Loss: 1.3066 | Train Acc: 84.60% | Val Acc: 71.70%
Stage1 Epoch [65/100] Train Loss: 1.0953 | Val Loss: 1.3072 | Train Acc: 86.40% | Val Acc: 71.30%
Stage1 Epoch [66/100] Train Loss: 1.1009 | Val Loss: 1.3085 | Train Acc: 85.10% | Val Acc: 71.60%
Stage1 Epoch [67/100] Train Loss: 1.0936 | Val Loss: 1.3081 | Train Acc: 87.00% | Val Acc: 71.60%
Stage1 Epoch [68/100] Train Loss: 1.0929 | Val Loss: 1.3064 | Train Acc: 86.30% | Val Acc: 71.60%
Stage1 Epoch [69/100] Train Loss: 1.0919 | Val Loss: 1.3084 | Train Acc: 86.30% | Val Acc: 71.50%
Stage1 Epoch [70/100] Train Loss: 1.0904 | Val Loss: 1.3099 | Train Acc: 86.40% | Val Acc: 71.80%
Stage1 Epoch [71/100] Train Loss: 1.0885 | Val Loss: 1.3077 | Train Acc: 87.00% | Val Acc: 72.00%
Stage1 Epoch [72/100] Train Loss: 1.0880 | Val Loss: 1.3059 | Train Acc: 86.40% | Val Acc: 71.70%
Stage1 Epoch [73/100] Train Loss: 1.1060 | Val Loss: 1.3062 | Train Acc: 84.50% | Val Acc: 71.80%
Stage1 Epoch [74/100] Train Loss: 1.1173 | Val Loss: 1.3056 | Train Acc: 84.60% | Val Acc: 72.00%
Stage1 Epoch [75/100] Train Loss: 1.0906 | Val Loss: 1.3038 | Train Acc: 88.20% | Val Acc: 72.00%
Stage1 Epoch [76/100] Train Loss: 1.0939 | Val Loss: 1.3049 | Train Acc: 86.90% | Val Acc: 72.20%
Stage1 Epoch [77/100] Train Loss: 1.0885 | Val Loss: 1.3087 | Train Acc: 87.50% | Val Acc: 72.10%
Stage1 Epoch [78/100] Train Loss: 1.0907 | Val Loss: 1.3092 | Train Acc: 87.10% | Val Acc: 71.90%
Stage1 Epoch [79/100] Train Loss: 1.1004 | Val Loss: 1.3116 | Train Acc: 84.40% | Val Acc: 71.30%
Stage1 Epoch [80/100] Train Loss: 1.0904 | Val Loss: 1.3104 | Train Acc: 86.20% | Val Acc: 71.50%
Stage1 Epoch [81/100] Train Loss: 1.0877 | Val Loss: 1.3106 | Train Acc: 87.20% | Val Acc: 71.80%
Stage1 Epoch [82/100] Train Loss: 1.0919 | Val Loss: 1.3098 | Train Acc: 86.10% | Val Acc: 71.80%
Stage1 Epoch [83/100] Train Loss: 1.0964 | Val Loss: 1.3068 | Train Acc: 85.90% | Val Acc: 71.80%
Stage1 Epoch [84/100] Train Loss: 1.0896 | Val Loss: 1.3064 | Train Acc: 86.90% | Val Acc: 71.60%
Stage1 Epoch [85/100] Train Loss: 1.1009 | Val Loss: 1.3088 | Train Acc: 85.60% | Val Acc: 71.70%
Stage1 Epoch [86/100] Train Loss: 1.0908 | Val Loss: 1.3086 | Train Acc: 86.10% | Val Acc: 71.60%
Stage1 Epoch [87/100] Train Loss: 1.0846 | Val Loss: 1.3057 | Train Acc: 86.70% | Val Acc: 71.90%
Stage1 Epoch [88/100] Train Loss: 1.0979 | Val Loss: 1.3065 | Train Acc: 85.30% | Val Acc: 72.00%
Stage1 Epoch [89/100] Train Loss: 1.1118 | Val Loss: 1.3069 | Train Acc: 84.50% | Val Acc: 72.10%
Stage1 Epoch [90/100] Train Loss: 1.1001 | Val Loss: 1.3068 | Train Acc: 85.70% | Val Acc: 72.20%
Stage1 Epoch [91/100] Train Loss: 1.0903 | Val Loss: 1.3067 | Train Acc: 86.40% | Val Acc: 72.30%
Stage1 Epoch [92/100] Train Loss: 1.0863 | Val Loss: 1.3054 | Train Acc: 87.00% | Val Acc: 72.20%
Stage1 Epoch [93/100] Train Loss: 1.0797 | Val Loss: 1.3066 | Train Acc: 87.90% | Val Acc: 71.90%
Stage1 Epoch [94/100] Train Loss: 1.0980 | Val Loss: 1.3085 | Train Acc: 85.40% | Val Acc: 72.10%
Stage1 Epoch [95/100] Train Loss: 1.0910 | Val Loss: 1.3069 | Train Acc: 86.20% | Val Acc: 71.80%
Stage1 Epoch [96/100] Train Loss: 1.0819 | Val Loss: 1.3068 | Train Acc: 86.60% | Val Acc: 71.60%
Stage1 Epoch [97/100] Train Loss: 1.0825 | Val Loss: 1.3077 | Train Acc: 87.40% | Val Acc: 71.90%
Stage1 Epoch [98/100] Train Loss: 1.0918 | Val Loss: 1.3063 | Train Acc: 86.40% | Val Acc: 72.00%
Stage1 Epoch [99/100] Train Loss: 1.0879 | Val Loss: 1.3071 | Train Acc: 86.20% | Val Acc: 71.80%
Stage1 Epoch [100/100] Train Loss: 1.0795 | Val Loss: 1.3069 | Train Acc: 86.10% | Val Acc: 71.90%
Stage-1 Best results:
Train Loss: 1.1005 | Val Loss: 1.3094 | Train Acc: 85.70% | Val Acc: 72.50%
Stage-1 Training Time: 357.59 seconds
Loaded Stage-1 best-val model for Stage-2 fine-tuning
===== Stage-2: Unfreeze layer4 + fc =====
Stage2 Epoch [01/100] Train Loss: 1.1014 | Val Loss: 1.2606 | Train Acc: 85.30% | Val Acc: 76.90%
Stage2 Epoch [02/100] Train Loss: 0.9456 | Val Loss: 1.2211 | Train Acc: 94.40% | Val Acc: 79.30%
Stage2 Epoch [03/100] Train Loss: 0.8781 | Val Loss: 1.2030 | Train Acc: 97.10% | Val Acc: 79.90%
Stage2 Epoch [04/100] Train Loss: 0.8319 | Val Loss: 1.1859 | Train Acc: 99.10% | Val Acc: 80.40%
Stage2 Epoch [05/100] Train Loss: 0.8099 | Val Loss: 1.1695 | Train Acc: 99.60% | Val Acc: 79.50%
Stage2 Epoch [06/100] Train Loss: 0.7852 | Val Loss: 1.1605 | Train Acc: 99.80% | Val Acc: 79.80%
Stage2 Epoch [07/100] Train Loss: 0.7728 | Val Loss: 1.1526 | Train Acc: 99.90% | Val Acc: 81.00%
Stage2 Epoch [08/100] Train Loss: 0.7626 | Val Loss: 1.1463 | Train Acc: 99.90% | Val Acc: 81.30%
Stage2 Epoch [09/100] Train Loss: 0.7574 | Val Loss: 1.1410 | Train Acc: 100.00% | Val Acc: 81.40%
Stage2 Epoch [10/100] Train Loss: 0.7465 | Val Loss: 1.1364 | Train Acc: 100.00% | Val Acc: 81.40%
Stage2 Epoch [11/100] Train Loss: 0.7452 | Val Loss: 1.1256 | Train Acc: 100.00% | Val Acc: 82.20%
Stage2 Epoch [12/100] Train Loss: 0.7389 | Val Loss: 1.1229 | Train Acc: 100.00% | Val Acc: 82.60%
Stage2 Epoch [13/100] Train Loss: 0.7353 | Val Loss: 1.1266 | Train Acc: 100.00% | Val Acc: 82.20%
Stage2 Epoch [14/100] Train Loss: 0.7313 | Val Loss: 1.1261 | Train Acc: 100.00% | Val Acc: 81.40%
Stage2 Epoch [15/100] Train Loss: 0.7310 | Val Loss: 1.1156 | Train Acc: 100.00% | Val Acc: 81.80%
Stage2 Epoch [16/100] Train Loss: 0.7271 | Val Loss: 1.1067 | Train Acc: 100.00% | Val Acc: 83.10%
Stage2 Epoch [17/100] Train Loss: 0.7241 | Val Loss: 1.1071 | Train Acc: 100.00% | Val Acc: 82.80%
Stage2 Epoch [18/100] Train Loss: 0.7236 | Val Loss: 1.1076 | Train Acc: 100.00% | Val Acc: 82.90%
Stage2 Epoch [19/100] Train Loss: 0.7223 | Val Loss: 1.1079 | Train Acc: 100.00% | Val Acc: 83.40%
Stage2 Epoch [20/100] Train Loss: 0.7217 | Val Loss: 1.1039 | Train Acc: 100.00% | Val Acc: 83.90%
Stage2 Epoch [21/100] Train Loss: 0.7194 | Val Loss: 1.1026 | Train Acc: 100.00% | Val Acc: 84.10%
Stage2 Epoch [22/100] Train Loss: 0.7175 | Val Loss: 1.1039 | Train Acc: 100.00% | Val Acc: 83.20%
Stage2 Epoch [23/100] Train Loss: 0.7186 | Val Loss: 1.1018 | Train Acc: 100.00% | Val Acc: 83.40%
Stage2 Epoch [24/100] Train Loss: 0.7176 | Val Loss: 1.1090 | Train Acc: 100.00% | Val Acc: 82.70%
Stage2 Epoch [25/100] Train Loss: 0.7173 | Val Loss: 1.1082 | Train Acc: 100.00% | Val Acc: 82.80%
Stage2 Epoch [26/100] Train Loss: 0.7164 | Val Loss: 1.1020 | Train Acc: 100.00% | Val Acc: 84.10%
Stage2 Epoch [27/100] Train Loss: 0.7152 | Val Loss: 1.0983 | Train Acc: 100.00% | Val Acc: 84.00%
Stage2 Epoch [28/100] Train Loss: 0.7151 | Val Loss: 1.1011 | Train Acc: 100.00% | Val Acc: 84.80%
Stage2 Epoch [29/100] Train Loss: 0.7146 | Val Loss: 1.1012 | Train Acc: 100.00% | Val Acc: 84.50%
Stage2 Epoch [30/100] Train Loss: 0.7156 | Val Loss: 1.1006 | Train Acc: 100.00% | Val Acc: 84.70%
Stage2 Epoch [31/100] Train Loss: 0.7131 | Val Loss: 1.0972 | Train Acc: 100.00% | Val Acc: 84.90%
Stage2 Epoch [32/100] Train Loss: 0.7119 | Val Loss: 1.0933 | Train Acc: 100.00% | Val Acc: 84.80%
Stage2 Epoch [33/100] Train Loss: 0.7113 | Val Loss: 1.0972 | Train Acc: 100.00% | Val Acc: 84.50%
Stage2 Epoch [34/100] Train Loss: 0.7116 | Val Loss: 1.0966 | Train Acc: 100.00% | Val Acc: 85.20%
Stage2 Epoch [35/100] Train Loss: 0.7117 | Val Loss: 1.0912 | Train Acc: 100.00% | Val Acc: 84.70%
Stage2 Epoch [36/100] Train Loss: 0.7107 | Val Loss: 1.0941 | Train Acc: 100.00% | Val Acc: 84.50%
Stage2 Epoch [37/100] Train Loss: 0.7109 | Val Loss: 1.0971 | Train Acc: 100.00% | Val Acc: 84.60%
Stage2 Epoch [38/100] Train Loss: 0.7098 | Val Loss: 1.0979 | Train Acc: 100.00% | Val Acc: 84.90%
Stage2 Epoch [39/100] Train Loss: 0.7098 | Val Loss: 1.1001 | Train Acc: 100.00% | Val Acc: 84.90%
Stage2 Epoch [40/100] Train Loss: 0.7096 | Val Loss: 1.0962 | Train Acc: 100.00% | Val Acc: 84.40%
Stage2 Epoch [41/100] Train Loss: 0.7090 | Val Loss: 1.0928 | Train Acc: 100.00% | Val Acc: 85.00%
Stage2 Epoch [42/100] Train Loss: 0.7072 | Val Loss: 1.0905 | Train Acc: 100.00% | Val Acc: 85.10%
Stage2 Epoch [43/100] Train Loss: 0.7073 | Val Loss: 1.0896 | Train Acc: 100.00% | Val Acc: 85.30%
Stage2 Epoch [44/100] Train Loss: 0.7093 | Val Loss: 1.0881 | Train Acc: 100.00% | Val Acc: 85.60%
Stage2 Epoch [45/100] Train Loss: 0.7069 | Val Loss: 1.0909 | Train Acc: 100.00% | Val Acc: 85.50%
Stage2 Epoch [46/100] Train Loss: 0.7075 | Val Loss: 1.0952 | Train Acc: 100.00% | Val Acc: 85.50%
Stage2 Epoch [47/100] Train Loss: 0.7062 | Val Loss: 1.0945 | Train Acc: 100.00% | Val Acc: 85.20%
Stage2 Epoch [48/100] Train Loss: 0.7062 | Val Loss: 1.0910 | Train Acc: 100.00% | Val Acc: 85.50%
Stage2 Epoch [49/100] Train Loss: 0.7064 | Val Loss: 1.0867 | Train Acc: 100.00% | Val Acc: 85.70%
Stage2 Epoch [50/100] Train Loss: 0.7062 | Val Loss: 1.0891 | Train Acc: 100.00% | Val Acc: 85.70%
Stage2 Epoch [51/100] Train Loss: 0.7060 | Val Loss: 1.0932 | Train Acc: 100.00% | Val Acc: 86.20%
Stage2 Epoch [52/100] Train Loss: 0.7061 | Val Loss: 1.0933 | Train Acc: 100.00% | Val Acc: 85.80%
Stage2 Epoch [53/100] Train Loss: 0.7064 | Val Loss: 1.0913 | Train Acc: 100.00% | Val Acc: 85.70%
Stage2 Epoch [54/100] Train Loss: 0.7056 | Val Loss: 1.0887 | Train Acc: 100.00% | Val Acc: 85.40%
Stage2 Epoch [55/100] Train Loss: 0.7056 | Val Loss: 1.0910 | Train Acc: 100.00% | Val Acc: 85.30%
Stage2 Epoch [56/100] Train Loss: 0.7065 | Val Loss: 1.0905 | Train Acc: 100.00% | Val Acc: 85.40%
Stage2 Epoch [57/100] Train Loss: 0.7050 | Val Loss: 1.0941 | Train Acc: 100.00% | Val Acc: 85.50%
Stage2 Epoch [58/100] Train Loss: 0.7049 | Val Loss: 1.0940 | Train Acc: 100.00% | Val Acc: 85.60%
Stage2 Epoch [59/100] Train Loss: 0.7044 | Val Loss: 1.0915 | Train Acc: 100.00% | Val Acc: 85.70%
Stage2 Epoch [60/100] Train Loss: 0.7051 | Val Loss: 1.0893 | Train Acc: 100.00% | Val Acc: 86.00%
Stage2 Epoch [61/100] Train Loss: 0.7048 | Val Loss: 1.0884 | Train Acc: 100.00% | Val Acc: 85.70%
Stage2 Epoch [62/100] Train Loss: 0.7049 | Val Loss: 1.0920 | Train Acc: 100.00% | Val Acc: 85.40%
Stage2 Epoch [63/100] Train Loss: 0.7041 | Val Loss: 1.0922 | Train Acc: 100.00% | Val Acc: 85.30%
Stage2 Epoch [64/100] Train Loss: 0.7039 | Val Loss: 1.0938 | Train Acc: 100.00% | Val Acc: 85.30%
Stage2 Epoch [65/100] Train Loss: 0.7036 | Val Loss: 1.0945 | Train Acc: 100.00% | Val Acc: 85.40%
Stage2 Epoch [66/100] Train Loss: 0.7035 | Val Loss: 1.0937 | Train Acc: 100.00% | Val Acc: 85.40%
Stage2 Epoch [67/100] Train Loss: 0.7047 | Val Loss: 1.0891 | Train Acc: 100.00% | Val Acc: 85.60%
Stage2 Epoch [68/100] Train Loss: 0.7033 | Val Loss: 1.0885 | Train Acc: 100.00% | Val Acc: 86.00%
Stage2 Epoch [69/100] Train Loss: 0.7044 | Val Loss: 1.0900 | Train Acc: 100.00% | Val Acc: 85.60%
Stage2 Epoch [70/100] Train Loss: 0.7038 | Val Loss: 1.0905 | Train Acc: 100.00% | Val Acc: 85.70%
Stage2 Epoch [71/100] Train Loss: 0.7031 | Val Loss: 1.0914 | Train Acc: 100.00% | Val Acc: 85.80%
Stage2 Epoch [72/100] Train Loss: 0.7030 | Val Loss: 1.0931 | Train Acc: 100.00% | Val Acc: 85.40%
Stage2 Epoch [73/100] Train Loss: 0.7030 | Val Loss: 1.0937 | Train Acc: 100.00% | Val Acc: 85.70%
Stage2 Epoch [74/100] Train Loss: 0.7040 | Val Loss: 1.0926 | Train Acc: 100.00% | Val Acc: 85.80%
Stage2 Epoch [75/100] Train Loss: 0.7034 | Val Loss: 1.0905 | Train Acc: 100.00% | Val Acc: 86.00%
Stage2 Epoch [76/100] Train Loss: 0.7027 | Val Loss: 1.0898 | Train Acc: 100.00% | Val Acc: 85.90%
Stage2 Epoch [77/100] Train Loss: 0.7033 | Val Loss: 1.0887 | Train Acc: 100.00% | Val Acc: 85.80%
Stage2 Epoch [78/100] Train Loss: 0.7030 | Val Loss: 1.0894 | Train Acc: 100.00% | Val Acc: 85.80%
Stage2 Epoch [79/100] Train Loss: 0.7024 | Val Loss: 1.0889 | Train Acc: 100.00% | Val Acc: 85.90%
Stage2 Epoch [80/100] Train Loss: 0.7030 | Val Loss: 1.0903 | Train Acc: 100.00% | Val Acc: 85.20%
Stage2 Epoch [81/100] Train Loss: 0.7036 | Val Loss: 1.0907 | Train Acc: 100.00% | Val Acc: 85.10%
Stage2 Epoch [82/100] Train Loss: 0.7033 | Val Loss: 1.0908 | Train Acc: 100.00% | Val Acc: 84.90%
Stage2 Epoch [83/100] Train Loss: 0.7024 | Val Loss: 1.0898 | Train Acc: 100.00% | Val Acc: 85.10%
Stage2 Epoch [84/100] Train Loss: 0.7032 | Val Loss: 1.0893 | Train Acc: 100.00% | Val Acc: 85.90%
Stage2 Epoch [85/100] Train Loss: 0.7033 | Val Loss: 1.0886 | Train Acc: 100.00% | Val Acc: 85.50%
Stage2 Epoch [86/100] Train Loss: 0.7034 | Val Loss: 1.0886 | Train Acc: 100.00% | Val Acc: 85.80%
Stage2 Epoch [87/100] Train Loss: 0.7032 | Val Loss: 1.0885 | Train Acc: 100.00% | Val Acc: 85.70%
Stage2 Epoch [88/100] Train Loss: 0.7024 | Val Loss: 1.0897 | Train Acc: 100.00% | Val Acc: 85.40%
Stage2 Epoch [89/100] Train Loss: 0.7024 | Val Loss: 1.0901 | Train Acc: 100.00% | Val Acc: 85.40%
Stage2 Epoch [90/100] Train Loss: 0.7033 | Val Loss: 1.0914 | Train Acc: 100.00% | Val Acc: 85.30%
Stage2 Epoch [91/100] Train Loss: 0.7022 | Val Loss: 1.0915 | Train Acc: 100.00% | Val Acc: 85.30%
Stage2 Epoch [92/100] Train Loss: 0.7022 | Val Loss: 1.0913 | Train Acc: 100.00% | Val Acc: 85.30%
Stage2 Epoch [93/100] Train Loss: 0.7024 | Val Loss: 1.0904 | Train Acc: 100.00% | Val Acc: 85.70%
Stage2 Epoch [94/100] Train Loss: 0.7024 | Val Loss: 1.0912 | Train Acc: 100.00% | Val Acc: 85.60%
Stage2 Epoch [95/100] Train Loss: 0.7030 | Val Loss: 1.0906 | Train Acc: 100.00% | Val Acc: 85.60%
Stage2 Epoch [96/100] Train Loss: 0.7026 | Val Loss: 1.0908 | Train Acc: 100.00% | Val Acc: 85.50%
Stage2 Epoch [97/100] Train Loss: 0.7025 | Val Loss: 1.0921 | Train Acc: 100.00% | Val Acc: 85.40%
Stage2 Epoch [98/100] Train Loss: 0.7019 | Val Loss: 1.0923 | Train Acc: 100.00% | Val Acc: 85.50%
Stage2 Epoch [99/100] Train Loss: 0.7014 | Val Loss: 1.0924 | Train Acc: 100.00% | Val Acc: 85.30%
Stage2 Epoch [100/100] Train Loss: 0.7032 | Val Loss: 1.0914 | Train Acc: 100.00% | Val Acc: 85.70%
Stage-2 Best results:
Train Loss: 0.7060 | Val Loss: 1.0932 | Train Acc: 100.00% | Val Acc: 86.20%
Stage-2 Training Time: 464.50 seconds
Any comments? Feel free to participate below in the Facebook comment section.