딥러닝과 머신러닝을 공부하다 보면 가장 먼저 접하게 되는 개념 중 하나가 텐서(Tensor)입니다.
PyTorch에서는 모든 데이터가 텐서 형태로 처리되며, 이는 NumPy의 배열(Array)과 매우 유사해 보이지만 중요한 차이점이 존재합니다.
이번 글에서는
✔ 텐서의 개념
✔ NumPy 배열과의 공통점
✔ 두 객체의 차이점
✔ 언제 무엇을 사용하면 좋은지
를 정리해보겠습니다.
Tensor는 다차원 배열(Multi-dimensional Array)입니다.
스칼라, 벡터, 행렬을 일반화한 개념으로, PyTorch에서 모델 입력, 출력, 가중치, 손실값 등 모든 데이터는 텐서 형태로 표현됩니다.
| 차원 | 예시 |
| 0차원 | 스칼라 (5) |
| 1차원 | 벡터 [1, 2, 3] |
| 2차원 | 행렬 |
| 3차원 이상 | 이미지, 영상, 배치 데이터 |
import torch
x = torch.tensor([1, 2, 3])
print(x)
NumPy의 Array 역시 다차원 배열이며, 수치 연산을 빠르게 처리하기 위한 파이썬 라이브러리입니다.
import numpy as np
a = np.array([1, 2, 3])
print(a)
# NumPy → Tensor
torch_tensor = torch.from_numpy(a)
# Tensor → NumPy
numpy_array = x.numpy()
| 구분 | PyTorch Tensor | NumPy Array |
| GPU 사용 | 가능 (CUDA) | 불가능 |
| 자동 미분 | 지원 | 미지원 |
| 딥러닝 연산 | 최적화됨 | 제한적 |
| 주 용도 | 딥러닝 | 수치 계산, 데이터 처리 |
| 연산 속도 | GPU 사용 시 매우 빠름 | CPU 기반 |
PyTorch 텐서는 requires_grad=True 옵션을 통해 자동으로 미분값을 계산할 수 있습니다.
x = torch.tensor(2.0, requires_grad=True)
y = x ** 2
y.backward()
print(x.grad) # 4
NumPy는 이러한 기능이 없기 때문에, 딥러닝 학습에는 적합하지 않습니다.
x = torch.tensor([1,2,3]).cuda()
GPU 연산이 가능하다는 점은 딥러닝 학습 속도에 매우 큰 차이를 만듭니다.
NumPy는 CPU 연산만 지원합니다.
즉, 딥러닝을 한다면 반드시 Tensor를 사용해야 합니다.
| 오토 인코더가 적용되기 적합한 상황과 Encoder·Decoder의 개념 및 차이점 (0) | 2026.02.15 |
|---|---|
| CNN을 구성하는 각 레이어의 역할 (0) | 2026.02.14 |
| 딥러닝 프레임워크 PyTorch와 TensorFlow의 차이 (0) | 2026.02.07 |
| 딥러닝의 성능향상을 위해 고려하는 하이퍼파라미터의 종류 (0) | 2026.01.31 |
| 딥러닝과 머신러닝 간의 포함관계 (0) | 2026.01.31 |