더 나은 감정 분류
이번 연습에서는 1장에서 다뤘던 감정 분류 문제로 돌아가 보겠습니다.
모델에 더 복잡도를 추가해 정확도를 높여 볼 거예요. 학습 데이터에서 단어 벡터를 학습하도록 Embedding 레이어를 사용하고, 더 긴 텍스트의 문맥을 추적하기 위해 두 개의 LSTM 레이어를 사용합니다. 또한 출력 전에 Dense 레이어를 하나 더 추가합니다.
이제 모델이 단순하지 않기 때문에 학습에 시간이 걸릴 수 있어요. 따라서 keras.models.Sequential 클래스의 .load_weights() 메서드로 가중치를 불러오는 사전 학습된 모델을 제공합니다. 이 모델은 10 epoch로 학습되었고 가중치는 model_weights.h5 파일에 있어요.
환경에는 다음 모듈이 로드되어 있습니다: Sequential, Embedding, LSTM, Dropout, Dense.
이 연습은 강의의 일부입니다
Keras로 배우는 언어 모델링을 위한 순환 신경망(RNN)
연습 안내
- 모델의 첫 번째 레이어로
Embedding레이어를 추가하세요. - 시퀀스를
return하도록 설정한 64 유닛의 두 번째LSTM레이어를 추가하세요. - 유닛 16개의
Dense레이어를 하나 더 추가하세요. - 모델을 평가해 학습 데이터의 정확도를 출력하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Build and compile the model
model = Sequential()
model.add(____(vocabulary_size, wordvec_dim, trainable=True, input_length=max_text_len))
model.add(____(64, return_sequences=____, dropout=0.2, recurrent_dropout=0.15))
model.add(LSTM(64, return_sequences=False, dropout=0.2, recurrent_dropout=0.15))
model.add(____(16))
model.add(Dropout(rate=0.25))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Load pre-trained weights
model.load_weights('model_weights.h5')
# Print the obtained loss and accuracy
print("Loss: {0}\nAccuracy: {1}".format(*model.____(X_test, y_test, verbose=0)))