Định Hình Lại Tensor Đầu Ra và Nhãn Mục Tiêu Cho Hàm Mất Mát (Cross-Entropy Tensor Flattening with Ignore Index)
Đầu ra của mô hình ngôn ngữ tự hồi quy là một tensor Logits 3 chiều có shape (B, T, V) trong đó B là batch size, T là độ dài chuỗi và V là kích thước từ điển. Nhãn mục tiêu targets…
Tiến độ của tôi ở bài này
Điểm đượ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: input-target-batch-collator.
Nội dung đề bài
Mô tả bài toán
Đầu ra của mô hình ngôn ngữ tự hồi quy là một tensor Logits 3 chiều có shape (B, T, V) trong đó B là batch size, T là độ dài chuỗi và V là kích thước từ điển. Nhãn mục tiêu targets có shape (B, T).
Để tính hàm mất mát Cross-Entropy chuẩn, ta cần:
- Duỗi phẳng (flatten) tensor Logits thành ma trận 2 chiều (B × T, V).
- Duỗi phẳng nhãn
targetsthành vector 1 chiều (B × T,). - Lọc bỏ các vị trí có giá trị bằng
ignore_index(thường là-100).
Yêu cầu kỹ thuật:
Viết hàm flatten_logits_and_targets(logits: np.ndarray, targets: np.ndarray, ignore_index: int = -100) -> tuple[np.ndarray, np.ndarray]:
logits: Mảng NumPy float shape (B, T, V).targets: Mảng NumPy int shape (B, T).- Kiểm tra tính tương thích:
logits.shape[0] == targets.shape[0]vàlogits.shape[1] == targets.shape[1]. Nếu không, némValueError("Shape mismatch between logits and targets"). - Làm phẳng:
flat_logits = logits.reshape(-1, V)flat_targets = targets.reshape(-1)- Lọc bỏ các phần tử có
flat_targets == ignore_index. - Trả về tuple
(filtered_logits, filtered_targets)có số hàng M ≤ B × T tương ứng với các token hợp lệ.
Input
- Hàm
flatten_logits_and_targets(logits,targets,ignore_index): Các tham số đầu vào chứa dữ liệu Tensor/mảng NumPy hoặc giá trị siêu tham số tương ứng.
Output
- Hàm
flatten_logits_and_targets: Trả về kết quả kiểutuple[np.ndarray, np.ndarray]theo đúng đặc tả kỹ thuật và kích thước quy định.
Ràng buộc
- Thời gian chạy tối đa: 6000ms.
- Giới hạn bộ nhớ: 512MB.
- Dữ liệu đầu vào hợp lệ theo đúng kiểu dữ liệu và miền giá trị được mô tả.
Ví dụ 1
Input
logits = np.array([[[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]]])
targets = np.array([[1, -100, 0]])
f_logits, f_targets = flatten_logits_and_targets(logits, targets, ignore_index=-100)Output
([[1., 2.],
[5., 6.]], [1, 0])Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
Ví dụ 2
Input
logits = np.random.randn(2, 5, 8)
targets = np.full((2, 5), -100)
f_logits, f_targets = flatten_logits_and_targets(logits, targets)Output
([], [])Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
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.
