Hippo's data
DNN(Deep Neural Network) 심층 신경망 구현 본문
오늘은 딥러닝 모델 중 하나인 DNN(Deep Neural Network) 심층 신경망 모델 구현에 대해 알아보겠습니다!
머신러닝 모델 구현시 사이킷런(scikit-learn)을 사용한 것처럼 딥러닝 또한 라이브러리를 통해 쉽게 구현할 수 있습니다
딥러닝 구현 라이브러리에는 케라스, 텐서플로우, 파이토치 등 여러 종류가 있는데요 그중 텐서플로우(tensorflow)를 활용하여 구현해보도록 하겠습니다!!!
1) 불러오기
2) 모델 생성
3) 모델 학습
1) 불러오기
import tensorflow as tf
from tensorflow.keras.models import Sequential # 순차적인 틀을 만듦 / 틀에 레이어들을 채움
from tensorflow.keras.layers import Dense, Activation, Dropout # Dense -> hidden layer
2) 모델 생성
< 구현할 구조 설명 >
input layer : 18개
첫 번째 hidden layer(unit): 4개
두 번째 hidden layer(unit): 3개
output layer(이진분류) :1개
model = Sequential() # 틀을 만듦
model.add(Dense(4, activation='relu', input_shape=(18,))) # 첫 번째 hidden layer 추가, input 18개 정의
model.add(Dropout(0.3)) # 드랍아웃 0.3 비율
model.add(Dense(3, activation='relu')) # 두 번째 hidden layer 추가
model.add(Dropout(0.3)) # 드랍아웃 0.3 비율
model.add(Dense(1, activation='sigmoid')) # output layer 추가 / 이진분류-> sigmoid / 다중분류-> softmax
model.compile(optimizer='adam', # 모델 컴파일 / 최적화 알고리즘, 손실함수, 평가지표 정의
loss='binary_crossentropy', # 이진분류 -> binary_crossentropy / 다중분류 -> categorical_crossentropy
metrics=['accuracy'])
## loss 손실함수sparse 의미
"categorical_crossentropy"-> y값(타겟) 원-핫 인코딩 된 형태 (1 / 0)
"sparse_categorical_crossentropy" -> y값(타겟) Int형
3) 모델 학습
history = model.fit(X_train, y_train,
validation_data=(X_test, y_test),
epochs=20,
batch_size=16)
# 이런식으로 에폭마다 지표값들이 표시됨
Epoch 1/20
342/342 [==============================] - 1s 3ms/step - loss: 0.5785 - accuracy: 0.8557 - val_loss: 0.3741 - val_accuracy: 0.8994
Epoch 2/20
342/342 [==============================] - 1s 3ms/step - loss: 0.4105 - accuracy: 0.8985 - val_loss: 0.3234 - val_accuracy: 0.8994
Epoch 3/20
losses = pd.DataFrame(model.history.history) # 데이터 프레임 형식으로 지표 결과 보여주기
loss accuracy val_loss val_accuracy
0 0.473808 0.889559 0.324098 0.89936
1 0.354794 0.899616 0.300751 0.89936
2 0.324456 0.899616 0.285697 0.89936
# 모델 구조 확인
model.summary()
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_6 (Dense) (None, 5) 95
_________________________________________________________________
dropout_2 (Dropout) (None, 5) 0
_________________________________________________________________
dense_7 (Dense) (None, 4) 24
_________________________________________________________________
dropout_3 (Dropout) (None, 4) 0
_________________________________________________________________
dense_8 (Dense) (None, 2) 10
=================================================================
Total params: 129
Trainable params: 129
Non-trainable params: 0
'DL(Deep Learning)' 카테고리의 다른 글
[딥러닝] Linear regression, Logistic regression (0) | 2024.04.20 |
---|---|
RNN(Recurrent Neural Network) 순환 신경망 구현 (0) | 2024.01.10 |
CNN(Convolutional Neural Network) 합성곱 신경망 구현 (2) | 2024.01.10 |