Áp padding mask lên trọng số chú ý
Khi một batch chứa các câu dài ngắn khác nhau, người ta chèn token đệm (padding) và đánh
Tiến độ của tôi ở bài này
Điểm và code bạn nộp được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: python-basics, softmax-and-normalization.
Nội dung đề bài
Mô tả bài toán
Khi một batch chứa các câu dài ngắn khác nhau, người ta chèn token đệm (padding) và đánh dấu bằng mask. Trọng số chú ý tại các vị trí đệm phải bị đưa về 0, và phần trọng số còn lại phải được chuẩn hoá lại để tổng vẫn bằng 1.
Yêu cầu
Viết hàm mask_attention_weights(weights, mask) trả về danh sách trọng số đã che và chuẩn hoá lại.
Quy ước nộp bài
Nộp hàm mask_attention_weights trong solution.py. Hệ thống gọi hàm trực tiếp và so giá trị với sai số 1e-6; không đọc stdin và không in ra stdout.
Input
- weights: danh sách trọng số chú ý (số thực).
- mask: danh sách cùng độ dài, 1 cho vị trí thật và 0 cho vị trí đệm.
Output
Danh sách cùng độ dài: vị trí đệm bằng 0, các vị trí còn lại chia cho tổng trọng số giữ lại.
Ràng buộc
- Hai danh sách phải cùng độ dài; nếu không thì ném ValueError.
- Nếu tổng trọng số giữ lại bằng 0 thì ném ValueError.
- Chỉ dùng NumPy, không viết vòng lặp cộng từng phần tử.
Ví dụ 1
Input
mask_attention_weights(weights=[0.1, 0.2, 0.3, 0.4], mask=[1, 1, 0, 1])
Output
[0.14285714285714285, 0.2857142857142857, 0.0, 0.5714285714285714]
Ví dụ 2
Input
mask_attention_weights(weights=[0.5, 0.5], mask=[1, 0])
Output
[1.0, 0.0]
Giải thích
Với weights = [0.1, 0.2, 0.3, 0.4] và mask = [1, 1, 0, 1], vị trí thứ ba bị đệm nên tổng giữ lại là 0.1 + 0.2 + 0.4 = 0.7, kết quả [0.14285714285714285, 0.2857142857142857, 0.0, 0.5714285714285714].
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
