Post

[AI Day 1] PyTorch 시작하기 - Tensor란 무엇일까?

[AI Day 1] PyTorch 시작하기 - Tensor란 무엇일까?

PyTorch 시작하기 - Tensor란 무엇일까?

오늘부터 AI 공부를 다시 시작했다.

단순히 이론만 공부하는 것이 아니라 실제로 AI 서비스를 만들 수 있는 개발자를 목표로 매일 학습한 내용을 정리해 보려고 한다.

오늘은 PyTorch의 가장 기본이 되는 Tensor에 대해 공부했다.


AI와 딥러닝의 관계

먼저 AI가 어떻게 구성되는지 이해하는 것이 중요하다.

1
2
3
4
5
AI
 └── Machine Learning
      └── Deep Learning
           └── Transformer
                └── GPT
  • AI : 사람처럼 문제를 해결하도록 만드는 기술
  • Machine Learning : 데이터를 통해 규칙을 학습하는 기술
  • Deep Learning : 인공신경망을 이용해 복잡한 패턴을 학습하는 기술

최근의 ChatGPT와 같은 생성형 AI도 모두 딥러닝을 기반으로 만들어졌다.


Tensor란?

Tensor는 PyTorch에서 사용하는 기본 데이터 구조이다.

Python에서는 리스트를 사용하지만

1
a = [1,2,3]

PyTorch에서는 Tensor를 사용한다.

1
2
3
import torch

a = torch.tensor([1,2,3])

Tensor를 사용하는 이유는 다음과 같다.

  • GPU를 이용한 빠른 연산
  • 자동 미분(Autograd) 지원
  • 효율적인 행렬 연산
  • 딥러닝 모델 학습에 최적화

Tensor의 차원

Tensor는 다양한 차원을 표현할 수 있다.

차원예시
0차원5
1차원[1,2,3]
2차원[[1,2],[3,4]]
3차원이미지 여러 장
4차원딥러닝에서 사용하는 이미지 Batch

이미지 데이터는 왜 (32, 3, 224, 224)일까?

딥러닝을 공부하다 보면 가장 많이 보는 형태가 바로

1
(32, 3, 224, 224)

이다.

각 숫자는 다음을 의미한다.

값의미
32Batch Size (한 번에 학습하는 이미지 개수)
3RGB Channel
224이미지 높이(Height)
224이미지 너비(Width)

예를 들어

1024×768 크기의 이미지를 모델에 넣기 전에

1
2
3
4
5
1024 × 768

↓

224 × 224

처럼 크기를 맞춘 후 학습하게 된다.


Tensor의 기본 속성

dtype

Tensor 안에 저장된 데이터의 자료형이다.

1
print(x.dtype)

예시

1
2
3
torch.int64
torch.float32
torch.bool

shape

Tensor의 각 차원의 크기를 나타낸다.

1
2
3
4
x = torch.tensor([[1,2,3],
                  [4,5,6]])

print(x.shape)

출력

1
torch.Size([2,3])

이는

  • 행 2개
  • 열 3개

라는 의미이다.


Tensor 연산

덧셈

1
A + B

뺄셈

1
A - B

원소별 곱셈

1
A * B

같은 위치의 원소끼리 곱한다.

예를 들어

1
2
3
4
1 × 11
2 × 12
3 × 13
...

처럼 계산된다.


행렬 곱셈

1
torch.matmul(A, B)

또는

1
A @ B

두 방식은 동일하다.

행렬 곱셈은

1
2
3
4
5
행(Row)

×

열(Column)

을 이용하여 계산한다.

딥러닝에서는 입력 데이터와 가중치를 계산할 때 이 연산이 가장 많이 사용된다.


실습 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import torch

A = torch.tensor([[1,2,3],
                  [4,5,6],
                  [7,8,9]])

B = torch.tensor([[11,12,13],
                  [14,15,16],
                  [17,18,19]])

print("덧셈")
print(A + B)

print("뺄셈")
print(A - B)

print("원소별 곱셈")
print(A * B)

print("행렬 곱셈")
print(A @ B)

오늘 공부하면서 느낀 점

처음에는 Tensor가 단순히 Python 리스트를 대체하는 자료형이라고 생각했다.

하지만 공부하면서 Tensor는 GPU 연산과 자동 미분을 지원하기 때문에 딥러닝을 위해 설계된 자료형이라는 점을 알게 되었다.

또한 A * B와 A @ B는 비슷해 보이지만 실제로는 전혀 다른 연산이라는 점도 이해하게 되었다.


마무리

오늘은 PyTorch의 가장 기본이 되는 Tensor를 공부했다.

다음에는

  • Tensor의 Shape 변경
  • Reshape
  • View
  • Squeeze
  • Unsqueeze

등 Tensor를 더욱 자유롭게 다루는 방법을 공부할 예정이다.

꾸준히 학습하면서 AI 프로젝트를 직접 만들 수 있는 수준까지 성장하는 것이 목표이다.

This post is licensed under CC BY 4.0 by the author.