Autograd — đạo hàm tự động

Bài 3/620 phút

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á.

autograd.py
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í.