RyanNerd
라덕'Story
RyanNerd
  • 분류 전체보기 (117)
    • Study Note (80)
      • Python (3)
      • R (1)
      • Airflow (7)
      • 통계 (26)
      • Machine Learning (16)
      • Streamlit (9)
      • Django (1)
      • Deep Learning (12)
      • dbt (2)
      • SQL (3)
    • 빅데이터분석기사 (1)
      • 필기 (1)
    • Programmers (28)
      • Python (13)
      • SQL (15)
    • Project (3)
      • Django (3)
    • Mac (2)

블로그 메뉴

  • NaverBlog
  • 홈

최근 글

전체 방문자
오늘
어제
hELLO · Designed By 정상우.
RyanNerd

라덕'Story

Study Note/Deep Learning

딥러닝의 그릇 '텐서(Tensor)'와 도구 '파이토치'

2025. 12. 30. 17:29

딥러닝을 시작하려면 데이터를 담는 그릇인 텐서(Tensor)를 이해해야 합니다. "엑셀(DataFrame) 쓰면 되지 않나요?"라고 하실 수 있지만, 딥러닝의 연산(GPU 가속)을 위해서는 모든 데이터가 텐서 형태여야 합니다.

오늘은 텐서의 차원별 개념과, 왜 우리가 텐서플로우 대신 파이토치를 써야 하는지 알아봅니다.

 

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

텐서는 데이터의 차원(Rank/Axis)에 따라 이름이 달라집니다. 의료 데이터로 비유하면 다음과 같습니다.

① 스칼라 (Scalar, 0D Tensor)

  • 정의: 축(Axis)이 없는 하나의 숫자.
  • 의료 예시: 환자 A의 체온 36.5
  • 특징: 차원이 0입니다. 수학적으로는 $x \in \mathbb{R}$ 로 표현합니다.

② 벡터 (Vector, 1D Tensor)

  • 정의: 숫자들이 일렬로 늘어선 배열. 축이 1개입니다.
  • 의료 예시: 환자 A의 바이탈 사인 [나이, 키, 몸무게, 혈압]
  • 특징: 1차원 배열입니다. 파이토치에서는 torch.Size([4])와 같이 표현됩니다.

③ 행렬 (Matrix, 2D Tensor)

  • 정의: 행(Row)과 열(Column) 2개의 축을 가진 데이터.
  • 의료 예시: 엑셀 시트 그 자체! (행: 환자들, 열: 검사 항목들)
  • 특징: 보통 (n, m) 형태로 크기(Shape)를 표현합니다.

④ 3차원 텐서 (3D Tensor)

  • 정의: 행렬(2D)이 여러 장 겹쳐 있는 형태.
  • 의료 예시: MRI 영상이나 CT 스캔. (가로 $\times$ 세로 $\times$ 깊이/Slice).
  • 특징: 시계열 데이터(환자 100명의 30일간의 기록)도 3차원 텐서로 표현됩니다.

 

2. 텐서의 핵심 용어: Rank, Shape, Axis

파이토치로 코딩할 때 에러가 가장 많이 나는 부분입니다. 꼭 기억하세요!

  1. 랭크 (Rank): 축(Axis)의 개수입니다. 차원(Dimension)이라고도 합니다.
    • 코드: tensor.dim()으로 확인 가능
  2. 크기 (Shape/Size): 각 축마다 데이터가 몇 개씩 있는지 나타냅니다.
  • 예시: 100명의 환자가 30일 동안 측정한 5가지 바이탈 사인 $\rightarrow$ Shape: (100, 30, 5)

 

3. 행렬 곱셈 (Matrix Multiplication)

딥러닝의 내부는 거대한 행렬 곱셈의 연속입니다.

계산은 컴퓨터가 해주지만, "앞 행렬의 열 개수와 뒤 행렬의 행 개수가 같아야 한다"는 규칙은 알아야 에러를 잡을 수 있습니다.

  • $(N \times \mathbf{M}) \times (\mathbf{M} \times K) = (N \times K)$
  • 가운데 차원($M$)이 서로 맞물려야 연산이 됩니다.

 

4. 왜 '파이토치(PyTorch)' 인가? (vs 텐서플로우)

딥러닝 프레임워크 3대장(Keras, TensorFlow, PyTorch) 중, 왜 우리는 파이토치를 선택했을까요?

구분 TensorFlow PyTorch
특징 정적 그래프 동적 그래프
장점 예전 코드가 많음,
배포에 유리
직관적임, 디버깅 쉬움
단점 배우기 어려움 배포가 조금 약함

 

의료 AI 논문들은 대부분 PyTorch로 구현되어 있습니다. 최신 논문(SOTA)을 내 데이터에 적용해보려면 파이토치가 필수입니다. 또한 코드가 파이썬스럽고 직관적이라 배우기 훨씬 쉽습니다.

 

5. [실습] 파이토치 설치 및 텐서 만들기

이제 파이토치를 설치하고 내 손으로 첫 텐서를 만들어봅시다.

설치 명령어

윈도우나 맥 터미널(Anaconda Prompt)에서 아래 명령어를 실행하세요.

pip install torch torchvision

(GPU를 쓰신다면 pytorch.org에서 내 컴퓨터에 맞는 명령어를 복사하는 것이 좋습니다 )

 

파이썬 실습 코드

import torch
import numpy as np

# 1. 버전 확인
print(f"PyTorch Version: {torch.__version__}")

# 2. 의료 데이터 텐서 만들기
# 환자 1명의 [나이, 혈압, 체온]
vital_signs = [45, 120, 36.5]
tensor_1d = torch.tensor(vital_signs)

print("\n--- 1D Tensor (Vector) ---")
print(f"값: {tensor_1d}")
print(f"차원(Rank): {tensor_1d.dim()}")  # 1
print(f"크기(Shape): {tensor_1d.shape}") # torch.Size([3])

# 3. 2D 텐서 (여러 명의 데이터)
patients = [
    [45, 120, 36.5],
    [50, 130, 37.0],
    [30, 110, 36.2]
]
tensor_2d = torch.tensor(patients)

print("\n--- 2D Tensor (Matrix) ---")
print(f"값:\n{tensor_2d}")
print(f"차원(Rank): {tensor_2d.dim()}")  # 2
print(f"크기(Shape): {tensor_2d.shape}") # torch.Size([3, 3]) -> (환자수, 항목수)

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

[PyTorch] 의료 데이터를 위한 텐서(Tensor) 완전 정복  (1) 2025.12.31
[PyTorch 기초] 의료 데이터를 텐서(Tensor)로 만드는 법  (1) 2025.12.30
수학으로 한 방에 풀까, 조금씩 찾아갈까? (최소제곱법 vs 경사하강법)  (0) 2025.12.30
AI는 어떻게 '최적의 선'을 찾을까? (선형회귀와 경사하강법)  (0) 2025.12.30
의료 데이터 분석가, 딥러닝의 기초 체력을 다지다  (0) 2025.12.30
    'Study Note/Deep Learning' 카테고리의 다른 글
    • [PyTorch] 의료 데이터를 위한 텐서(Tensor) 완전 정복
    • [PyTorch 기초] 의료 데이터를 텐서(Tensor)로 만드는 법
    • 수학으로 한 방에 풀까, 조금씩 찾아갈까? (최소제곱법 vs 경사하강법)
    • AI는 어떻게 '최적의 선'을 찾을까? (선형회귀와 경사하강법)
    RyanNerd
    RyanNerd
    라이언 덕후의 일상 스토리~

    티스토리툴바