Bắt đầu ngayBắt đầu miễn phí

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

Xem khóa học

Hướng dẫn bài tập

  • Thêm một tầng Embedding làm tầng đầu tiên của mô hình.
  • Thêm một tầng LSTM thứ hai với 64 đơn vị và returning các chuỗi.
  • Thêm một tầng Dense bổ 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)))
Chỉnh sửa và Chạy Mã