시험공부빅데이터분석
← 보드Tensor · 2/11

shape 읽기와 확인 3종 — shape, dtype, device ★★★

Tensor를 다룰 때 항상 같이 확인해야 하는 세 가지가 있어요. 교수님이 "에러가 나면 shape, dtype, device부터 보라"고 반복해서 말했어요.

이름무엇예
shape모양 (각 차원의 크기)torch.Size([2, 3])
dtype숫자 종류 (자료형)torch.int64
device어느 장치에 있나 (CPU/GPU)cpu
x = torch.tensor([[10, 20, 30], [40, 50, 60]]) print(x.shape) print(x.ndim) print(x.numel()) print(x.dtype) print(x.device)
torch.Size([2, 3]) 2 6 torch.int64 cpu
코드 줄무슨 뜻
x.shape모양. 2행 3열 → [2, 3]
x.ndim차원의 수. shape에 적힌 숫자가 2개이니 2
x.numel()전체 원소 개수. shape 숫자를 곱해요. 2×3 = 6
x.dtype정수만 적었으니 int64
x.device기본은 CPU에 만들어져요(3장)

shape 읽는 요령은 두 가지예요. ① shape 안 숫자가 몇 개인지가 차원 수예요. ② 숫자를 모두 곱하면 전체 원소 수예요.

헷갈리는 점

(3,)의 3은 "3차원"이 아니라 "원소가 3개"라는 뜻이에요. 숫자가 하나뿐이니 1차원이에요. 쉼표가 붙는 건 0장에서 본 대로 원소가 하나인 튜플은 쉼표를 써야 하기 때문이에요.

아래는 수업 실습 1의 정답이에요. 손으로 먼저 맞혀 보고 확인해 보세요.

Tensorshapendimnumeldtype
torch.tensor(10)()01int64
torch.tensor([10, 20, 30, 40])(4,)14int64
torch.tensor([[1, 2], [3, 4], [5, 6]])(3, 2)26int64
torch.zeros(2, 3, 4)(2, 3, 4)324float32

마지막 줄의 dtype이 float32인 이유는 zeros가 기본으로 소수 숫자(실수)를 만들기 때문이에요(2-3).

시험엔 이렇게 써요 — 이렇게 고르세요

shape은 각 차원의 크기이며 ndim은 차원 수, numel()은 전체 원소 수이다. 시험 코드에서는 print(tuple(a.shape))처럼 shape을 튜플로 찍는 경우가 많아요. 결과는 (3,), (3, 1) 같은 모양으로 나와요. 원소 수는 shape 숫자를 곱해서 확인하세요.

잠깐 확인 — shape이 (4, 5, 2)인 Tensor의 ndim과 numel은?

ndim은 3, numel은 4×5×2 = 40이에요.

다음 카드 → Tensor 만들기와 dtype

자료: 2주차 · Week02_Tensor_and_GPU(pdf, 풀이포함 ipynb) · 빅분02(2주차) 녹취