Cross-entropy bằng tensor
Trung bìnhPyTorchhà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.