모든 텐서에는 기본 속성이 세 가지 있어
print(t)를 실행하면 PyTorch는 텐서의 값을 보여줘. 하지만 뭔가 깨졌을 때는 값보다 메타데이터가 훨씬 중요해. 다음 세 속성을 이 순서로 확인해:
- 모양: 각 차원의 크기야. 어떤 오류든 가장 먼저 확인해.
- 자료형: 원소를 표현하는 형식이야. 특히 혼합 정밀도 학습에서는 두 번째로 확인해야 해.
- 장치: 데이터가 물리적으로 놓인 곳이야. 'expected cuda:0 got cpu' 오류가 이 속성을 가리켜.
혼합 정밀도 학습이 본격적인 작업의 기본값이 된 만큼 자료형 계열은 익혀 두자.
torch.float32(별칭torch.float): 활성화와 가중치에 널리 쓰는 기본 자료형이야.torch.float16(별칭torch.half): 메모리와 대역폭을 절반만 쓰지만 동적 범위가 좁아서 GradScaler가 필요해.torch.bfloat16: float32와 지수 범위는 같고 가수 정밀도는 낮아. Ampere 이상 GPU와 Apple Silicon에서 쓰는 현대적인 혼합 정밀도 자료형이며, 보통 GradScaler가 필요 없어.torch.float64(double): 배정밀도 자료형이야. 과학 계산이나 수치 문제를 의심할 때 쓰며 학습의 기본값은 아니야.torch.int64(long): 클래스 레이블과 인덱스, 임베딩 조회에 쓰는 기본 자료형이야.torch.bool: 마스크에 써.
형변환
.to()는 자료형과 장치를 바꾸는 범용 연산이야. 자료형이나 장치, 또는 둘 다 받을 수 있고 이미 요청한 상태라면 원래 텐서를 그대로 반환해. .float(), .half(), .cpu(), .cuda() 같은 줄임말도 있으니 문맥에 더 잘 읽히는 쪽을 쓰면 돼.