59doit

순환신경망 (4) 본문

인공지능

순환신경망 (4)

yul_S2 2023. 1. 22. 13:43
반응형

LSTM 순환신경망으로 텍스트 분류하기

기본 순환 신경망과 달리 LSTM 셀은 2개의 출력이 순환된다. 그중 하나만 다음 층으로 전달된다.
셀로 순환만 되는 출력을 셀 상태(C)라고 부른다
LSTM 셀에서는 이전 타임 스텝의 은닉 상태 H_p와 셀 상태 C_p를 사용해 계산을 수행

 

# 1. LSTM 클래스 임포트

from tensorflow.keras.layers import LSTM



 

 

 

# 2. 임베딩층을 포함하여 LSTM 순환신경망만들기

model_lstm = Sequential()
 
model_lstm.add(Embedding(1000, 32))
model_lstm.add(LSTM(8))
model_lstm.add(Dense(1, activation='sigmoid'))
 
model_lstm.summary()
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 embedding_2 (Embedding)     (None, None, 32)          32000     
                                                                 
 lstm (LSTM)                 (None, 8)                 1312      
                                                                 
 dense_3 (Dense)             (None, 1)                 9         
                                                                 
=================================================================
Total params: 33,321
Trainable params: 33,321
Non-trainable params: 0
_________________________________________________________________



 

 

 

# 3. 모델 훈련하기

model_lstm.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
 
history = model_lstm.fit(x_train_seq, y_train, epochs=10, batch_size=32,
                         validation_data=(x_val_seq, y_val))

▶에포크10, adam 최적화 알고리즘 사용

 

 

 

# 4. 손실그래프와 정학도 그래프 그리기

plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(['train_loss', 'val_loss'])
plt.show()
 
plt.plot(history.history['accuracy'])
plt.plot(history.history['val_accuracy'])
plt.ylabel('accuracy')
plt.xlabel('epoch')
plt.legend(['train_accuracy', 'val_accuracy'])

plt.show()

▲손실그래프

 

▲정확도그래프

 

 

# 5. 검증세트 정확도

loss, accuracy = model_lstm.evaluate(x_val_seq, y_val, verbose=0)
print(accuracy)
# 0.8309999704360962



 

 

 

반응형

'인공지능' 카테고리의 다른 글

순환신경망 (3)  (1) 2023.01.22
순환신경망 (2)  (4) 2023.01.21
순환신경망 (1)  (5) 2023.01.21
합성곱 (6)  (2) 2023.01.21
합성곱(4)  (12) 2023.01.18
Comments