개요
Cross-Entropy 손실은 분류(classification) 문제에서 널리 사용되는 목적 함수다.
모델 출력 logits와 타깃 인덱스 벡터를 입력으로 받아, 소프트맥스 확률을 통해 손실을 계산한다.
현재 구현은 CUDA f32 row-major 텐서만 지원한다.
Forward API
L = ge.cross_entropy(X, targets, reduction="mean")
입력
- X: (M, N) float32, row-major
- M: 배치 크기
- N: 클래스 개수
- targets: (M,) int32, row-major
- 각 샘플의 정답 인덱스 (0 ≤ target < N)
- reduction (str, optional):
- "none" → per-sample 손실 (M,) 반환
- "mean" → 평균 손실 스칼라 (1,) 반환
- "sum" → 합 손실 스칼라 (1,) 반환
출력
- loss: reduction 모드에 따라 (M,) 또는 (1,) float32
Backward API
dX = ge.cross_entropy_backward(X, targets, reduction="mean")
입력
- X: (M, N) float32 logits
- targets: (M,) int32
- reduction: "none" | "mean" | "sum"
출력
- dX: (M, N) float32
- Softmax 후 미분된 gradient
- "mean"일 경우, 배치 크기 M으로 나눈 평균값 반환
구현 메모
- dtype 제약: 현재 DType::F32 / DType::I32만 지원
- target 인덱스: 내부에서는 int64_t*로 해석하지만, Host 쪽에서 I32를 준비하면 자동 캐스팅 처리됨
- reduction: mean 모드는 Host 리덕션으로 처리 (MVP 버전)
- 향후 개선: GPU 내 reduction 커널, label smoothing, ignore_index 옵션 추가 가능
'dev_AI_framework' 카테고리의 다른 글
| Dropout (CUDA) — 구현 문서 (0) | 2025.09.22 |
|---|---|
| Cross-Entropy 모듈 추가 / 수정 (0) | 2025.09.22 |
| Softmax Operation — Design & Implementation Notes (0) | 2025.09.22 |
| Backward 구현 및 Graph_excutor_v2 에 이식 (0) | 2025.09.21 |
| row bias, column bias - pern, perm (0) | 2025.09.20 |