딥러닝 기초 - DataSet

Yujin Jung·2026년 9월 9일

1. Dataset 기본 구조

이미지 분류 데이터는 보통:

X = 이미지 데이터
y = 정답(Label)

형태로 구성된다.

예:

X = torch.rand(100, 1, 28, 28)
y = torch.randint(0, 10, (100,))

2. torch.rand(100, 1, 28, 28)

이미지 데이터 100장을 만든다.

Shape 의미:

(100, 1, 28, 28)
 ↑    ↑   ↑   ↑
샘플  채널 높이 너비

즉:

  • 100 = 이미지 100장
  • 1 = 채널 1개
  • 28 = 높이 28픽셀
  • 28 = 너비 28픽셀

이미지 한 장의 Shape:

(1, 28, 28)

3. Channel

채널은 이미지 한 장을 구성하는 정보 층의 수이다.

흑백:

1 Channel

RGB 컬러:

3 Channels

R
G
B

따라서 RGB 이미지 100장이면:

(100, 3, 28, 28)

4. Channel과 Label은 관계없음

채널이 3개라고 Label도 3배가 되는 게 아니다.

R ┐
G ├→ 이미지 1장 → Label 1개
B ┘

예:

이미지 100장
→ Label 100개

채널 수가 1이든 3이든 샘플 하나당 정답 하나인 분류 문제라면 Label 개수는 그대로이다.


5. torch.randint(0, 10, (100,))

0~9 사이 정수로 정답 100개를 만든다.

예:

[7, 2, 1, 9, 0, ...]

Shape:

(100,)

즉:

X[0] ↔ y[0]
X[1] ↔ y[1]
X[2] ↔ y[2]
...

이미지와 Label이 같은 인덱스로 한 쌍이 된다.


6. Batch

전체 데이터를 한 번에 모델에 넣지 않고 작은 묶음으로 나눠 학습하는 것.

예:

전체 데이터 = 100개
batch_size = 2

이면:

배치 1 → 데이터 2개
배치 2 → 데이터 2개
...
배치 50 → 데이터 2개

7. Batch Size

batch_size = 2 의미:

배치가 2개라는 뜻이 아니라, 배치 하나에 데이터 2개가 들어간다는 뜻

예:

원본 데이터 Shape
(100, 1, 28, 28)

한 Batch Shape
(2, 1, 28, 28)

8. Batch 개수

기본적으로:

배치 개수 × 배치 사이즈
= 전체 샘플 수

예:

100개 데이터
batch_size = 10

→ 10개 Batch

단, 딱 나누어지지 않으면 마지막 Batch는 작을 수 있다.

예:

103개
batch_size = 10

→ 10개씩 10 Batch
→ 마지막 3개

정확한 표현:

모든 Batch에 들어있는 샘플 수의 합 = 전체 샘플 수


9. Batch에 데이터가 들어가는 순서

PyTorch DataLoader에서 보통 설정한다.

DataLoader(
    dataset,
    batch_size=4,
    shuffle=True
)

shuffle=True

데이터 순서를 랜덤으로 섞은 뒤 Batch를 만든다.

원래
0 1 2 3 4 5 6 7

섞기
5 1 7 0 3 6 2 4

Batch 1
5 1 7 0

Batch 2
3 6 2 4

shuffle=False

순서대로 Batch를 만든다.

Batch 1 → 0 1 2 3
Batch 2 → 4 5 6 7

10. Sampler

어떤 샘플을 어떤 순서로 선택할지를 결정하는 기능.

대표적:

RandomSampler
→ 랜덤 선택

SequentialSampler
→ 순서대로 선택

WeightedRandomSampler
→ 특정 데이터가 더 자주 선택되도록 가중치 부여

클래스 불균형이 있을 때 WeightedRandomSampler 등을 사용할 수 있다.


5일차 핵심 압축

Dataset
= 데이터 + Label

이미지 Shape
= [샘플 수, 채널, 높이, 너비]

(100,1,28,28)
= 흑백 28×28 이미지 100장

Label Shape
= (100,)
= 이미지 100장의 정답 100개

Batch
= 데이터를 나눈 작은 묶음

Batch Size
= 한 Batch 안의 데이터 개수

shuffle=True
= 데이터를 섞어서 Batch 구성

Sampler
= 어떤 데이터를 어떤 순서로 뽑을지 결정
profile
이것저것 다 해보는 컴퓨터학부 학부생

0개의 댓글