Tái Cấu Trúc Kích Thước Tensor (Reshape, Squeeze, Unsqueeze)
Khi chuyển giao dữ liệu giữa các khối trong mô hình GPT, tensor thường xuyên phải thay đổi số chiều: ví dụ gộp batch và sequence (B, T, D) -> (B*T, D) để đưa vào hàm mất mát Cross-…
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: tensor-broadcasting-basics.
Nội dung đề bài
Mô tả bài toán
Khi chuyển giao dữ liệu giữa các khối trong mô hình GPT, tensor thường xuyên phải thay đổi số chiều: ví dụ gộp batch và sequence (B, T, D) -> (B*T, D) để đưa vào hàm mất mát Cross-Entropy, hoặc thêm chiều head unsqueeze(1) để tính Attention.
Yêu cầu
Viết hàm transform_tensor_dimensions(x: np.ndarray, target_action: str, axis: int = 0) -> np.ndarray:
- Nếu
target_action == "flatten_batch_seq": Gộp 2 chiều đầu tiên của tensor 3D(B, T, D)thành(B * T, D). Nếu $ndim
e 3$, raise ValueError.
- If
target_action == "unsqueeze": Thêm một chiều đơn (singleton dimension) kích thước 1 tại vị trí trụcaxis. - If
target_action == "squeeze": Loại bỏ chiều đơn kích thước 1 tại trụcaxisnếu kích thước của nó đúng bằng 1. Nếu kích thước tại trục đó khác 1, giữ nguyên mảng. - Trả về mảng NumPy kết quả.
Input
- Hàm
transform_tensor_dimensions(x,target_action,axis): 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
transform_tensor_dimensions: Trả về kết quả kiểunp.ndarraytheo đú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: 3000ms.
- 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
x = np.ones((2, 5, 8))
transform_tensor_dimensions(x, 'flatten_batch_seq')Output
[[1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1.]]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
x = np.ones((4, 6))
transform_tensor_dimensions(x, 'unsqueeze', axis=1)Output
Array shape: (4, 1, 6), dtype=float64Giả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.
