미래연구소 10주차

김지민·2021년 9월 17일
0
  1. 모델 저장하기
    model의 architecture 와 model의 weight 값들을 저장하는 것

model.save('my_model.h5') 모델 전체를 저장하면 나중에 predit만 할 수 있다.
=>
from tensorflow.keras.models import load_model
new_model = load_model('my_model.h5')

model의 architecture 저장
json_string = model.to_json()
=>
from tensorflow.keras.models import model_from_json
model_json = model_from_json(json_string)

weight만 저장
model.save_weights('my_model_weights.h5')
=>
model.load_weights('my_model_weights.h5')

2.Callback
어떤 함수가 실행 완료되고 나서 실행되는 함수 / 결과에 따라 호출되는 함수

-ModelCheckpoint

from tensorflow.keras.callbacks import ModelCheckpoint

checkpoint_path = "training_1/cp.ckpt"
checkpoint_dir = os.path.dirname(checkpoint_path)
cp_callback = ModelCheckpoint(checkpoint_path, save_weights_only=True, verbose=1)

model.fit(x, y, epochs = 2, validation_split = 1/6, callbacks = [cp_callback]) 으로 직접 callback을 사용할 수 있음

-EarlyStopping

from tensorflow.keras.callbacks import EarlyStopping
es = EarlyStopping(monitor='val_loss', patience=2) //patience:숫자 만큼 epoch이 변하지 개선되지 않으면 멈춘다. (2로 설정시, 2연속 val_loss가 증가하면 train 중지)
model = create_model()

history = model.fit(x, y, epochs = 20, validation_split = 1/6,callbacks = [es], batch_size= 512)

-Learning Rate Scheduler

epoch의 값에 따라 learning_rate가 변하는 함수를 만든다

def my_schedule(epoch, learning_rate=lr):
if epoch < 5:
return lr
else:
return float(lr tf.math.exp(0.1 (5- epoch)))

lr_schedule_custom = LearningRateScheduler(my_schedule)
callback으로 사용 가능

-ReduceLRonPlateau

reduce_lr = ReduceLROnPlateau(monitor='val_loss', factor=0.1, patience=2, verbose=1)
model.fit(x, y, epochs = 20, validation_split = 1/6, callbacks = [lr_schedule_custom, reduce_lr], batch_size=512, shuffle=False)

3.Hyperparameter Tuning

  • model은
    layers, units의 개수로 튜닝 할 수 있다.

  • optimization은
    -underfit일때 optimizer을 adam으로 , learning rate 수정
    -overfit일때 L2 coefficients 수정, dropout 0.1~0.5, batch_size는 2의 거듭제곱으로 설정. 사이즈가 클수록 속도가 빠름. eopch으로 early stopping을 일으킨다.

0개의 댓글