본문 바로가기
Python/Deep Learning

[딥러닝] PyTorch에서 Tensor 개념

by 좌우지간에 2025. 2. 5.

1. 파이토치(PyTorch) 소개

파이토치는 텐서(Tensor)를 기본 단위로 삼아 딥러닝 모델을 직관적으로 구성할 수 있는 라이브러리입니다. 자동 미분(Autograd)과 GPU 병렬 연산을 쉽게 적용할 수 있어, 다양한 연구·실무 환경에서 폭넓게 사용됩니다.


2. 텐서(Tensor)란 무엇인가

  • 텐서는 데이터를 담는 “그릇”이며, 스칼라(0차원), 벡터(1차원), 행렬(2차원), 그 이상의 고차원 배열 형태를 모두 아우릅니다.
  • 모든 딥러닝 모델의 입력, 가중치, 중간 연산 결과 등이 텐서로 표현되며, 컴퓨터가 처리할 수 있는 숫자 형태로 데이터를 유연하게 관리합니다.
  • 예시: 이미지(4차원 텐서), 시계열 데이터(3차원 텐서), 일반 벡터(1차원 텐서) 등 다양한 차원 구조를 가집니다.

3. 행렬곱셈(Matrix Multiplication)의 중요성

  1. 선형 변환(Linear Transformation)의 핵심
    입력 텐서를 새로운 표현 공간으로 투영하는 핵심이 행렬곱셈입니다. 예를 들어, 입력 x(벡터)와 가중치 행렬 W를 곱해 y를 얻는 과정은 딥러닝 모델의 가장 기본적인 선형 변환입니다.
  2. 특징 조합(Feature Combination)
    행렬곱셈은 ‘행과 열의 내적(dot product)’을 통해 여러 특성을 조합합니다. 이는 단순 요소별 곱셈과 달리, 서로 다른 축에 속한 값들이 상호 작용해 더욱 풍부한 표현을 가능케 합니다.
  3. 가중치 적용
    각 축마다 다른 가중치가 곱해져, 모델이 입력 데이터의 다양한 특징을 자동으로 학습할 수 있습니다.

4. 텐서와 행렬곱셈의 실제 활용

(1) MLP(다층 퍼셉트론)

  • 레이어별로 입력 벡터와 가중치 행렬을 곱한 뒤, 활성화 함수를 적용해 다음 레이어로 보냅니다.
  • 행렬곱 개념을 반복하면서, 입력 공간에서 비선형 변환을 통해 복잡한 패턴을 학습합니다.

(2) RNN(순환 신경망)

  • 매 시점의 입력과 이전 히든 스테이트(hidden state)를 각각 가중치 행렬과 곱해 새로운 히든 스테이트를 생성합니다.
  • 이 과정을 통해 과거 정보를 현재 시점에 반영하여 시퀀스 맥락을 학습합니다.

(3) CNN(합성곱 신경망)

  • 직접 행렬곱셈 대신 합성곱 연산을 쓰지만, 내부적으로 수많은 곱셈·덧셈이 동시에 일어납니다.
  • 때로는 합성곱을 행렬 연산 형태로 변환해(im2col 등) GPU 병렬 연산의 효율을 극대화하기도 합니다.

5. GPU 병렬 연산의 가치

  • 행렬곱셈은 (m×n)×(n×p) 같은 큰 크기의 연산을 수행할 때 연산량이 급증합니다.
  • GPU는 대규모 코어를 병렬로 운용하여, 이러한 복잡한 행렬곱 연산을 동시에 처리함으로써 학습·추론 속도를 획기적으로 개선합니다.

6. 결론

  • PyTorch는 텐서를 통해 딥러닝 모델을 유연하고 직관적으로 구성할 수 있도록 돕습니다.
  • 텐서는 다양한 차원을 가진 데이터를 숫자 형태로 담아, 스칼라부터 고차원 배열까지 폭넓게 표현할 수 있습니다.
  • 행렬곱셈은 딥러닝 모델이 입력을 선형 변환하고, 다양하게 특성을 조합하여 복잡한 패턴을 학습하도록 하는 필수 메커니즘입니다.
  • 마지막으로, GPU 병렬 연산은 이와 같은 대규모 행렬곱을 빠르게 처리해, 모델 학습과 추론 효율을 극대화합니다.

'Python > Deep Learning' 카테고리의 다른 글

[딥러닝] 경사하강법을 사용한 신경망 학습법  (0) 2025.02.10
[PyTorch] 텐서 연산  (0) 2025.02.06
딥러닝 발전과정,RNN  (0) 2025.02.03
Llama 코드예시, 최적화  (2) 2025.01.27
딥러닝 Transformer 정리  (0) 2025.01.24