250x250
반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 공분산
- grad-cam
- GCP
- BigQuery
- Counterfactual Explanations
- integrated gradient
- Airflow
- Retry
- chatGPT
- gather_nd
- correlation
- flask
- spark udf
- hadoop
- 유튜브 API
- UDF
- tensorflow text
- API
- subdag
- GenericGBQException
- TensorFlow
- session 유지
- airflow subdag
- API Gateway
- 상관관계
- youtube data
- login crawling
- XAI
- top_k
- requests
Archives
- Today
- Total
데이터과학 삼학년
tf.keras.callbacks.LearningRateScheduler 본문
반응형
딥러닝에서 가장 튜닝하기 까다로운(?) 하이퍼 파라미터 중 하나는 learning rate 이다.
Train 단계에서
learning rate를 직접 설정하기 보다 epoch의 정도나 epoch의 조건에 따라 learning rate를 자동으로 조절하여 학습시킬 수 있는 방법이 있다.
기본적으로 적용방법은 아래와 같이 만들어 model.fit의 callback에 넣어주면 된다.
tf.keras.callbacks.LearningRateScheduler(
schedule, verbose=0
)
예시
lr_decay_cb = tf.keras.callbacks.LearningRateScheduler(
lambda epoch: args.learning_rate + 0.02 * (0.5 ** (1 + epoch)),
verbose=True)
# Setup TensorBoard callback.
tensorboard_cb = tf.keras.callbacks.TensorBoard(
os.path.join(args.job_dir, 'keras_tensorboard'),
histogram_freq=1)
# Train model
keras_model.fit(
training_dataset,
steps_per_epoch=int(num_train_examples / args.batch_size),
epochs=args.num_epochs,
validation_data=validation_dataset,
validation_steps=1,
verbose=1,
callbacks=[EarlyStopping(patience=args.patience), lr_decay_cb, tensorboard_cb])
아래 예시는 epoch 10까지는 learning rate 0.001 로 유지하다가 그 이후 점차적으로 learing rate을 줄이는 방법을 적용한 것이다.
# This function keeps the learning rate at 0.001 for the first ten epochs
# and decreases it exponentially after that.
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))
아래 예시는 기본적으로 사용자가 설정한 learning rate을 유지하되, 설정한 epoch 이 작다면 사용자가 설정한 learning rate보다 좀 더 작게 설정하는 방법이다.
lr_decay_cb = tf.keras.callbacks.LearningRateScheduler(
lambda epoch: args.learning_rate + 0.02 * (0.5 ** (1 + epoch)),
verbose=True)
tf.keras.callbacks.LearningRateScheduler
728x90
반응형
LIST
'Machine Learning' 카테고리의 다른 글
[TF 2.x] tf.keras prediction 결과 custom하기(feat. GCP ai-platform) (0) | 2020.07.08 |
---|---|
Text classification using GCP ai-platform (0) | 2020.06.26 |
Speech to text (Speech Recognition API and PyAudio library) (0) | 2020.06.18 |
Sequence Model (RNN, LSTM) (0) | 2020.06.02 |
Going Faster and Deeper (0) | 2020.06.02 |
Comments