Cross-entropy bằng tensor

Trung bình

PyTorchhàm mất mátsoftmax4 test · 20 giây · sai số 1e-4

Cài đặt lại F.cross_entropy(logits, labels) (trung bình theo lô) không dùng hàm có sẵn của torch.nn.functional:

  • log_softmax(z) = z − logsumexp(z) (có thể dùng torch.logsumexp(z, dim=1, keepdim=True))
  • L = −trung bình của log_softmax(logits)[i, labels[i]]

Trả về một tensor vô hướng (hoặc số thực).

Viết hàm

cross_entropy(logits, labels)

Tham số

  • logits: tensor (n, C)
  • labels: tensor số nguyên (n,)

Trả về

Số thực.

Ví dụ

Tham số

logits = [[2,1,0.1]]
labels = [0]

Kết quả

0.41703001627783376

Tham số

logits = [[0,0],[10,-10]]
labels = [0,0]

Kết quả

0.34657359131054916

Bài tiếp theo: Vòng lặp huấn luyện PyTorch →

Python · PyTorch

Bấm “Chạy thử” để gọi cross_entropy() với 2 ví dụ trong đề và so sánh kết quả. Dùng print() thoải mái để gỡ lỗi.