정확도를 보여 주는 그래프가 앞에서 살펴보았던 그래프와는 다르게 완만한 곡선 형태를 보여 줍니다. 또한, 훈련이 종료된 시점의 검증 데이터셋에 대한 정확도도 높게 나타나고 있습니다. 그리고 오차 그래프의 경우 그래프가 우상향하는 현상도 없어졌습니다. 즉, 학습률 스케줄러가 성능 향상에 어느 정도 기여했음을 의미합니다. 그러나 자세히 관찰하면 검증 데이터셋에 대한 오차가 에포크 20 정도에서도 정체되기 시작합니다. 즉, 에포크를 30 정도만 수행해도 모델 훈련에 여전히 좋은 결과를 얻을 수 있을 것이라고 추측할 수 있습니다.
마지막으로 조기 종료에 대한 결과를 살펴보겠습니다. 다음 명령을 아나콘다 프롬프트에서 실행합니다.
> python es-python_8장.py --early-stopping
조기 종료 인수를 적용했을 때의 결과는 다음과 같습니다.
Computation device: cpu 25,557,032 total parameters. 25,557,032 training parameters. INFO: Initializing early stopping Epoch 1 of 100 Training 0%| | 0/15 [00:00<?, ?it/s]e:\Anaconda3\envs\pytorch\lib\site-packages\torch\nn\functional.py:718: UserWarning: Named tensors and all their associated APIs are an experimental feature and subject to change. Please do not use them for anything important until they are released as stable. (Triggered internally at ..\c10/core/TensorImpl.h:1156.) return torch.max_pool2d(input, kernel_size, stride, padding, dilation, ceil_mode) 16it [04:45, 17.84s/it] Validating 16it [01:34, 5.91s/it] Train Loss: 2.1789, Train Acc: 58.23 Val Loss: 64.6766, Val Acc: 14.60 Epoch 2 of 100 Training 16it [04:31, 16.94s/it] Validating 16it [01:29, 5.60s/it] Train Loss: 0.6728, Train Acc: 65.66 Val Loss: 1.6799, Val Acc: 64.60 Epoch 3 of 100 Training 16it [04:33, 17.09s/it] Validating 16it [01:31, 5.74s/it] Train Loss: 0.5560, Train Acc: 70.28 Val Loss: 0.5631, Val Acc: 71.40 Epoch 4 of 100 Training 16it [04:46, 17.90s/it] Validating 16it [01:34, 5.93s/it] Train Loss: 0.5004, Train Acc: 79.92 Val Loss: 0.5125, Val Acc: 77.40 Epoch 5 of 100 Training 16it [04:47, 17.94s/it] Validating 16it [01:34, 5.90s/it] EarlyStopping counter: 1 out of 5 Train Loss: 0.3710, Train Acc: 83.53 Val Loss: 0.6830, Val Acc: 72.20 Epoch 6 of 100 Training 16it [04:46, 17.94s/it] Validating 16it [01:34, 5.90s/it] EarlyStopping counter: 2 out of 5 Train Loss: 0.4656, Train Acc: 78.11 Val Loss: 0.7071, Val Acc: 70.40 Epoch 7 of 100 Training 16it [04:36, 17.26s/it] Validating 16it [01:30, 5.66s/it] EarlyStopping counter: 3 out of 5 Train Loss: 0.4010, Train Acc: 83.33 Val Loss: 0.5996, Val Acc: 74.80 Epoch 8 of 100 Training 16it [04:34, 17.17s/it] Validating 16it [01:30, 5.68s/it] EarlyStopping counter: 4 out of 5 Train Loss: 0.3679, Train Acc: 83.94 Val Loss: 1.4061, Val Acc: 58.00 Epoch 9 of 100 Training 16it [04:34, 17.14s/it] Validating 16it [01:30, 5.68s/it] EarlyStopping counter: 5 out of 5 Training time: 55.807 minutes Saving model... TRAINING COMPLETE