텐서(tensor)는 딥러닝에서 가장 자주 마주치는 단어 중 하나입니다.
한마디로 정리하면 「숫자를 다차원으로 배열한 자료 구조」입니다.
PyTorch의 「Tensor」 클래스, TensorFlow의 이름 자체가 이 개념에서 왔습니다.
차원으로 분류하면 다음과 같습니다.
0차원 텐서 = 「스칼라(scalar)」 — 한 숫자(예: 5).
1차원 텐서 = 「벡터(vector)」 — 숫자의 배열(예: [1, 2, 3]).
2차원 텐서 = 「행렬(matrix)」 — 행과 열의 표(예: 3×3 격자).
3차원 이상 = 「고차원 텐서」.
딥러닝에서 자주 쓰는 텐서의 모양은 다음과 같습니다.
컬러 이미지 한 장 = 3차원(높이×너비×색채널 3).
이미지 100장의 배치 = 4차원(100×높이×너비×3).
텍스트 한 문장 = 2차원(토큰 수 × 임베딩 차원).
비디오 한 클립 = 4차원(프레임×높이×너비×3).
비유하자면 텐서는 「숫자의 다차원 큐브」와 같습니다.
1차원이 줄, 2차원이 표, 3차원이 큐브, 4차원이 「큐브의 묶음」입니다.
사람이 4차원 이상은 머리에 그리기 어렵지만, 컴퓨터는 거리낌 없이 다룹니다.
왜 「텐서」라는 단어를 썼을까요?
수학·물리에서 텐서는 더 엄격한 정의(좌표 변환에 따라 특정 규칙으로 변환되는 양)를 가지지만, 딥러닝에서는 그 엄격한 정의보다 「다차원 배열」이라는 단순한 의미로 씁니다.
PyTorch·TensorFlow의 「Tensor」도 사실상 NumPy의 ndarray에 GPU 가속과 자동 미분이 더해진 형태입니다.
한 줄 요약
텐서는 「숫자를 다차원으로 배열한 자료 구조」로, 0차원(스칼라)부터 고차원까지 가능합니다.
딥러닝의 모든 입력·중간 표현·출력이 텐서 형태로 다뤄집니다.
더 알아볼 것
- NumPy ndarray와 PyTorch Tensor의 차이
- Broadcasting — 다른 모양의 텐서 연산
- 텐서의 메모리 레이아웃 (contiguous)