본문 바로가기
머신러닝-딥러닝/Kaggle

CNN 성능 향상시키기 (6시차-review)

by 복복씨 2020. 12. 22.

1.target size

-즉 이미지 사이즈인데, 이미지 사이즈가 작아질수록 손실이 생긴다. 당연하겠지 

 

2.batch_size

-이미지 target_size가 커지면 메모리 소모량이 크기때문에 batch_size를 줄여준다.


3.모델바꾸기

-EfficientNetB0이라고 하면 B1~ 점차 숫자를 늘려준다


4.augmentation

-좌우위치도 영향이 감. 만약 개가 오른쪽에만 있다면? 학습할 때 우리 모델은 '개'라는 것은 오른쪽에만 있구나! 하고 인식하겠지, 


-평가를 할때에도 어그멘테이션이 필요한가?  ㄴㄴ

test나 valid 에서는 필요없지, 시간만 낭비니까 
-크롭도있음. 크롭해서 주변인들을 없애는거야 ^^


5.learning rate

from tensorflow.keras.callbacks import EarlyStopping,ModelCheckpoint,ReduceLROnPlateau
es=EarlyStopping(patience=3,verbose=1)
mc=ModelCheckpoint('best.h5',save_best_only=True)
rl=ReduceLROnPlateau(patience=2)


#adam은 기본 학습률 0.001


early stopping
-val loss 내려갈 수록 좋음.
-global optimum 값에 가까이 가면 가까이갈수록, val_loss가  줄어든다. 그걸 인식해서 learning rate를 변경해준다.
-patience (3,5,10~ 설정)해서 참아준다. 

 

ReduceLROnPlateau
어느정도 점수개선이 됐을때는 러닝레이트가 커서 최적의 지점을 찾기 어렵기 때문에 , 러닝레이트를 한번은 줄여줘야됨
EarlyStopping보다 Patience 작게 (멈추면 안되니까)

 

ModelChe ModelCheckpoint
-h5는 가중치를 저장할수있는 확장자.
-save_best_only=True  #가장 best였던 확장자를 저장해주는것임


6. optimizer 


SGD(momentum, nesterov_)

aikorea.org/cs231n/neural-networks-3/#sgd

 

CS231n Convolutional Neural Networks for Visual Recognition

Table of Contents: Learning 이전 섹션들에서는 레이어를 몇 층 쌓고 레이어별로 몇 개의 유닛을 준비할지(newwork connectivity), 데이터를 어떻게 준비하고 어떤 손실 함수(loss function)를 선택할지 논하였다.

aikorea.org

from tensorlfow.keras.optimizers import SGD

거의 adam 이 좋지만 개,고양이는 SGD가 낫다


7. 교차검증

-딥러닝은 머신러닝과 다르게 값이 튐........ !!(안정적이지 않고, 시도마다 다르게 나온다는 뜻)

k-fold 교차검증으로 안정적으로 나올 수 있음
모든 값을 사용함으로써 !

'머신러닝-딥러닝 > Kaggle' 카테고리의 다른 글

1주차 머신러닝  (0) 2021.01.22
9주차 review  (0) 2021.01.14
7주차 review  (0) 2020.12.28
5주차 과제_정리 #axis, #state_farm(kaggle)  (0) 2020.12.22
개vs고양이 분류기 만들기(간편.ver)  (0) 2020.12.21