Nhớ bài lan truyền ngược trong khóa Nhập môn AI? PyTorch làm hết việc đó cho bạn. Đánh dấu requires_grad=True, PyTorch ghi lại đồ thị tính toán; gọi .backward() trên một số vô hướng, gradient được tính và lưu vào .grad của từng tensor lá.
x = torch.tensor([1., 2., 3.], requires_grad=True)
y = (x ** 2 + 3 * x).sum() # y = Σ (x² + 3x)
y.backward()
print(x.grad) # tensor([5., 7., 9.]) = 2x + 3
with torch.no_grad(): # tắt ghi đồ thị khi suy luận / cập nhật tham số
pred = model(x_test)Ba điều cần nhớ:
- Gradient cộng dồn sau mỗi lần
backward()→ phải xóa (optimizer.zero_grad()) trước mỗi bước backward()chỉ gọi trực tiếp trên tensor một phần tử (loss).detach()tách tensor khỏi đồ thị — dùng khi chỉ cần giá trị
?Gọi loss.backward() hai lần liên tiếp (không zero_grad) với cùng dữ liệu thì w.grad sẽ thế nào?
Luyện tập ngay
Viết code và chấm tự động — có trợ lý AI gợi ý khi bí.