Vector hóa là viết phép toán trên cả mảng thay vì vòng lặp for. Đây là kỹ năng số 1 khi làm AI: code ngắn hơn và nhanh hơn rất nhiều.
x = np.random.default_rng(0).normal(size=1_000_000)
# Chậm: vòng lặp Python
out = [max(0, v) for v in x]
# Nhanh: vector hóa (ufunc chạy bằng C)
out = np.maximum(0, x) # ReLU
sig = 1 / (1 + np.exp(-x)) # sigmoid
print(np.sqrt(x**2).mean())Các hàm tổng hợp sum, mean, max, argmax, std nhận tham số axis — trục sẽ bị gộp lại:
axis=0: gộp theo hàng → kết quả cho mỗi cộtaxis=1(hoặc-1): gộp theo cột → kết quả cho mỗi hàng
X = np.array([[1, 2, 3],
[4, 5, 6]])
X.sum() # 21
X.sum(axis=0) # [5 7 9] — mỗi cột
X.mean(axis=1) # [2. 5.] — mỗi hàng
X.argmax(axis=1) # [2 2] — chỉ số lớn nhất mỗi hàng (dự đoán của mô hình!)
X.max(axis=1, keepdims=True) # [[3] [6]] — giữ chiều để broadcast tiếpMẹo nhớ: axis=k nghĩa là chiều thứ k biến mất khỏi shape. X có shape (2, 3) → X.sum(axis=0) có shape (3,).
?X có shape (32, 10) là logits của 32 mẫu, 10 lớp. Lấy lớp dự đoán cho mỗi mẫu bằng cách nào?
Luyện tập ngay
Viết code và chấm tự động — có trợ lý AI gợi ý khi bí.