코드

Pre-trained Resnet with CIFAR-10(Transfer Learning) 2탄

gmlee729 2024. 12. 28. 12:59

코드(깃허브)

https://github.com/LGMpr/Pre-trained-Resnet-with-CIFAR-10-Transfer-Learning-/blob/main/aa

 

Base(epoch 10)

1. train 85.9%, test 82.7%    

** epoch 100짜리는 test 85.3%

 

 

Learning Scheduler(CosineAnnealingLR) (New mod1)

1. train 84.1%, test 80.4% 

2. 해석 : Batch문에 넣다보니 너무 빠르게  아닐까. epoch별로 넣어보기. 그리고 사실 만든 이유를 고려하면 epoch 10 정도에서 유의미한 효과를 얻기는 어려울 것.

3. epoch별로 넣었을때(mod1.1) : train 85.9%, test 82.5%

4. Base랑 거의 차이가 없음. 위 생각처럼 epoch이 커져야 효과가 있을듯. epoch 10에서는 거의 안넣은거나 다름없음

 

 

이제 뭘 할수 있는지 ChatGPT에게 도움을...

 

weight_decay=1e-4(mod2)

1. train 86.6%, test 82.3% 

2. 해석 : epoch이 작기때문에 유의미한 변동은 없음

 

 

Pretrained 모델 사용 시 BatchNorm 동결(mod3)

1. train 86.3%, test 82.2% 

2. 해석 : epoch이 작기때문에 유의미한 변동은 없음

 

 

epoch 100(final)

1. train 98.7%, test 84.7% 

2. 해석 : 지난 epoch 100보다 test가 안좋아졌다......

             성과라면 epoch 50정도에서 learning curve 거의 수평(train 96정도). epoch 30정도면 유의미한 결과 볼듯

             특이점은 loss가 유의미하게 낮았음(0.18, 0.03)

3. epoch 25에서 train 94%

 

불만족스러운 결과지만 고효율이 필요한 내 상황 대비 너무 많은 시간과 노력이 들어가고 있기에 일단 여기까지만 

이런 식으로 하면 된다! 는 확실히 알았음. 이제 다시 이론과 논문으로 돌아가서 연구!

 

마지막 미련으로 pretrained를 풀고 해봤다. epoch 30에서 train 77% test 73%로 눈에 띄게 안좋음