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:
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í.