compile, fit, callback

yeoni·2023년 6월 27일
0

Tensorflow

목록 보기
10/15

fit 함수 사용

model.compile()model.fit()\Large{ model.compile() \rightarrow model.fit() }

compile의 입력값

  • optimizer='rmsprop' : Optimizer
  • loss=None : Loss function
  • metrics=None : Metrics
  • loss_weights=None : loss가 여러 개인 경우 각 로스마다 다르게 중요도를 설정 할 수 있다.
learning_rate = 0.03
opt = tf.keras.optimizers.Adam(learning_rate)
loss = tf.keras.losses.categorical_crossentropy

model.compile(optimizer=opt, loss=loss, metrics=["accuracy"])

# custom loss
def custom_loss(y_true, y_pred): #정답, 예측치 순서
    return tf.reduce_mean(tf.square(y_true - y_pred))
model.compile(optimizer=opt, loss=custom_loss, metrics=["accuracy"])


#여러 개의 Loss
model.compile(optimizer=opt, loss=[loss, custom_loss], metrics=["accuracy"])


#여러 개의 Loss + loss weights -> 학습 중요도
model.compile(optimizer=opt, loss=[loss, custom_loss], loss_weights=[0.7, 0.3], metrics=["accuracy"])


loss = "categorical_crossentropy" # 이렇게 텍스트로 가능한 함수도 있음.
model.compile(optimizer=opt, loss=loss, metrics=["accuracy"])


acc = tf.keras.metrics.Accuracy()
auc = tf.keras.metrics.AUC()
model.compile(optimizer=opt, loss=loss, metrics=[acc, auc])


# custom metrics
def custom_metric(y_true, y_pred):

    true = tf.argmax(y_true, axis=-1)
    pred = tf.argmax(y_pred, axis=-1)

    return tf.reduce_sum(tf.cast(tf.equal(y_true, y_pred), tf.int32))
model.compile(optimizer=opt, loss=loss, metrics=[custom_metric])
model.compile(optimizer=opt, loss=loss, metrics=["accuracy", custom_metric])

fit의 입력값

  • x=None
  • y=None
  • batch_size=None
  • epochs=1
  • verbose='auto' : 학습과정 출력문의 모드
  • callbacks=None : Callback 함수
  • validation_split=0.0 : 입력데이터의 일정 부분을 Validation 용 데이터로 사용함
  • validation_data=None : Validation 용 데이터
  • shuffle=True : 입력값을 Epoch 마다 섞는다. default
  • class_weight=None : 클래스 별로 다른 중요도를 설정한다. 등
hist = model.fit(train_x,
                 train_y,
                 epochs=1,
                 batch_size=128,
                 validation_split=0.3,
                 verbose=1
                )

Callback 함수 활용하기

  • Callback 함수를 활용하면, fit() 함수가 돌아가는 와중에도 특정한 주기로 원하는 코드를 실행 시킬 수 있음.
    ex> 학습이 진행되면, Learning rate를 점점 줄여서 더 세밀하게 모델의 웨이트가 조정 될 수 있도록 하고 싶다.
def scheduler(epoch, lr):
    if epoch > 10:
        return lr * (0.9**(epoch - 10))
    else:
        return lr

lr_scheduler = tf.keras.callbacks.LearningRateScheduler(scheduler)

hist = model.fit(train_x,
                 train_y,
                 epochs=1,
                 batch_size=128,
                 validation_split=0.3,
                 verbose=1,
                 callbacks=[lr_scheduler],
                )
                
tf.keras.callbacks.EarlyStopping #조건만족시 스탑
tf.keras.callbacks.History

Reference
1) 제로베이스 데이터스쿨 강의자료

profile
데이터 사이언스 / just do it

0개의 댓글