Lan truyền ngược qua lớp tuyến tính
Trung bìnhAIbackpropagationmạng nơ-ron4 test · 12 giây · sai số 1e-5
Lớp tuyến tính tính out = x @ W + b. Khi lan truyền ngược, ta biết gradient của hàm mất mát theo đầu ra dout (cùng shape với out). Tính gradient theo đầu vào và tham số:
- dx = dout @ Wᵀ
- dW = xᵀ @ dout
- db = tổng dout theo chiều lô (axis 0)
Đây chính là những gì loss.backward() làm bên trong PyTorch.
Viết hàm
linear_backward(x, W, dout)Tham số
x: đầu vào (n, d)W: trọng số (d, m)dout: gradient theo đầu ra (n, m)
Trả về
Danh sách [dx (n, d), dW (d, m), db (m,)].
Ví dụ
Tham số
x = [[1,2]] W = [[1],[3]] dout = [[1]]
Kết quả
[[[1.0,3.0]],[[1.0],[2.0]],[1.0]]
Tham số
x = [[1,0],[0,1]] W = [[1,2],[3,4]] dout = [[1,1],[1,1]]
Kết quả
[[[3.0,7.0],[3.0,7.0]],[[1.0,1.0],[1.0,1.0]],[2.0,2.0]]
Bài tiếp theo: Lan truyền xuôi mạng nơ-ron 2 lớp →
Python · NumPy
Bấm “Chạy thử” để gọi linear_backward() với 2 ví dụ trong đề và so sánh kết quả. Dùng print() thoải mái để gỡ lỗi.