작성
·
15K
0
안녕하세요? 뜻하지 않게 회사에서 딥러닝 이미지분석 프로젝트를 맡아서 헤매고 있다가 이 강의를 듣고 도움이 정말 많이 되었습니다.
회사 데이터를 강의 코드와 유사한 방식으로 비교해가며 진행 중인데 Batch 크기에 따른 모델 성능 향상 부문에서 아래와 같이 특이한 현상을 확인했습니다.
그래프는 위에서부터 차례대로 train accuracy, train loss, validation accuracy, validation loss입니다.
train은 일반적인 학습 곡선의 경향을 그대로 따라가는데, validation 쪽은 loss도 accuracy도 그렇고 학습 진행할 때마다 널뛰기하는 것이 보입니다. 일정 수준을 가다가 떨어지면 과적합이라고 이해하겠는데 학습 쇳수가 10이하 일때도 해당 현상이 나타나는 걸로 봐서는 아닌 것 같습니다.
seed속성을 동일하게 고정하였으니 데이터셋은 일정하게 들어가고 있는 것은 맞는데, 데이터 수가 적어서(train 2000장, validation 200장) validation 시 하나라도 틀리면 급격하게 떨어지는 것인지 잘 모르겠습니다.
강사님께서는 어떻게 생각하시는지요?
답변 3
0
0
강사님 F/B 고맙습니다.
먼저 관련 내용 업데이트하여 드리면
0. Class 수 : 10개입니다만, 각 Class 별로 데이터의 수가 좀 많이 차이가 납니다(현장에서 구할 수 있는 데이터 종류가 한정되어 그렇습니다).
1. 라벨링 재확인 : 유사한 현상이 있는 점은 어쩔 수가 없고, 완전히 잘못된 분류는 없는 관계로 그대로 진행하였습니다.
2. 모델의 재학습 : 라벨링에 변화가 없어서 효과가 그닥 없었습니다.
3. 추가 검증 : 배치 크기 변경 이후에 나머지 수업을 들으면서 모델을 조금 변경해보았습니다.
3.1 적용 사항 : 'Callback을 통한 동적 학습율 변경', 'MaxPooling 대신 각 세트의 마지막 Conv2D에 stride=2 적용' (아래에 코드 올려드립니다. third feature extractor에는 채널을 2배로 늘린 Conv2D 층을 추가하고 여기에 stride=2를 적용하였습니다)
3.2 적용 결과 : Batch size 2, 4, 8, 16, 32로 학습 실시 (학습 history는 맨아래 첨부하였습니다)
3.3 결론 : Batch size가 클수록 학습 중반까지 val_loss와 val_accuracy가 튀는 현상이 있지만 확실히 정돈된 모습이고, epoch가 20을 넘어가면 사라지는 걸로 봐서는 어느 정도 해결된 것으로 보입니다. 다만 변경 사항이 많아 어떤 것이 직접적으로 처음의 현상을 유발하였는지는 파악되지 않았습니다(구글링 해봐도 라벨링이 맞다면 학습율을 조정해보라는 답변이 대부분있습니다). 다음에 시간을 좀 내어 무엇이 원인인지 차근차근 분석을 해보려고 합니다. 좋은 강의 언제나 고맙습니다.
Found 2198 files belonging to 10 classes.
Using 1979 files for training.
Found 2198 files belonging to 10 classes.
Using 219 files for validation.
Epoch 1/30
990/990 [==============================] - 45s 45ms/step - loss: 3.7603 - accuracy: 0.4687 - val_loss: 1.3357 - val_accuracy: 0.7991
Epoch 2/30
990/990 [==============================] - 42s 43ms/step - loss: 2.0769 - accuracy: 0.7721 - val_loss: 0.9707 - val_accuracy: 0.8219
Epoch 3/30
990/990 [==============================] - 43s 43ms/step - loss: 1.0833 - accuracy: 0.8606 - val_loss: 3.2453 - val_accuracy: 0.8311
Epoch 4/30
990/990 [==============================] - 42s 43ms/step - loss: 1.6504 - accuracy: 0.8544 - val_loss: 1.9043 - val_accuracy: 0.8858
Epoch 5/30
990/990 [==============================] - 43s 44ms/step - loss: 1.0653 - accuracy: 0.8989 - val_loss: 1.9502 - val_accuracy: 0.9132
Epoch 6/30
990/990 [==============================] - 44s 44ms/step - loss: 1.4879 - accuracy: 0.8866 - val_loss: 3.1987 - val_accuracy: 0.8995
Epoch 7/30
990/990 [==============================] - 43s 44ms/step - loss: 1.3159 - accuracy: 0.9005 - val_loss: 6.7991 - val_accuracy: 0.8767
Epoch 00007: ReduceLROnPlateau reducing learning rate to 1.9999999494757503e-05.
Epoch 8/30
990/990 [==============================] - 43s 43ms/step - loss: 0.3560 - accuracy: 0.9632 - val_loss: 1.9258 - val_accuracy: 0.9315
Epoch 9/30
990/990 [==============================] - 42s 43ms/step - loss: 0.3567 - accuracy: 0.9725 - val_loss: 1.7539 - val_accuracy: 0.9361
Epoch 10/30
990/990 [==============================] - 43s 44ms/step - loss: 0.2482 - accuracy: 0.9761 - val_loss: 1.6857 - val_accuracy: 0.9498
Epoch 11/30
990/990 [==============================] - 43s 44ms/step - loss: 0.3200 - accuracy: 0.9772 - val_loss: 0.7950 - val_accuracy: 0.9635
Epoch 12/30
990/990 [==============================] - 43s 44ms/step - loss: 0.4093 - accuracy: 0.9615 - val_loss: 1.2214 - val_accuracy: 0.9498
Epoch 13/30
990/990 [==============================] - 43s 43ms/step - loss: 0.1854 - accuracy: 0.9814 - val_loss: 2.9158 - val_accuracy: 0.9269
Epoch 14/30
990/990 [==============================] - 43s 44ms/step - loss: 0.2508 - accuracy: 0.9735 - val_loss: 2.2683 - val_accuracy: 0.9543
Epoch 15/30
990/990 [==============================] - 43s 43ms/step - loss: 0.1775 - accuracy: 0.9836 - val_loss: 1.6626 - val_accuracy: 0.9543
Epoch 16/30
990/990 [==============================] - 43s 44ms/step - loss: 0.1664 - accuracy: 0.9740 - val_loss: 2.1867 - val_accuracy: 0.9498
Epoch 00016: ReduceLROnPlateau reducing learning rate to 3.999999898951501e-06.
Epoch 17/30
990/990 [==============================] - 43s 44ms/step - loss: 0.1387 - accuracy: 0.9795 - val_loss: 2.0234 - val_accuracy: 0.9589
Epoch 18/30
990/990 [==============================] - 43s 44ms/step - loss: 0.1506 - accuracy: 0.9799 - val_loss: 1.7870 - val_accuracy: 0.9498
Epoch 19/30
990/990 [==============================] - 43s 43ms/step - loss: 0.2060 - accuracy: 0.9843 - val_loss: 2.2668 - val_accuracy: 0.9589
Epoch 20/30
990/990 [==============================] - 43s 43ms/step - loss: 0.0962 - accuracy: 0.9895 - val_loss: 1.9903 - val_accuracy: 0.9543
Epoch 21/30
990/990 [==============================] - 43s 43ms/step - loss: 0.1770 - accuracy: 0.9870 - val_loss: 2.3954 - val_accuracy: 0.9543
Epoch 00021: ReduceLROnPlateau reducing learning rate to 7.999999979801942e-07.
Epoch 22/30
990/990 [==============================] - 43s 43ms/step - loss: 0.0832 - accuracy: 0.9818 - val_loss: 2.1405 - val_accuracy: 0.9543
Epoch 23/30
990/990 [==============================] - 44s 44ms/step - loss: 0.0871 - accuracy: 0.9855 - val_loss: 2.2400 - val_accuracy: 0.9543
Epoch 24/30
990/990 [==============================] - 43s 44ms/step - loss: 0.1387 - accuracy: 0.9799 - val_loss: 2.2669 - val_accuracy: 0.9498
Epoch 25/30
990/990 [==============================] - 43s 44ms/step - loss: 0.1580 - accuracy: 0.9879 - val_loss: 2.2107 - val_accuracy: 0.9498
Epoch 26/30
990/990 [==============================] - 44s 44ms/step - loss: 0.1013 - accuracy: 0.9866 - val_loss: 2.1473 - val_accuracy: 0.9543
Epoch 00026: ReduceLROnPlateau reducing learning rate to 1.600000018697756e-07.
Epoch 27/30
990/990 [==============================] - 43s 43ms/step - loss: 0.1389 - accuracy: 0.9832 - val_loss: 2.1720 - val_accuracy: 0.9543
Epoch 28/30
990/990 [==============================] - 43s 44ms/step - loss: 0.1184 - accuracy: 0.9838 - val_loss: 2.1016 - val_accuracy: 0.9543
Epoch 29/30
990/990 [==============================] - 43s 43ms/step - loss: 0.1844 - accuracy: 0.9788 - val_loss: 2.0670 - val_accuracy: 0.9543
Epoch 30/30
990/990 [==============================] - 44s 44ms/step - loss: 0.0829 - accuracy: 0.9887 - val_loss: 2.0866 - val_accuracy: 0.9543
110/110 [==============================] - 1s 9ms/step - loss: 2.0866 - accuracy: 0.9543
Found 2198 files belonging to 10 classes.
Using 1979 files for training.
Found 2198 files belonging to 10 classes.
Using 219 files for validation.
Epoch 1/30
495/495 [==============================] - 33s 66ms/step - loss: 2.5201 - accuracy: 0.4496 - val_loss: 0.4513 - val_accuracy: 0.8493
Epoch 2/30
495/495 [==============================] - 32s 65ms/step - loss: 1.2881 - accuracy: 0.7432 - val_loss: 1.0306 - val_accuracy: 0.7489
Epoch 3/30
495/495 [==============================] - 33s 66ms/step - loss: 1.1680 - accuracy: 0.8176 - val_loss: 1.1881 - val_accuracy: 0.9087
Epoch 4/30
495/495 [==============================] - 33s 66ms/step - loss: 1.1353 - accuracy: 0.8447 - val_loss: 12.3741 - val_accuracy: 0.4292
Epoch 5/30
495/495 [==============================] - 32s 65ms/step - loss: 1.0116 - accuracy: 0.8637 - val_loss: 30.4661 - val_accuracy: 0.3653
Epoch 6/30
495/495 [==============================] - 33s 66ms/step - loss: 1.1948 - accuracy: 0.8802 - val_loss: 3.0824 - val_accuracy: 0.7763
Epoch 00006: ReduceLROnPlateau reducing learning rate to 1.9999999494757503e-05.
Epoch 7/30
495/495 [==============================] - 33s 66ms/step - loss: 0.9830 - accuracy: 0.9211 - val_loss: 0.6620 - val_accuracy: 0.9635
Epoch 8/30
495/495 [==============================] - 33s 67ms/step - loss: 0.7374 - accuracy: 0.9316 - val_loss: 0.6927 - val_accuracy: 0.9726
Epoch 9/30
495/495 [==============================] - 33s 67ms/step - loss: 0.7204 - accuracy: 0.9381 - val_loss: 0.5492 - val_accuracy: 0.9589
Epoch 10/30
495/495 [==============================] - 33s 67ms/step - loss: 0.8152 - accuracy: 0.9333 - val_loss: 0.5120 - val_accuracy: 0.9680
Epoch 11/30
495/495 [==============================] - 33s 66ms/step - loss: 0.6594 - accuracy: 0.9445 - val_loss: 0.4779 - val_accuracy: 0.9817
Epoch 00011: ReduceLROnPlateau reducing learning rate to 3.999999898951501e-06.
Epoch 12/30
495/495 [==============================] - 34s 68ms/step - loss: 0.5233 - accuracy: 0.9489 - val_loss: 0.5502 - val_accuracy: 0.9772
Epoch 13/30
495/495 [==============================] - 33s 67ms/step - loss: 0.5145 - accuracy: 0.9498 - val_loss: 0.4927 - val_accuracy: 0.9772
Epoch 14/30
495/495 [==============================] - 33s 67ms/step - loss: 0.6242 - accuracy: 0.9497 - val_loss: 0.3954 - val_accuracy: 0.9772
Epoch 15/30
495/495 [==============================] - 33s 66ms/step - loss: 0.5388 - accuracy: 0.9490 - val_loss: 0.4569 - val_accuracy: 0.9726
Epoch 16/30
495/495 [==============================] - 33s 67ms/step - loss: 0.5238 - accuracy: 0.9505 - val_loss: 0.3898 - val_accuracy: 0.9772
Epoch 17/30
495/495 [==============================] - 34s 68ms/step - loss: 0.3283 - accuracy: 0.9607 - val_loss: 0.3942 - val_accuracy: 0.9817
Epoch 18/30
495/495 [==============================] - 33s 67ms/step - loss: 0.3745 - accuracy: 0.9521 - val_loss: 0.4565 - val_accuracy: 0.9772
Epoch 19/30
495/495 [==============================] - 34s 68ms/step - loss: 0.3927 - accuracy: 0.9558 - val_loss: 0.4310 - val_accuracy: 0.9726
Epoch 20/30
495/495 [==============================] - 34s 68ms/step - loss: 0.4973 - accuracy: 0.9547 - val_loss: 0.4792 - val_accuracy: 0.9726
Epoch 21/30
495/495 [==============================] - 33s 67ms/step - loss: 0.5840 - accuracy: 0.9521 - val_loss: 0.3660 - val_accuracy: 0.9726
Epoch 22/30
495/495 [==============================] - 33s 68ms/step - loss: 0.4568 - accuracy: 0.9572 - val_loss: 0.4898 - val_accuracy: 0.9680
Epoch 23/30
495/495 [==============================] - 33s 66ms/step - loss: 0.4546 - accuracy: 0.9548 - val_loss: 0.3170 - val_accuracy: 0.9772
Epoch 24/30
495/495 [==============================] - 33s 67ms/step - loss: 0.4663 - accuracy: 0.9669 - val_loss: 0.3242 - val_accuracy: 0.9772
Epoch 25/30
495/495 [==============================] - 34s 68ms/step - loss: 0.3522 - accuracy: 0.9667 - val_loss: 0.2901 - val_accuracy: 0.9772
Epoch 26/30
495/495 [==============================] - 34s 68ms/step - loss: 0.3148 - accuracy: 0.9622 - val_loss: 0.2605 - val_accuracy: 0.9772
Epoch 27/30
495/495 [==============================] - 33s 67ms/step - loss: 0.3931 - accuracy: 0.9629 - val_loss: 0.2825 - val_accuracy: 0.9772
Epoch 28/30
495/495 [==============================] - 36s 73ms/step - loss: 0.2411 - accuracy: 0.9763 - val_loss: 0.3732 - val_accuracy: 0.9772
Epoch 29/30
495/495 [==============================] - 36s 72ms/step - loss: 0.3437 - accuracy: 0.9626 - val_loss: 0.2420 - val_accuracy: 0.9772
Epoch 30/30
495/495 [==============================] - 37s 74ms/step - loss: 0.2893 - accuracy: 0.9572 - val_loss: 0.3341 - val_accuracy: 0.9726
55/55 [==============================] - 1s 17ms/step - loss: 0.3341 - accuracy: 0.9726
Found 2198 files belonging to 10 classes.
Using 1979 files for training.
Found 2198 files belonging to 10 classes.
Using 219 files for validation.
Epoch 1/30
248/248 [==============================] - 34s 134ms/step - loss: 2.4453 - accuracy: 0.4738 - val_loss: 1.3434 - val_accuracy: 0.5023
Epoch 2/30
248/248 [==============================] - 33s 133ms/step - loss: 1.0834 - accuracy: 0.7897 - val_loss: 0.8532 - val_accuracy: 0.8721
Epoch 3/30
248/248 [==============================] - 33s 133ms/step - loss: 0.8777 - accuracy: 0.8544 - val_loss: 0.3363 - val_accuracy: 0.8904
Epoch 4/30
248/248 [==============================] - 34s 136ms/step - loss: 0.4220 - accuracy: 0.9184 - val_loss: 1.9280 - val_accuracy: 0.7534
Epoch 5/30
248/248 [==============================] - 34s 136ms/step - loss: 0.8649 - accuracy: 0.8911 - val_loss: 10.5595 - val_accuracy: 0.4749
Epoch 6/30
248/248 [==============================] - 34s 136ms/step - loss: 0.6193 - accuracy: 0.9305 - val_loss: 2.4152 - val_accuracy: 0.7260
Epoch 7/30
248/248 [==============================] - 34s 136ms/step - loss: 0.5930 - accuracy: 0.9232 - val_loss: 7.2804 - val_accuracy: 0.5708
Epoch 8/30
248/248 [==============================] - 32s 131ms/step - loss: 0.5178 - accuracy: 0.9380 - val_loss: 0.8919 - val_accuracy: 0.8767
Epoch 00008: ReduceLROnPlateau reducing learning rate to 1.9999999494757503e-05.
Epoch 9/30
248/248 [==============================] - 31s 125ms/step - loss: 0.4003 - accuracy: 0.9527 - val_loss: 0.3027 - val_accuracy: 0.9680
Epoch 10/30
248/248 [==============================] - 31s 126ms/step - loss: 0.2557 - accuracy: 0.9681 - val_loss: 0.5277 - val_accuracy: 0.9178
Epoch 11/30
248/248 [==============================] - 31s 125ms/step - loss: 0.1611 - accuracy: 0.9723 - val_loss: 0.1921 - val_accuracy: 0.9817
Epoch 12/30
248/248 [==============================] - 31s 124ms/step - loss: 0.1882 - accuracy: 0.9744 - val_loss: 0.1635 - val_accuracy: 0.9726
Epoch 13/30
248/248 [==============================] - 31s 125ms/step - loss: 0.2039 - accuracy: 0.9722 - val_loss: 0.1953 - val_accuracy: 0.9772
Epoch 14/30
248/248 [==============================] - 33s 133ms/step - loss: 0.1774 - accuracy: 0.9687 - val_loss: 0.2438 - val_accuracy: 0.9589
Epoch 15/30
248/248 [==============================] - 32s 127ms/step - loss: 0.1543 - accuracy: 0.9776 - val_loss: 0.1310 - val_accuracy: 0.9817
Epoch 16/30
248/248 [==============================] - 31s 126ms/step - loss: 0.2269 - accuracy: 0.9720 - val_loss: 1.2158 - val_accuracy: 0.8584
Epoch 17/30
248/248 [==============================] - 32s 128ms/step - loss: 0.1476 - accuracy: 0.9771 - val_loss: 0.2541 - val_accuracy: 0.9772
Epoch 18/30
248/248 [==============================] - 33s 132ms/step - loss: 0.2217 - accuracy: 0.9710 - val_loss: 5.7592 - val_accuracy: 0.6941
Epoch 19/30
248/248 [==============================] - 32s 127ms/step - loss: 0.1599 - accuracy: 0.9754 - val_loss: 0.1691 - val_accuracy: 0.9726
Epoch 20/30
248/248 [==============================] - 32s 127ms/step - loss: 0.1280 - accuracy: 0.9781 - val_loss: 0.1678 - val_accuracy: 0.9817
Epoch 00020: ReduceLROnPlateau reducing learning rate to 3.999999898951501e-06.
Epoch 21/30
248/248 [==============================] - 32s 129ms/step - loss: 0.1343 - accuracy: 0.9800 - val_loss: 0.0997 - val_accuracy: 0.9863
Epoch 22/30
248/248 [==============================] - 32s 127ms/step - loss: 0.1105 - accuracy: 0.9846 - val_loss: 0.1129 - val_accuracy: 0.9909
Epoch 23/30
248/248 [==============================] - 31s 126ms/step - loss: 0.0728 - accuracy: 0.9860 - val_loss: 0.1252 - val_accuracy: 0.9863
Epoch 24/30
248/248 [==============================] - 33s 132ms/step - loss: 0.1155 - accuracy: 0.9816 - val_loss: 0.1112 - val_accuracy: 0.9909
Epoch 25/30
248/248 [==============================] - 31s 126ms/step - loss: 0.1066 - accuracy: 0.9833 - val_loss: 0.1101 - val_accuracy: 0.9909
Epoch 26/30
248/248 [==============================] - 32s 129ms/step - loss: 0.0935 - accuracy: 0.9813 - val_loss: 0.1086 - val_accuracy: 0.9909
Epoch 00026: ReduceLROnPlateau reducing learning rate to 7.999999979801942e-07.
Epoch 27/30
248/248 [==============================] - 33s 133ms/step - loss: 0.0873 - accuracy: 0.9864 - val_loss: 0.1137 - val_accuracy: 0.9909
Epoch 28/30
248/248 [==============================] - 32s 127ms/step - loss: 0.1407 - accuracy: 0.9810 - val_loss: 0.1155 - val_accuracy: 0.9909
Epoch 29/30
248/248 [==============================] - 32s 127ms/step - loss: 0.1072 - accuracy: 0.9866 - val_loss: 0.1150 - val_accuracy: 0.9909
Epoch 30/30
248/248 [==============================] - 31s 127ms/step - loss: 0.1200 - accuracy: 0.9796 - val_loss: 0.1157 - val_accuracy: 0.9954
28/28 [==============================] - 1s 38ms/step - loss: 0.1157 - accuracy: 0.9954
Found 2198 files belonging to 10 classes.
Using 1979 files for training.
Found 2198 files belonging to 10 classes.
Using 219 files for validation.
Epoch 1/30
124/124 [==============================] - 28s 218ms/step - loss: 2.1064 - accuracy: 0.4790 - val_loss: 3.8315 - val_accuracy: 0.1461
Epoch 2/30
124/124 [==============================] - 27s 215ms/step - loss: 0.8776 - accuracy: 0.7977 - val_loss: 0.6124 - val_accuracy: 0.8311
Epoch 3/30
124/124 [==============================] - 27s 218ms/step - loss: 0.6739 - accuracy: 0.8509 - val_loss: 1.6122 - val_accuracy: 0.7443
Epoch 4/30
124/124 [==============================] - 28s 222ms/step - loss: 0.5850 - accuracy: 0.8795 - val_loss: 1.1183 - val_accuracy: 0.7397
Epoch 5/30
124/124 [==============================] - 27s 220ms/step - loss: 0.4551 - accuracy: 0.9079 - val_loss: 0.4376 - val_accuracy: 0.9224
Epoch 6/30
124/124 [==============================] - 27s 216ms/step - loss: 0.5067 - accuracy: 0.9227 - val_loss: 0.3599 - val_accuracy: 0.9589
Epoch 7/30
124/124 [==============================] - 27s 219ms/step - loss: 0.5442 - accuracy: 0.9181 - val_loss: 1.0835 - val_accuracy: 0.8950
Epoch 8/30
124/124 [==============================] - 28s 222ms/step - loss: 0.4087 - accuracy: 0.9294 - val_loss: 4.1504 - val_accuracy: 0.6621
Epoch 9/30
124/124 [==============================] - 27s 218ms/step - loss: 0.2945 - accuracy: 0.9458 - val_loss: 2.0948 - val_accuracy: 0.8493
Epoch 10/30
124/124 [==============================] - 26s 213ms/step - loss: 0.4008 - accuracy: 0.9320 - val_loss: 0.6751 - val_accuracy: 0.9498
Epoch 11/30
124/124 [==============================] - 27s 215ms/step - loss: 0.2623 - accuracy: 0.9598 - val_loss: 2.6050 - val_accuracy: 0.7717
Epoch 00011: ReduceLROnPlateau reducing learning rate to 1.9999999494757503e-05.
Epoch 12/30
124/124 [==============================] - 27s 218ms/step - loss: 0.2186 - accuracy: 0.9644 - val_loss: 0.4407 - val_accuracy: 0.9498
Epoch 13/30
124/124 [==============================] - 27s 214ms/step - loss: 0.1547 - accuracy: 0.9745 - val_loss: 0.1928 - val_accuracy: 0.9772
Epoch 14/30
124/124 [==============================] - 27s 216ms/step - loss: 0.1412 - accuracy: 0.9785 - val_loss: 0.1382 - val_accuracy: 0.9909
Epoch 15/30
124/124 [==============================] - 26s 213ms/step - loss: 0.0843 - accuracy: 0.9848 - val_loss: 0.2400 - val_accuracy: 0.9680
Epoch 16/30
124/124 [==============================] - 26s 210ms/step - loss: 0.0903 - accuracy: 0.9820 - val_loss: 0.1940 - val_accuracy: 0.9817
Epoch 17/30
124/124 [==============================] - 27s 214ms/step - loss: 0.0695 - accuracy: 0.9870 - val_loss: 0.1345 - val_accuracy: 0.9817
Epoch 18/30
124/124 [==============================] - 27s 217ms/step - loss: 0.0765 - accuracy: 0.9814 - val_loss: 0.1305 - val_accuracy: 0.9772
Epoch 19/30
124/124 [==============================] - 28s 222ms/step - loss: 0.0662 - accuracy: 0.9850 - val_loss: 0.1530 - val_accuracy: 0.9726
Epoch 20/30
124/124 [==============================] - 27s 215ms/step - loss: 0.0631 - accuracy: 0.9872 - val_loss: 0.2796 - val_accuracy: 0.9635
Epoch 21/30
124/124 [==============================] - 27s 214ms/step - loss: 0.0702 - accuracy: 0.9884 - val_loss: 0.1475 - val_accuracy: 0.9726
Epoch 22/30
124/124 [==============================] - 27s 214ms/step - loss: 0.0402 - accuracy: 0.9918 - val_loss: 0.0820 - val_accuracy: 0.9863
Epoch 23/30
124/124 [==============================] - 27s 215ms/step - loss: 0.0885 - accuracy: 0.9864 - val_loss: 0.3081 - val_accuracy: 0.9680
Epoch 24/30
124/124 [==============================] - 28s 223ms/step - loss: 0.0931 - accuracy: 0.9890 - val_loss: 0.3009 - val_accuracy: 0.9635
Epoch 25/30
124/124 [==============================] - 27s 218ms/step - loss: 0.0709 - accuracy: 0.9869 - val_loss: 0.2513 - val_accuracy: 0.9589
Epoch 26/30
124/124 [==============================] - 26s 213ms/step - loss: 0.0858 - accuracy: 0.9866 - val_loss: 0.2553 - val_accuracy: 0.9817
Epoch 27/30
124/124 [==============================] - 26s 210ms/step - loss: 0.0634 - accuracy: 0.9872 - val_loss: 0.2556 - val_accuracy: 0.9635
Epoch 00027: ReduceLROnPlateau reducing learning rate to 3.999999898951501e-06.
Epoch 28/30
124/124 [==============================] - 26s 209ms/step - loss: 0.0677 - accuracy: 0.9895 - val_loss: 0.1815 - val_accuracy: 0.9772
Epoch 29/30
124/124 [==============================] - 26s 208ms/step - loss: 0.0476 - accuracy: 0.9841 - val_loss: 0.1988 - val_accuracy: 0.9817
Epoch 30/30
124/124 [==============================] - 26s 212ms/step - loss: 0.0292 - accuracy: 0.9941 - val_loss: 0.1808 - val_accuracy: 0.9817
14/14 [==============================] - 1s 62ms/step - loss: 0.1808 - accuracy: 0.9817
Found 2198 files belonging to 10 classes.
Using 1979 files for training.
Found 2198 files belonging to 10 classes.
Using 219 files for validation.
Epoch 1/30
62/62 [==============================] - 26s 412ms/step - loss: 2.2331 - accuracy: 0.4484 - val_loss: 5.4461 - val_accuracy: 0.1416
Epoch 2/30
62/62 [==============================] - 26s 412ms/step - loss: 0.7845 - accuracy: 0.7727 - val_loss: 4.0120 - val_accuracy: 0.1553
Epoch 3/30
62/62 [==============================] - 26s 410ms/step - loss: 0.6508 - accuracy: 0.8313 - val_loss: 1.5659 - val_accuracy: 0.2922
Epoch 4/30
62/62 [==============================] - 26s 411ms/step - loss: 0.4535 - accuracy: 0.8875 - val_loss: 0.5283 - val_accuracy: 0.8219
Epoch 5/30
62/62 [==============================] - 26s 411ms/step - loss: 0.4256 - accuracy: 0.9066 - val_loss: 0.3807 - val_accuracy: 0.8767
Epoch 6/30
62/62 [==============================] - 25s 410ms/step - loss: 0.5040 - accuracy: 0.9077 - val_loss: 4.2263 - val_accuracy: 0.4977
Epoch 7/30
62/62 [==============================] - 25s 407ms/step - loss: 0.2518 - accuracy: 0.9388 - val_loss: 0.4334 - val_accuracy: 0.9178
Epoch 8/30
62/62 [==============================] - 25s 402ms/step - loss: 0.2725 - accuracy: 0.9453 - val_loss: 1.2326 - val_accuracy: 0.8311
Epoch 9/30
62/62 [==============================] - 26s 416ms/step - loss: 0.3540 - accuracy: 0.9382 - val_loss: 1.1825 - val_accuracy: 0.7763
Epoch 10/30
62/62 [==============================] - 26s 425ms/step - loss: 0.1845 - accuracy: 0.9667 - val_loss: 0.3120 - val_accuracy: 0.9543
Epoch 11/30
62/62 [==============================] - 25s 408ms/step - loss: 0.1510 - accuracy: 0.9700 - val_loss: 3.5096 - val_accuracy: 0.6301
Epoch 12/30
62/62 [==============================] - 26s 414ms/step - loss: 0.2343 - accuracy: 0.9568 - val_loss: 0.2914 - val_accuracy: 0.9269
Epoch 13/30
62/62 [==============================] - 26s 412ms/step - loss: 0.1025 - accuracy: 0.9793 - val_loss: 0.4985 - val_accuracy: 0.9589
Epoch 14/30
62/62 [==============================] - 26s 420ms/step - loss: 0.0903 - accuracy: 0.9811 - val_loss: 6.7767 - val_accuracy: 0.5023
Epoch 15/30
62/62 [==============================] - 26s 411ms/step - loss: 0.1643 - accuracy: 0.9673 - val_loss: 0.1805 - val_accuracy: 0.9635
Epoch 16/30
62/62 [==============================] - 26s 418ms/step - loss: 0.1867 - accuracy: 0.9786 - val_loss: 0.2266 - val_accuracy: 0.9406
Epoch 17/30
62/62 [==============================] - 26s 418ms/step - loss: 0.3070 - accuracy: 0.9721 - val_loss: 0.2483 - val_accuracy: 0.9680
Epoch 18/30
62/62 [==============================] - 26s 410ms/step - loss: 0.1277 - accuracy: 0.9812 - val_loss: 1.1634 - val_accuracy: 0.8721
Epoch 19/30
62/62 [==============================] - 25s 409ms/step - loss: 0.1572 - accuracy: 0.9746 - val_loss: 0.2259 - val_accuracy: 0.9726
Epoch 20/30
62/62 [==============================] - 25s 407ms/step - loss: 0.1158 - accuracy: 0.9781 - val_loss: 8.5579 - val_accuracy: 0.6256
Epoch 00020: ReduceLROnPlateau reducing learning rate to 1.9999999494757503e-05.
Epoch 21/30
62/62 [==============================] - 25s 410ms/step - loss: 0.1244 - accuracy: 0.9859 - val_loss: 0.2911 - val_accuracy: 0.9817
Epoch 22/30
62/62 [==============================] - 26s 417ms/step - loss: 0.0489 - accuracy: 0.9904 - val_loss: 0.2291 - val_accuracy: 0.9772
Epoch 23/30
62/62 [==============================] - 25s 407ms/step - loss: 0.0242 - accuracy: 0.9885 - val_loss: 0.1802 - val_accuracy: 0.9863
Epoch 24/30
62/62 [==============================] - 26s 416ms/step - loss: 0.0684 - accuracy: 0.9912 - val_loss: 0.1144 - val_accuracy: 0.9817
Epoch 25/30
62/62 [==============================] - 26s 418ms/step - loss: 0.0268 - accuracy: 0.9897 - val_loss: 0.1111 - val_accuracy: 0.9726
Epoch 26/30
62/62 [==============================] - 26s 418ms/step - loss: 0.0294 - accuracy: 0.9960 - val_loss: 0.1103 - val_accuracy: 0.9817
Epoch 27/30
62/62 [==============================] - 25s 407ms/step - loss: 0.0345 - accuracy: 0.9933 - val_loss: 0.1100 - val_accuracy: 0.9863
Epoch 28/30
62/62 [==============================] - 26s 416ms/step - loss: 0.0254 - accuracy: 0.9908 - val_loss: 0.1861 - val_accuracy: 0.9726
Epoch 29/30
62/62 [==============================] - 25s 408ms/step - loss: 0.0467 - accuracy: 0.9886 - val_loss: 0.1448 - val_accuracy: 0.9817
Epoch 30/30
62/62 [==============================] - 26s 415ms/step - loss: 0.0406 - accuracy: 0.9907 - val_loss: 0.1406 - val_accuracy: 0.9772
7/7 [==============================] - 1s 116ms/step - loss: 0.1406 - accuracy: 0.9772
0
안녕하십니까,
학습이 제대로 되었다고 보기 힘들 정도로 Validation이 심하게 왔다갔다 하는 군요.
이 정도 오버피팅이면 현실적으로는 나오기 어려울 정도입니다. 뭔가 Validation data 만들때 특정 label들에 대해서 labeling을 잘못한건 아닌지 의심이 드는 군요.
추가적으로, 전체 클래스가 몇개 인지요? 그러니까 클래스가 10개 인데, validation이 200장인지, 아님 클래스가 100개 인데 validation이 200장인지 궁금하군요. 후자의 경우에는 잘못되면 metric/loss가 널뛰기를 할 수 있습니다.
이렇게 한번 해보시지요. 먼저 batch size는 16정도로 고정하시고요.
1. Validation 데이터가 제대로 나뉘어 졌는지, Labelling을 제대로 작업 되었는지 확인
2. 1이 잘 되어 있으면, 검증을 학습 데이터의 40% 정도 할당해서 재 학습후 성능 모니터링.
1, 2번 해보시고, 내용 업데이트 부탁드립니다.