Vòng lặp huấn luyện

Bài 5/620 phút

Mọi mô hình PyTorch, từ hồi quy tới GPT, đều huấn luyện bằng cùng một vòng lặp 5 bước:

train.py
from torch.utils.data import DataLoader, TensorDataset
loader = DataLoader(TensorDataset(X, y), batch_size=64, shuffle=True)

for epoch in range(10):
    model.train()
    for xb, yb in loader:
        opt.zero_grad()                 # 1. xóa gradient cũ
        logits = model(xb)              # 2. lan truyền xuôi
        loss = loss_fn(logits, yb)      # 3. tính mất mát
        loss.backward()                 # 4. lan truyền ngược
        opt.step()                      # 5. cập nhật tham số

    model.eval()
    with torch.no_grad():
        acc = (model(X_val).argmax(1) == y_val).float().mean()
    print(epoch, loss.item(), acc.item())

model.train() / model.eval() bật/tắt hành vi chỉ dùng khi huấn luyện (Dropout, BatchNorm). Luôn đánh giá trên dữ liệu chưa dùng để huấn luyện để phát hiện overfitting (loss train giảm nhưng loss validation tăng).

?Quên gọi opt.zero_grad() thì chuyện gì xảy ra?

Luyện tập ngay

Viết code và chấm tự động — có trợ lý AI gợi ý khi bí.