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

Tensor 만들기와 dtype

자주 쓰는 생성 함수를 표로 모았어요. 괄호 안 숫자는 shape이에요.

함수만드는 것
torch.tensor(데이터)주어진 숫자(리스트)로 만들어요. dtype을 숫자 모양으로 알아서 정해요
torch.zeros(2, 3)0으로 가득 찬 2×3
torch.ones(2, 3)1로 가득 찬 2×3
torch.arange(시작, 끝, 간격)일정한 간격의 숫자 줄. 끝 값은 포함하지 않아요(range와 같은 규칙)
torch.rand(2, 3)0 이상 1 미만의 난수(균등분포)
torch.randn(2, 3)평균 0, 표준편차 1인 정규분포 난수. weight 초기화에 자주 써요
torch.manual_seed(42)난수를 고정해요. 같은 seed면 같은 난수가 나와요
t.item()원소가 하나뿐인 Tensor를 파이썬 숫자로 꺼내요
print(torch.arange(0, 10, 2)) print(torch.arange(5)) print(torch.arange(0, 2, 0.5)) print(torch.zeros(2, 3)) print(torch.tensor(95.5).item())
tensor([0, 2, 4, 6, 8]) tensor([0, 1, 2, 3, 4]) tensor([0.0000, 0.5000, 1.0000, 1.5000]) tensor([[0., 0., 0.], [0., 0., 0.]]) 95.5
코드 줄무슨 뜻
torch.arange(0, 10, 2)0에서 시작해 2씩. 10은 포함 안 해서 0, 2, 4, 6, 8
torch.arange(5)시작과 간격을 생략하면 0부터 1씩 → 0, 1, 2, 3, 4 (5개)
torch.arange(0, 2, 0.5)간격이 0.5이니 0, 0.5, 1.0, 1.5. 실수라서 소수점으로 찍혀요
.item()Tensor 모양 tensor(95.5000)이 아니라 그냥 숫자 95.5로 바뀌어요

seed를 왜 고정하나요? 모델의 weight를 난수로 시작하는데 시작점이 매번 다르면 결과를 비교할 수 없기 때문이에요. 교수님은 실습에서 계속 seed 42를 썼어요.

dtype은 숫자의 종류예요. 시험에서 자주 나오는 것은 아래 네 가지예요.

dtype어떤 값이렇게 만들어져요
torch.int64정수torch.tensor([1, 2, 3])
torch.float32실수(소수)torch.tensor([1.0, 2.0, 3.0]), zeros, ones, rand, randn
torch.float64더 정밀한 실수dtype을 지정했을 때
torch.bool참/거짓torch.tensor([True, False])
시험엔 이렇게 써요 — 이렇게 고르세요

arange의 끝 값은 포함하지 않고, 원소가 하나인 Tensor는 .item()으로 파이썬 숫자로 바꾼다. 정수만 적으면 int64, 소수가 하나라도 있으면 float32이다. 난수를 재현하려면 manual_seed로 seed를 고정한다.

잠깐 확인 — torch.arange(1, 10, 3)의 결과는?

tensor([1, 4, 7])이에요. 1에서 시작해 3씩 더하고, 10 이상은 포함하지 않아요.

다음 카드 → 인덱싱과 슬라이싱 — x[:, 1]과 x[:, 1:2]는 어떻게 다를까 ★★★ 시험 단골

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