Chúng ta có cần thêm dữ liệu không?
Đã đến lúc kiểm tra xem model cho bộ dữ liệu chữ số mà bạn đã xây dựng có hưởng lợi khi có thêm ví dụ huấn luyện hay không!
Để rút gọn mã, nhiều thành phần đã được khởi tạo sẵn và có thể dùng ngay:
modelbạn vừa xây dựng.X_train,y_train,X_testvày_test.initial_weightscủa mô hình, được lưu sau khi gọimodel.get_weights().- Danh sách kích thước tập huấn luyện đã định nghĩa sẵn:
training_sizes. - Callback early stopping đã định nghĩa sẵn, theo dõi loss:
early_stop. - Hai danh sách trống để lưu kết quả đánh giá:
train_accsvàtest_accs.
Huấn luyện mô hình của bạn với các kích thước tập huấn luyện khác nhau và đánh giá kết quả trên X_test.
Cuối cùng, vẽ kết quả bằng plot_results().
Bạn có thể tìm toàn bộ mã cho bài tập này trong các slide!
Bài tập này là một phần của khóa học
Nhập môn Deep Learning với Keras
Hướng dẫn bài tập
- Lấy một phần dữ liệu huấn luyện theo tỷ lệ
sizeđang được xét trong vòng lặp. - Đặt lại trọng số của mô hình về
initial_weightsbằngset_weights()và huấn luyện mô hình trên phần dữ liệu đó, dùngearly_stoplàm callback. - Đánh giá và lưu accuracy cho phần dữ liệu huấn luyện và cho tập kiểm thử.
- Gọi
plot_results()và truyền vào các giá trị accuracy của tập huấn luyện và tập kiểm thử cho từng kích thước 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.
for size in training_sizes:
# Get a fraction of training data (we only care about the training data)
X_train_frac, y_train_frac = X_train[:size], y_train[:size]
# Reset the model to the initial weights and train it on the new training data fraction
model.set_weights(____)
model.fit(X_train_frac, y_train_frac, epochs = 50, callbacks = [early_stop])
# Evaluate and store both: the training data fraction and the complete test set results
train_accs.append(model.evaluate(____, ____)[1])
test_accs.append(model.evaluate(____, ____)[1])
# Plot train vs test accuracies
plot_results(____, ____)