카테고리 없음

NHWC 형식에서 Mul-Add 브로드캐스팅

Captain Herlock 2025. 10. 30. 15:48
반응형
NHWC Mul-Add 브로드캐스팅

🎨 NHWC 형식에서 Mul-Add 브로드캐스팅

텐서 형태: [1, 56, 56, 96]
형식: NHWC (Batch, Height, Width, Channels)
Mul 가중치: [96] - 각 채널마다 하나의 값
Add 편향: [96] - 각 채널마다 하나의 값
💡 핵심 개념:
NHWC 형식에서는 마지막 차원(96)이 채널입니다. 각 픽셀 위치 (h, w)에서 96개의 채널 값이 있고, 각 채널마다 독립적으로 곱셈과 덧셈이 적용됩니다.

📊 시각화 (단순화된 예제: 4×4×3)

입력 텐서
[4×4×3]
클릭하면 해당 픽셀의 채널 값을 볼 수 있습니다
×
Mul 가중치
[3]
+
Add 편향
[3]
=
출력 텐서
[4×4×3]

🎮 인터랙티브 계산기

계산 과정:
결과:

📝 실제 ONNX Conv 변환

# NHWC [1, 56, 56, 96] → Conv 변환 # # 1단계: Transpose (NHWC → NCHW) Transpose([1, 56, 56, 96], perm=[0, 3, 1, 2]) → [1, 96, 56, 56] # 2단계: Depthwise Conv Conv( input=[1, 96, 56, 56], weight=[96, 1, 1, 1], # 각 채널당 1×1 커널 bias=[96], groups=96 # Depthwise: 각 채널 독립 처리 ) → [1, 96, 56, 56] # 3단계: Transpose (NCHW → NHWC) Transpose([1, 96, 56, 56], perm=[0, 2, 3, 1]) → [1, 56, 56, 96]
🔍 왜 Transpose가 필요한가?
• ONNX Conv 연산은 항상 NCHW 형식을 기대합니다
• NHWC 데이터를 직접 Conv에 넣으면 채널을 잘못된 차원으로 해석합니다
• Transpose로 형식을 변환하면 정확한 계산이 보장됩니다
• 최종 출력도 원래 NHWC 형식으로 되돌려야 합니다
반응형