반응형

프로그램 8-7 DenseNet121로 견종 인식하기
처음 실행하니 CPU로만 실행하여 처리시간이 너무 오래 걸려 Epoch 1/200을 출력하지도 못할 것 같았다.
내 컴퓨터에는 GPU가 내장되어 있으므로 GPU를 사용하기로 하였다.
GPU를 사용하기 위해서는 지금까지 사용하던 tensorflow 버전으로는 동작을 하지 않아 버전을 2.10으로 downgrade 하였으며, 그에 따라 CUDA 버전도 11.8, cuDNN 버전도 8.6.0으로 변경을 하였다.

작업관리자를 띄워서 성능을 보면 위 그림과 같이 GPU 사용률은 1% 밖에 되지 않는데, 전용 GPU/메모리가 3.1/4.0GB로 사용량이 높고, GPU 온도가 92도까지 올라가기도 한다. 처음에는 89도에서 92도까지 변화되어 선풍기로 냉각을 시키고, 에어컨도 틀어주었다. 그랬더니 GPU 온도가 84도까지 떨어져서 그래도 안정된 것 같다.

위 그림을 보면 Epoch를 한번 수행하는데 740초가량이 소요되어 13분 정도 시간이 걸린다. 200/200까지 수행하려면 12분 20초 * 200 = 2467분 = 41시간이 소요될 것으로 예측이 되므로 도저히 어려울 것 같다.
다행히 Epoch가 증가할수록 정확도가 개선되고 있으며 8/200에서는 27.43%까지 올라간 것을 확인할 수가 있었다.
4116/4116 - 735s - loss: 4.1016 - accuracy: 0.1104 - val_loss: 3.5437 - val_accuracy: 0.3027 - 735s/epoch - 179ms/step
Epoch 10/200
4116/4116 - 735s - loss: 3.9944 - accuracy: 0.1271 - val_loss: 3.3806 - val_accuracy: 0.3370 - 735s/epoch - 179ms/step
Epoch 11/200
4116/4116 - 743s - loss: 3.9041 - accuracy: 0.1416 - val_loss: 3.2306 - val_accuracy: 0.3695 - 743s/epoch - 181ms/step
Epoch 12/200
4116/4116 - 734s - loss: 3.8290 - accuracy: 0.1573 - val_loss: 3.0833 - val_accuracy: 0.3953 - 734s/epoch - 178ms/step
Epoch 13/200
4116/4116 - 740s - loss: 3.7360 - accuracy: 0.1676 - val_loss: 2.9486 - val_accuracy: 0.4191 - 740s/epoch - 180ms/step
Epoch 14/200
4116/4116 - 742s - loss: 3.6363 - accuracy: 0.1840 - val_loss: 2.8093 - val_accuracy: 0.4385 - 742s/epoch - 180ms/step
Epoch 15/200
4116/4116 - 743s - loss: 3.5539 - accuracy: 0.2006 - val_loss: 2.6805 - val_accuracy: 0.4546 - 743s/epoch - 180ms/step
Epoch 16/200
4116/4116 - 737s - loss: 3.4811 - accuracy: 0.2161 - val_loss: 2.5578 - val_accuracy: 0.4704 - 737s/epoch - 179ms/step
Epoch 17/200
4116/4116 - 1785s - loss: 3.4074 - accuracy: 0.2256 - val_loss: 2.4417 - val_accuracy: 0.4864 - 1785s/epoch - 434ms/step
Epoch 18/200
4116/4116 - 727s - loss: 3.3276 - accuracy: 0.2354 - val_loss: 2.3386 - val_accuracy: 0.5032 - 727s/epoch - 177ms/step
Epoch 19/200
4116/4116 - 726s - loss: 3.2528 - accuracy: 0.2499 - val_loss: 2.2391 - val_accuracy: 0.5155 - 726s/epoch - 176ms/step
Epoch 20/200
4116/4116 - 729s - loss: 3.1741 - accuracy: 0.2647 - val_loss: 2.1461 - val_accuracy: 0.5338 - 729s/epoch - 177ms/step
Epoch 21/200
4116/4116 - 729s - loss: 3.1237 - accuracy: 0.2739 - val_loss: 2.0590 - val_accuracy: 0.5420 - 729s/epoch - 177ms/step
Epoch 22/200
4116/4116 - 729s - loss: 3.0502 - accuracy: 0.2894 - val_loss: 1.9787 - val_accuracy: 0.5547 - 729s/epoch - 177ms/step
Epoch 23/200
4116/4116 - 732s - loss: 2.9809 - accuracy: 0.2958 - val_loss: 1.9031 - val_accuracy: 0.5695 - 732s/epoch - 178ms/step
Epoch 24/200
4116/4116 - 729s - loss: 2.9353 - accuracy: 0.3001 - val_loss: 1.8319 - val_accuracy: 0.5739 - 729s/epoch - 177ms/step
Epoch 25/200
4116/4116 - 728s - loss: 2.8716 - accuracy: 0.3179 - val_loss: 1.7644 - val_accuracy: 0.5884 - 728s/epoch - 177ms/step
Epoch 26/200
4116/4116 - 851s - loss: 2.8193 - accuracy: 0.3277 - val_loss: 1.7095 - val_accuracy: 0.6018 - 851s/epoch - 207ms/step
Epoch 27/200
4116/4116 - 746s - loss: 2.7599 - accuracy: 0.3376 - val_loss: 1.6465 - val_accuracy: 0.6122 - 746s/epoch - 181ms/step
Epoch 28/200
시간이 너무 많이 걸려 도중에 중단을 하였다. Epoch 27/200까지 정확도가 61.22%가 되었다.

반응형
Posted by 세상을 살아가는 사람
,