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 đượ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.Tensortừ 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 trarequires_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_inputsthành mộttorch.Tensorđặt trên thiết bị CPU (device="cpu"). - Ép kiểu dữ liệu tensor:
- Nếu
target_dtype == "float32", dùngtorch.float32. - Nếu
target_dtype == "float64", dùngtorch.float64. - Nếu
target_dtype == "int64", dùngtorch.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ổngsum_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ểudict[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.
