[Keras] EarlyStopping 및 Model 저장하기
2020. 11. 21. 21:11ㆍ분석 Python/Tensorflow
리마인드 한다는 개념으로 해보고 있다.
torch를 하다가 keras를 하니까 좀 편한 것 같기도 하다 ㅎㅎㅎ
from keras.callbacks import EarlyStopping
from keras.callbacks import ModelCheckpoint
아래와 같이 EarlyStopping과 ModelCheckpoint를 어떤 것을 모니터링할지를 설정한다.
es = EarlyStopping(monitor='accuracy', mode='max', verbose=1, patience=500)
mc = ModelCheckpoint('best_model.h5', monitor='accuracy', mode='max', save_best_only=True)
모델을 어떻게든 원하는대로 만든다.
이때 compile에서 metrics에 들어가는 것이 바로 EarlyStopping과 ModelCheckpoint의 기준이 된다.
이름을 맞춰주는 것이 중요하다.
model = Sequential()
model.add(Dense(1, input_dim = input_dim,kernel_initializer='lecun_normal'))
model.add(Activation("sigmoid"))
adam = optimizers.Adam(learning_rate=1e-5)
model.compile(loss = keras.losses.BinaryCrossentropy(label_smoothing = 0.0),
optimizer = adam, metrics =['accuracy'])
그다음에 돌려준다!
callbacks에 위에서 만든 mc,es 를 넣어주면 알아서 저장!
주의 사항은 학습이 끝난 모델은 학습이 끝난 시점의 모델이라는 것이다.
history = model.fit(train,
train_y,
callbacks=[es,mc]
)
그러므로 학습이 끝나면 최종 모델을 불러온다.
model.load_weights("./best_model.h5")
끝
728x90
'분석 Python > Tensorflow' 카테고리의 다른 글
tensorflow, keras) 정형 데이터를 이용하여 모델 만들기 (0) | 2022.01.08 |
---|---|
[Keras] Weighted Cross Entropy 적용하는 방법 (0) | 2020.11.21 |
Mixture Density NeuralNetwork 예제 (0) | 2020.05.21 |
tf.layers.dense 알아보기 (tf.tensordot ,tf.matmul) (0) | 2020.04.24 |
Learning from Multimodal Target 리뷰 (MDN)(Tensorflow) (0) | 2020.04.19 |