← 커리큘럼으로
PyTorch 오류 해결: shape·NaN·CUDA 8개 체크리스트
운영자 실전 정리 · 2026년 9월 업데이트 · 약 8분 분량
PyTorch 오류의 절반은 shape, 30%는 데이터, 나머지는 환경 문제였습니다. 오류가 나면 아래 순서대로 보세요.
shape 오류 3종
- mat1 and mat2 shapes cannot be multiplied: Linear의 in_features가 입력 마지막 차원과 다른 경우.
x.shape와 layer.weight.shape를 나란히 출력하세요.
- Expected all tensors on same device: 모델은 CUDA, 입력은 CPU인 경우.
.to(device) 누락을 먼저 의심하세요.
- Target size mismatch (CrossEntropy): 타깃이 (N,) 정수 텐서인지 확인. 원-핫으로 넣으면 틀립니다.
print("x:", x.shape, x.device)
print("w:", layer.weight.shape)
# x: torch.Size([32, 128]) / w: torch.Size([64, 128]) 이면 정상
loss NaN 3단계
- 학습률을 1/10로 낮춰서 재현되는지 확인
- 입력에 NaN/inf가 있는지
torch.isnan(x).any()로 검사
- 소프트맥스+로그를 CrossEntropyLoss로 합쳤는지 확인 (따로 쓰면 오버플로)
CUDA 메모리 2가지
- out of memory: 배치 크기를 절반으로, 그 다음 그래디언트 누적(accumulation)으로 보완
- 느리지만 터지진 않음: DataLoader의 num_workers와 pin_memory를 점검
다음: Phase 3-01 The Perceptron · 선형대수 로드맵