Chia dữ liệu thành tập huấn luyện và tập kiểm định
Bạn đã biết rằng chỉ dùng dữ liệu huấn luyện mà không có tập kiểm định sẽ dẫn đến hiện tượng gọi là overfitting. Khi overfitting xảy ra, mô hình dự đoán rất tốt trên dữ liệu huấn luyện nhưng tổng quát hóa rất kém trên dữ liệu chưa thấy. Điều này khiến mô hình không hữu ích vì không thể tổng quát hóa. Để tránh điều đó, bạn có thể dùng một tập kiểm định.
Trong bài tập này, bạn sẽ tạo tập huấn luyện và tập kiểm định từ bộ dữ liệu hiện có (tức en_text gồm 1000 câu tiếng Anh và fr_text gồm 1000 câu tiếng Pháp). Bạn sẽ dùng 80% dữ liệu cho huấn luyện và 20% cho kiểm định.
Bài tập này là một phần của khóa học
Machine Translation với Keras
Hướng dẫn bài tập
- Tạo một dãy chỉ số dùng
np.arange(), bắt đầu từ 0 và có kích thước bằngen_text. - Gán
valid_indslàvalid_sizechỉ số cuối cùng của dãy chỉ số đó. - Tạo
tr_envàtf_fr, chứa các câu tại các chỉ sốtrain_indstrong danh sáchen_textvàfr_text. - Tạo
v_envàv_fr, chứa các câu tại các chỉ sốvalid_indstrong danh sáchen_textvàfr_text.
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.
train_size, valid_size = 800, 200
# Define a sequence of indices from 0 to len(en_text)
inds = ____.____(len(_____))
np.random.shuffle(inds)
train_inds = inds[:train_size]
# Define valid_inds: last valid_size indices
valid_inds = inds[____]
# Define tr_en (train EN sentences) and tr_fr (train FR sentences)
tr_en = [en_text[____] for ti in ____]
tr_fr = [____ for ti in ____]
# Define v_en (valid EN sentences) and v_fr (valid FR sentences)
v_en = [____ for vi in valid_inds]
v_fr = [____ for vi in ____]
print('Training (EN):\n', tr_en[:3], '\nTraining (FR):\n', tr_fr[:3])
print('\nValid (EN):\n', v_en[:3], '\nValid (FR):\n', v_fr[:3])