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

Vấn đề tiêu biến gradient

Một vấn đề gradient khác là khi gradient tiêu biến, tức tiến về 0. Đây là vấn đề khó xử lý hơn nhiều vì không dễ phát hiện. Nếu hàm loss không cải thiện ở mỗi bước, có phải do gradient về 0 nên trọng số không được cập nhật? Hay do mô hình không học được?

Vấn đề này xảy ra thường xuyên hơn ở các mô hình RNN khi cần bộ nhớ dài hạn (các câu rất dài).

Trong bài tập này, bạn sẽ quan sát vấn đề trên dữ liệu IMDB với các câu dài hơn đã được chọn. Dữ liệu đã được nạp vào biến Xy, cùng với các lớp Sequential, SimpleRNN, Densematplotlib.pyplot dưới tên plt. Mô hình đã được huấn luyện trước 100 epoch, trọng số và lịch sử huấn luyện được lưu trong tệp model_weights.h5 và biến history.

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 SimpleRNN vào mô hình.
  • Nạp trọng số đã huấn luyện sẵn vào mô hình bằng phương thức .load_weights().
  • Thêm độ chính xác của dữ liệu huấn luyện có trong thuộc tính 'acc' vào biểu đồ.
  • Hiển thị biểu đồ bằng phương thức .show().

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.

# Create the model
model = Sequential()
model.add(____(units=600, input_shape=(None, 1)))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='sgd', metrics=['accuracy'])

# Load pre-trained weights
model.____('model_weights.h5')

# Plot the accuracy x epoch graph
plt.plot(history.history[____])
plt.plot(history.history['val_acc'])
plt.legend(['train', 'val'], loc='upper left')
plt.____()
Chỉnh sửa và Chạy Mã