Lan truyền ngược qua lớp tuyến tính

Trung bình

AIbackpropagationmạ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.