PyTorch: Vì sao `nn.CrossEntropyLoss()` yêu cầu đúng định dạng đầu ra và nhãn?

Tác giả: AI VIET NAM (AI VIET NAM)

Keywords: CrossEntropyLoss, PyTorch, Logits, Labels, Classification

Bản chất của CrossEntropy trong PyTorch

Cross-entropy trong PyTorch là sự kết hợp của hai bước:

  • Tính logits từ mô hình (đầu ra chưa qua softmax)
  • Áp dụng log-softmaxnegative log likelihood loss

Vì vậy, PyTorch yêu cầu đúng định dạng để thực hiện các bước toán học này. Kiến thức này thường xuất hiện trong nhóm học thuật Machine Learning cơ bản và phần losses & metrics ở các chương tiền Deep Learning.

Định dạng đúng của đầu ra mô hình và nhãn

Đầu ra mô hình (logits)

  • Là tensor dạng [batch_size,num_classes][batch\_size, num\_classes]
  • Không qua softmax
  • Mỗi dòng thể hiện mức độ ""kích hoạt"" của từng lớp

Nhãn (labels)

  • Là tensor 1 chiều [batch_size][batch\_size]
  • Mỗi phần tử là một số nguyên biểu diễn chỉ số lớp (class index)
  • Không phải one-hot

Ví dụ minh họa dễ hình dung

Giả sử có 3 lớp (0, 1, 2) và một batch gồm 4 mẫu:

  • Đầu ra mô hình có dạng: 4 dòng, mỗi dòng 3 giá trị
  • Nhãn: [2,0,1,2][2, 0, 1, 2]

Nếu dùng one-hot như [0,1,0][0,1,0], hàm loss sẽ báo lỗi vì định dạng không đúng.

Góc nhìn khi làm dự án AI/ML

Khi triển khai mô hình phân loại trong thực tế:

  • Việc giữ đúng shape giúp pipeline dữ liệu đồng nhất từ bước tiền xử lý → mô hình → huấn luyện.
  • Ở giai đoạn MLOps, định dạng chuẩn giúp logging và debug dễ hơn.
  • Khi triển khai inference, chỉ cần gửi logits vào hàm argmax để lấy lớp dự đoán.

Những quy chuẩn kiểu này thường xuất hiện trong các tuyến kiến thức từ Machine Learning cơ bản, đến Deep Learning 1–2, rồi đến MLOps.

Liên hệ kiến thức nền

  • Module 4 giúp hiểu cross-entropy và các bài toán classification.
  • Module 5–6 giải thích rõ hơn về losses, metrics và optimization.
  • Module 7 dùng các kiến thức này để triển khai phân loại với mạng sâu.

Đây là lộ trình nền tảng mà nhiều người học AI đi qua khi xử lý các bài toán phân loại.

Lời khuyên cho người bắt đầu

Bạn có thể thử tạo một mô hình phân loại nhỏ, dùng vài lớp đơn giản và kiểm tra shape của mọi tensor khi đi qua mạng. Cách này giúp hiểu rõ hơn nguyên lý của loss.

Hỏi đáp nhanh về chủ đề

1. CrossEntropyLoss có dùng one-hot label không?
Không.

2. Đầu ra mô hình có cần softmax trước khi đưa vào loss không?
Không.

3. Nhãn có cần trùng số lượng lớp với đầu ra không?
Có.

4. Logits có phải luôn là số thực bất kỳ không?
Có.

FAQ về chương trình AIO

Q1. Con số 0 thì học nổi không?
Ans: Chỉ cần bạn có thời gian học. Điều quan trọng nhất không phải giỏi hay không, mà là có học đều mỗi ngày. Kiến thức – tài liệu – môi trường đã có team lo. Nếu bạn không có thời gian thì nên cân nhắc.

Q2. Ai dạy AIO?
Ans: Đội admin dạy toàn bộ. Admin trực tiếp hướng dẫn và hỗ trợ mọi câu hỏi của bạn trong suốt quá trình học.

Q3. Admin có “xịn” không?
Ans: Admin đều là người làm nghề thật, mỗi người một cách dạy. Quan trọng là bạn cảm thấy hợp cách truyền đạt. Admin không dám nói xịn, chỉ dạy bằng hết sức.

Q4. AIO có gì khác những nơi khác?
Ans: AIO không phải trung tâm. Đây là dự án học tập cộng đồng, được cải tiến qua từng khóa. Tinh thần của AIO: Cùng nhau học – cùng nhau khổ – cùng nhau lớn. Nếu hợp tinh thần đó, bạn sẽ thấy phù hợp.

Tài nguyên học AI: