Phân loại cảm xúc tốt hơn
Trong bài này, bạn quay lại bài toán phân loại cảm xúc đã gặp ở Chương 1.
Bạn sẽ tăng độ phức tạp của mô hình để cải thiện độ chính xác. Bạn sẽ dùng một tầng Embedding để huấn luyện vector từ trên tập huấn luyện và hai tầng LSTM để theo dõi các văn bản dài hơn. Bên cạnh đó, bạn sẽ thêm một tầng Dense bổ sung trước đầu ra.
Đây không còn là một mô hình đơn giản, và quá trình huấn luyện có thể tốn thời gian. Vì vậy, một mô hình đã huấn luyện sẵn có thể được sử dụng bằng cách nạp trọng số của nó với phương thức .load_weights() từ lớp keras.models.Sequential. Mô hình được huấn luyện 10 epoch và trọng số được lưu trong tệp model_weights.h5.
Các mô-đun sau đã được nạp trong môi trường: Sequential, Embedding, LSTM, Dropout, Dense.
Bài tập này là một phần của khóa học
Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras
Hướng dẫn bài tập
- Thêm một tầng
Embeddinglàm tầng đầu tiên của mô hình. - Thêm một tầng
LSTMthứ hai với 64 đơn vị vàreturningcác chuỗi. - Thêm một tầng
Densebổ sung với 16 đơn vị. - Đánh giá mô hình để in ra độ chính xác trên tập huấn luyện.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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)))