Practice makes perfect!

[모두의 딥러닝] 14장 베스트 모델 만들기 본문

Study/딥러닝

[모두의 딥러닝] 14장 베스트 모델 만들기

na0dev 2021. 5. 30. 12:10
# 데이터 입력
df_pre = pd.read_csv('../dataset/wine.csv', header=None)

# sample()는 원본 데이터에서 정해진 비율만큼 랜덤으로 뽑아오는 함수.
# frac=1은 100%
df = df_pre.sample(frac=1)  

# 모델 업데이트

  모델 저장 폴더 설정 (에포크마다 모델의 정확도를 저장할 폴더)

MODEL_DIR = './model/'
if not os.path.exists(MODEL_DIR): # 폴더가 존재하지 않으면
   os.mkdir(MODEL_DIR) # 이 이름의 폴더 생성

# checkpointer에 모니터할 값 지정
  val_loss : 테스트 오차(케라스 내부에서 기록되는 값)
  모델이 저장될 곳 : 위에서 생성한 modelpath
  verbose가 1이면 해당함수 진행사항 출력, 0이면 출력 안함.
  save_best_only=True 로 하면 테스트 오차(var_loss)를 실행한 결과값이 향상됐을 때만 저장함

checkpointer = ModelCheckpoint(filepath=modelpath, monitor='val_loss', verbose=1, save_best_only=True)

# 모델 실행 및 저장
 모델을 학습할 때마다 checkpointer의 값을 받아 지정된 곳에 모델 저장

 validation_split : 불러온 샘플 중 20%를 테스트셋으로 사용

 batch_size는 한번 딥러닝 가동될 때 입력하는 크기

model.fit(X, Y, validation_split=0.2, epochs=200, batch_size=200, verbose=0, callbacks=[checkpointer])

학습 자동 중단

- 학습이 진행될수록 학습셋의 정확도는 올라가지만 과적합 때문에 테스트셋의 실험 결과는 점점 나빠지는 것을 확인할 수 있음

- EarlyStopping() 함수를 이용해 테스트셋 오차가 줄지 않으면 학습을 멈추도록 함.

 

# 자동 중단 설정
  patience : 테스트 오차가 좋아지지 않아도 100번까지는 기다림

early_stopping_callback = EarlyStopping(monitor='val_loss', patience=100)

# 모델 실행
model.fit(X, Y, validation_split=0.2, epochs=2000, batch_size=500, callbacks=[early_stopping_callback])

에포크를 2000으로 설정했지만 그 전에 멈추는 것을 확인할 수 있음.

 

 

 

반응형
Comments