← 보드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]) |
- 리스트 안에 소수가 하나라도 있으면 전부 실수(float32)가 돼요.
torch.tensor([1.0, 2.0, 3])은 float32예요. torch.tensor([1, 2, 3], dtype=torch.float32)처럼dtype=으로 종류를 지정할 수 있어요.torch.tensor([1.2, 2.7, 3.5], dtype=torch.int64)는 소수점을 버려서tensor([1, 2, 3])이 돼요.- 글자(문자열)는 Tensor에 담을 수 없어서 에러(ValueError)가 나요.
- 딥러닝의 입력과 weight는 보통 float32를 써요.
시험엔 이렇게 써요 — 이렇게 고르세요
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주차) 녹취