
균일 양자화 (Uniform Quantization)
69번 Clip by Value 는 범위 밖 값을 경계로 이동. 양자화는 clip + 이산화 — 범위 안도 N 개의 균등 레벨 중 가장 가까운 값으로 snap:
- x←clip(x,lo,hi)
- 단계 간격 Δ=(hi−lo)/(N−1)
- x^=round((x−lo)/Δ)⋅Δ+lo
결과: N 개의 정확한 값만 등장 → 부동소수를 ⌈log2N⌉ 비트로 저장 가능.
어디에 쓰이나
- Post-training quantization: fp32 가중치/활성화 → int8 으로 변환해 추론 속도/메모리 4× 개선.
- 색상 양자화: 이미지 색상 팔레트.
- gradient compression: 분산 학습 통신량 줄이기.
양자화 오차
e=x−x^,∣e∣≤Δ/2=(hi−lo)/(2(N−1))
N 2배 → 오차 절반. 8-bit (N=256) 이면 full range 대비 ≈0.2%.
과제
함수 uniform_quantize(x, lo, hi, num_levels) 를 완성하세요.
- 배열
x, 스칼라 lo < hi, 정수 num_levels >= 2.
- 반환: 같은 shape, 값은 {lo,lo+Δ,…,hi} 중 하나.
- 루프 금지.
테스트 케이스
| # | 이름 | 검증 |
|---|
| 1 | 경계값 그대로 | quantize(lo, lo, hi, N) == lo |
| 2 | num_levels=2 → {lo, hi} 만 | 이진화 |
| 3 | 범위 바깥 → clip | |
| 4 | 양자화 오차 ≤ Δ/2 | 무작위 입력 |
| 5 | 정확히 N개의 유니크 값 (범위 내 충분 샘플) | |