Khởi tạo, Thao tác Shape và Kiểm soát Device trên PyTorch Tensor
PyTorch là framework Deep Learning tiêu chuẩn công nghiệp. Trước khi xây dựng mạng nơ-ron, kỹ sư phải thành thạo việc tạo tensor chuẩn xác trên CPU, chuyển đổi shape và kiểm soát b
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, numpy-array-strides-memory.
Nội dung đề bài
Mục tiêu kiến thức
- Khởi tạo torch.Tensor từ danh sách hoặc mảng dữ liệu thô.
- Ép buộc thiết bị thực thi là CPU (device='cpu') để tương thích với runner.
- Thao tác thay đổi kích thước an toàn bằng .view() hoặc .reshape().
- Chuyển đổi kiểu dữ liệu (float32, int64) và kiểm tra requires_grad=False.
Mô tả bài toán
PyTorch là framework Deep Learning tiêu chuẩn công nghiệp. Trước khi xây dựng mạng nơ-ron, kỹ sư phải thành thạo việc tạo tensor chuẩn xác trên CPU, chuyển đổi shape và kiểm soát bộ nhớ để tránh lỗi thiếu bộ nhớ (OOM).
Yêu cầu
Viết hàm process_batch_tensors(raw_inputs: list[list[float]], target_shape: tuple[int, ...], target_dtype: str = "float32") -> dict[str, Any]:
- Chuyển danh sách raw_inputs thành một torch.Tensor đặt trên thiết bị CPU (device="cpu").
- Ép kiểu dữ liệu tensor:
- Nếu target_dtype == "float32", dùng torch.float32.
- Nếu target_dtype == "float64", dùng torch.float64.
- Nếu target_dtype == "int64", dùng torch.int64.
- Ngược lại ném ra ngoại lệ ValueError.
- Kiểm tra nếu tổng số phần tử không khớp với target_shape, ném ra ngoại lệ ValueError.
- Thay đổi hình dạng của tensor sang target_shape.
- Tính giá trị trung bình mean_val (dưới dạng float tiêu chuẩn của Python) và tổng sum_val (dưới dạng float tiêu chuẩn).
- Trả về một dictionary gồm:
- "tensor": Tensor PyTorch sau khi reshape.
- "device_type": Chuỗi kiểu thiết bị (tensor.device.type, phải là "cpu").
- "shape": Tuple kích thước của tensor.
- "mean": Giá trị trung bình float.
- "sum": Tổng giá trị float.
import torch
from typing import Any
def process_batch_tensors(raw_inputs: list[list[float]], target_shape: tuple[int, ...], target_dtype: str = "float32") -> dict[str, Any]:
passInput
- Hàm process_batch_tensors(raw_inputs, target_shape, target_dtype): 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 process_batch_tensors: Trả về kết quả kiểu dict[str, Any] 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: 2000ms.
- Giới hạn bộ nhớ: 256MB.
- 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
data = [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]
process_batch_tensors(data, target_shape=(3, 2), target_dtype='float32')
Output
{
'tensor': [[1., 2.],
[3., 4.],
[5., 6.]],
'device_type': 'cpu',
'shape': (3, 2),
'mean': 3.5,
'sum': 21
}
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
data = [[10.8, 20.2], [30.1, 40.9]]
process_batch_tensors(data, target_shape=(4,), target_dtype='int64')
Output
{
'tensor': [10, 20, 30, 40],
'device_type': 'cpu',
'shape': (4),
'mean': 25,
'sum': 100
}
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.
