Mạng nơ-ron về bản chất là chuỗi phép nhân ma trận xen kẽ hàm phi tuyến. Toán tử @ (hay np.matmul) nhân ma trận; * là nhân từng phần tử — đừng nhầm hai phép này.
X = np.random.rand(32, 784) # 32 ảnh, mỗi ảnh 784 pixel
W = np.random.rand(784, 128) # trọng số lớp ẩn
b = np.zeros(128)
H = X @ W + b # (32,784) @ (784,128) → (32,128)
# Nhân theo lô: chiều đầu là batch
A = np.random.rand(8, 16, 32); B = np.random.rand(8, 32, 4)
(A @ B).shape # (8, 16, 4)
# einsum: viết phép toán bằng chỉ số
np.einsum('bij,bjk->bik', A, B) # giống A @ B
np.einsum('id,jd->ij', X, X) # X @ X.T — ma trận tích vô hướngQuy tắc shape của @: (…, n, k) @ (…, k, m) → (…, n, m) — chiều trong (k) phải khớp. Các hàm hay dùng khác: np.linalg.norm (độ dài vector), np.linalg.solve / lstsq (giải hệ, hồi quy tuyến tính), np.linalg.inv.
?Q có shape (10, 64), K có shape (12, 64). Ma trận điểm attention Q Kᵀ có shape gì?
Luyện tập ngay
Viết code và chấm tự động — có trợ lý AI gợi ý khi bí.