Deep learning

Learning rate scheduler

비비이잉 2021. 7. 1. 11:41
반응형

train 단계에서 learning rate 를 직접 설정하기 보다 epoch의 조건에 따라 learning rate 를 자동으로 조절하여 학습시킬 수 있는 방법

 

Learning rate scheduler - lr changes at the beginning of current epoch

 

ReduceLROnPlateau - lr changes at the end of previous epoch

 

 

def scheduler(epoch):
	if epoch<10:
		return 0.001
	else:
		return 0.001 * tf.math.exp(0.1 *(10-epoch))

callback = tf.keras.callbacks.LearningRateScheduler(scheduler)
model.fit(data,labels,epochs=100, callbacks=[callback],
						validation_data=val_data, val_labels))

	#epoch10까지는 learning rate를 0.001까지로 유지하다가 그 이후 점차적으로 learnig rate를
	#줄이는 방법을 적용한 예시이다.
lr_decay_cb = tf.keras.callbacks.LearningRateScheduler(
		lamda epoch: args.learning_rate + 0.02 *(0.5 **(1+epoch)), 
		verbose = True)
# 기본적으로 사용자가 설정한 learning rate 를 유지하되 설정한 epoch가 작다면 사용자가 설정한
# learning rate 보다 더 작게 설정하는 방법이다. 

 

 

tf.keras.callbacks.ReduceLROnPlateau

tf.keras.callbacks.ReduceLROnPlateau(
    monitor='val_loss', factor=0.1, patience=10, verbose=0,
    mode='auto', min_delta=0.0001, cooldown=0, min_lr=0, **kwargs
)

 

 

 

 

 

tf.keras.callbacks.LearningRateScheduler

https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/ReduceLROnPlateau

tf.keras.callbacks.LearningRateScheduler(
    schedule, verbose=0
)

#schedule은 함수이다 내가 짜줘야하는 것 

 

https://tykimos.github.io/2017/03/08/CNN_Getting_Started/

반응형

'Deep learning' 카테고리의 다른 글

SMOTE for imbalanced image dataset  (0) 2021.08.13
GAN(Generative Adversarial Network)  (0) 2021.08.06
Model Performance Measure  (0) 2021.07.23
Imbalanced data  (0) 2021.07.23
Transfer Learning  (0) 2021.07.23