PyTorch에서 텐서란 무엇이고, NumPy의 Array(배열)과 어떤 차이가 있나?

Aurora·2025년 12월 22일

AI

목록 보기
14/25

목차

  1. PyTorch에서 텐서(Tensor)란 무엇인가
  2. NumPy Array(ndarray)란 무엇인가
  3. 공통점 (왜 헷갈리는가?)
  4. 핵심 차이점
    4.1. 자동 미분(Autograd) 지원 여부
    4.2. GPU 사용 가능 여부
    4.3. 연산 그래프 추적
    4.4. 프레임워크 목적의 차이
  5. 언제 무엇을 써야 하나?
    5.1. NumPy가 적합한 경우
    5.2. PyTorch Tensor가 적합한 경우
  6. 결론

1. PyTorch에서 텐서(Tensor)란 무엇인가

  • Tensor는 PyTorch의 기본 데이터 구조
  • 다차원 수치 데이터를 저장하고 연산하기 위한 객체
  • 형태적으로는 NumPy의 ndarray와 거의 동일
import torch
x = torch.tensor([[1,2], [3,4]])
  • 0차원: 스칼라
  • 1차원: 벡터
  • 2차원: 행렬
  • 3차원 이상(n차원) : 일반 텐서

이렇게 나뉠 수 있는데,

이것이 딥러닝에서는

  • 입력 데이터
  • 가중치
  • 출력
  • 그래디언트

이 내용들이 모두 텐서로 표현됨.

2. NumPy Array(ndarray)란 무엇인가

NumPy의 ndarray는 CPU 메모리에 존재하는 다차원 수치 배열
(참고 : GPU가속을 직접 제공하지 않을 뿐, CPU만을 요구하는 것은 아님)

import numpy as np
a = np.array([[1,2], [3,4]])
  • 과학 계산, 통계, 신호 처리 등에 최적화됨
  • 파이썬 수치 계산의 사실상 표준이다.

3. 공통점 (왜 헷갈리는가?)

공통점설명
다차원 구조n차원 배열
슬라이싱a[1:, ::2] 가능
브로드캐스팅자동 차원 확장
벡터화 연산루프 없이 연산

문법과 사용 감각이 매우 유사하다!

4. 핵심 차이점

4.1. 자동 미분(Autograd) 지원 여부

항목PyTorch TensorNumPy Array
자동 미분지원미지원
requires_grad있음없음
x = torch.tensor(2.0, requires_grad=True)
y = x **2
y.backward()
print(x.grad)# 4.0

이것이 딥러닝의 핵심 기능이다.

4.2. GPU 사용 가능 여부

항목PyTorch TensorNumPy Array
GPU 연산가능 (CUDA)불가
장치 이동.to('cuda')없음
x = torch.tensor([1,2,3]).cuda()

cuda를 이용하여 대규모 딥러닝 연산이 더욱 용이하다

4.3. 연산 그래프 추적

  • PyTorch 텐서:
    • 연산 과정을 그래프로 기록
    • 역전파 가능
  • NumPy 배열:
    • 연산 결과만 존재
    • 미분 정보 없음

4.4. 프레임워크 목적의 차이

구분PyTorchNumPy
목적딥러닝·자동 미분범용 수치 계산
최적화 대상GPU / 신경망CPU 벡터 연산

5. 언제 무엇을 써야 하나?

NumPy가 적합한 경우

  • 데이터 전처리
  • 통계 분석
  • 간단한 수치 계산
  • 모델 학습 전 단계

PyTorch Tensor가 적합한 경우

  • 딥러닝 모델 구현
  • 역전파 필요
  • GPU 연산
  • 학습 루프 작성

6. 결론

  • NumPy 배열은 “계산기”, PyTorch 텐서는 “미분 가능한 계산기 + GPU”다.
profile
개발에 애정을 쏟는 연구자입니다

0개의 댓글