멋사 ai 스쿨 TIL - (36) tensorflow 실습_0901

eve·2022년 11월 30일
0

likeLion

목록 보기
36/45
  1. callback
  • verbose=0을 모델 옵션에 넣어주면 로그 출력을 하지 않는다.
  • 출력 함수가 sigmoid일 때, 특정 임계값을 정하면 크고 작다는 기준을 갖게 될 수 있으므로 True, False 값으로 판단한다.
  • 임계값은 보통 0.5를 사용하지만, 다른 값을 사용하기도 한다.
  1. modeling
  • dropout()은 작성 시 해당 코드라인 기준 위의 코드들에 모두 적용된다.
  • 대부분의 경우, 마지막 출력층의 Dense는 유닛값을 1로 갖게 된다.
# tf.keras.models.Sequential로 입력-히든-출력(sigmoid) 레이어로 구성
model = tf.keras.models.Sequential([
        tf.keras.layers.Dense(units=128, input_shape=[input_shape]),
        tf.keras.layers.Dense(128, activation='selu'),
        tf.keras.layers.Dropout(0.2),
        tf.keras.layers.Dense(1, activation='sigmoid')
])
  1. 기타 함수들
    1) 정형데이터 입력층 input_shape
    2) 정규화 레이어의 사용 => 직접 정규화해도 됩니다.
    3) 출력층이 분류와 다르게 구성이 된다는 점
    4) loss 설정이 분류, 회귀에 따라 다르다.
    5) 입력변수(피처)를 하나만 사용했을 때보다 여러 변수를 사용했을 때 성능이 더 좋아졌다. => 반드시 여러 변수를 사용한다라고 해서 성능이 좋아지지 않을 수도 있지만 너무 적은 변수로는 예측모델을 잘 만들기 어렵다는 점을 알수 있습니다.
    6) validation_split해야 val결과가 나타난다.
    7) flatten()은 예측결과값이 주로 2차원으로 나오기 때문에 1차원화 해주기 위한 함수이다.

  2. 실습 절차
    오늘 실습의 단계 및 플로우

  • 딥러닝 모델을 조정하여서 회귀 딥러닝 모델을 생성
    (분류 모델과 다르게 Dense 출력 유닛 1로 설정, Compile에서 loss, metrics 변경)

  • 자원과 시간을 아끼기 위해서 학습 과정 중 성능이 비슷하면 멈출 수 있도록 EarlyStopping을 설정
    (tf.keras.callbacks.EarlyStopping -> 성능이 비슷함에도 남은 epochs가 많이 남았다면 시간이 아까우니까)

  • 학습 과정에서 validation_split을 설정하여 검증 데이터셋도 설정
    (모델이 과적합인지 과소적합인지 제 성능을 하는지 확인하기 위해서 -> model.fit(validation_split=0.2))

  • 딥러닝 모델을 학습
    (model.fit)

  • 학습한 모델의 성능을 history 표를 보면서 측정
    (여기서 우리 전에 배웠던 loss, mae, mse 지표를 보면서 모델이 잘 예측했는지 평가해봅니다.
    -> 검증모델에서의 지표와 비교를 해보고(val_loss, val_mae, val_mse 등등) 과대적합이 됐는지, 과소적합이 됐는지도 볼 수 있습니다.)

loss

W, b 값을 업데이트 해주기 위해 사용하고, metric 모델의 성능을 평가

  • 이진분류 - binarycrossentropy
  • 다중분류 : 원핫인코딩 - categorical_crossentropy
  • 다중분류 : 오디널 - sparse_categorical_crossentropy

loss 값을 보고 label이 어떤 형태인지 알 수 있습니다. label 값이 바이너리, 원핫, 오디널 인코딩 되어 있는지 보고 loss 값을 지정해야 합니다. binarycrossentropy(label 값이 이진분류 되어 있어서 ), categorical_crossentropy( label 값이 다중분류, 즉 원핫인코딩 되어 있어서 )
,sparse_categorical_crossentropy( label 값이 다중분류, 즉 ordinal Encoding 되어 있어서 )

읽어볼 문서

https://darkpgmr.tistory.com/186

profile
유저가 왜 그랬을까

0개의 댓글