# 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) 정형데이터 입력층 input_shape
2) 정규화 레이어의 사용 => 직접 정규화해도 됩니다.
3) 출력층이 분류와 다르게 구성이 된다는 점
4) loss 설정이 분류, 회귀에 따라 다르다.
5) 입력변수(피처)를 하나만 사용했을 때보다 여러 변수를 사용했을 때 성능이 더 좋아졌다. => 반드시 여러 변수를 사용한다라고 해서 성능이 좋아지지 않을 수도 있지만 너무 적은 변수로는 예측모델을 잘 만들기 어렵다는 점을 알수 있습니다.
6) validation_split해야 val결과가 나타난다.
7) flatten()은 예측결과값이 주로 2차원으로 나오기 때문에 1차원화 해주기 위한 함수이다.
실습 절차
오늘 실습의 단계 및 플로우
딥러닝 모델을 조정하여서 회귀 딥러닝 모델을 생성
(분류 모델과 다르게 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 등등) 과대적합이 됐는지, 과소적합이 됐는지도 볼 수 있습니다.)
W, b 값을 업데이트 해주기 위해 사용하고, metric 모델의 성능을 평가
loss 값을 보고 label이 어떤 형태인지 알 수 있습니다. label 값이 바이너리, 원핫, 오디널 인코딩 되어 있는지 보고 loss 값을 지정해야 합니다. binarycrossentropy(label 값이 이진분류 되어 있어서 ), categorical_crossentropy( label 값이 다중분류, 즉 원핫인코딩 되어 있어서 )
,sparse_categorical_crossentropy( label 값이 다중분류, 즉 ordinal Encoding 되어 있어서 )