코드

MNIST 홀짝분류 코드 구현 및 분석(pytorch)

gmlee729 2024. 12. 4. 19:38

 

 

1. 데이터

  - MNIST     * from torchvision. 28 x 28 image

  - batch size : 64

  - shuffle : True

  - Normalize : (0.5, 0.5)

 

2. 기본 모델

  fc1 fc2 fc3
layer 784, 128 128, 64 64, 1
actviation relu relu sigmoid

  - lr : 0.001

  - loss : BCELoss

  - optimizer : Adam

  - epoch : 2     ## GPU 미사용 했으므로 연산시간을 짧게 하기위해

 

3. 측정 지표

  - train loss/accuracy

  - test loss/accuracy

    * 가장 중요한건 test accuracy

 

4. 실험 결과

 

(기본모델 3회) loss, acc 거의 유사(0.02 이하) 그나마 중간인 base2을 기준으로

 

(lr 변경) 기본 모델이 제일 좋음.. 그러나 0.0001 모델은 아직 학습중인 것으로 보임

 

(layer, perceptron 변경) 레이어 늘리면 오히려 안좋음. 그 외에는 큰 차이 없음
(opt, loss, cnn) CNN 눈에 띔. SGD는 그냥 안좋음. CE Loss는 유사한 종류다보니 결과도 유사한듯

 

 

5. 결론/느낀점

  가. CNN, Adam의 성능 확인

  나. 신뢰도가 높지는 않음. 이런걸 해봤다 정도. 나중에 수준이 높아지면 뭐가 문제였는지 알 수 있겠지

      1) epoch 수가 작다보니 신뢰도가 100%는 아님. 대략적인 느낌만 알 수 있음

          * 지금은 이리저리 찾는 걸로 많은 시간을 소모하므로 시행착오를 많이 겪는게 우선임

          * 좀 더 숙달되면 코랩 GPU 활용해서 돌려보기

      2) dropout이나 BN, initialization, augmentation 같은 방법 미사용

  다. 기록.. 중요하다. 10월에 돌려본걸 리뷰로 쓰려니 정확히 기억을 못함 ㅠㅠ

  라. 발전시킬 것 : epoch 수 늘리기, GPU 활용, 퍼셉트론/레이어 이상적인 숫자를 구하는 방법은?