Super Kawaii Cute Cat Kaoani PyTorch DataLoader 사용하기 & epoch, batch, iteration 개념

연구/PyTorch

PyTorch DataLoader 사용하기 & epoch, batch, iteration 개념

치킨고양이짱아 2023. 8. 3. 18:58
728x90
728x90

PyToch DataLoader를 사용하는 방법 및 epoch, batch, iteration 개념에 대해 살펴보자.

epoch, batch, iteration 개념

epoch: 전체 데이터 셋을 반복하는 횟수

전체 데이터셋으로 forward propagation(순전파)와 backward propagation(역전파)가 완료되면 1번의 epoch가 진행되었다고 보면 된다. 반복적인 학습을 통해 높은 정확도의 모델을 만들 수 있다.

epoch 값을 너무 낮게 설정하면 underfitting, 너무 높게 설정하면 overfitting이 발생할 확률이 높아진다.

 

batch size: forward와 backward에서 한번에 학습할 데이터 수

모델 학습 중 parameter를 업데이트 할 때 사용할 데이터 개수를 의미한다. 즉, batch size는 몇 개의 문제를 한 번에 쭉 풀고 채점할지 결정한다고 생각하면 된다. 만약 문제의 수가 100개(data size)이고,20개씩 문제를 풀고 채점한다면 batch size는 20이다.

메모리의 한계와 속도 저하 때문에 한 번의 epoch에서 모든 데이터를 한꺼번에 집어넣을 수 없다.

 

iteration: 한 epoch에서 batch를 학습하는 횟수

전체 데이터에 대해 총 batch의 수를 의미한다. step이라고 부르기도 한다.

만약 문제의 수가 100개(data size)이고,20개씩 문제를 풀고 채점한다면 batch size는 20이고 iteration은 5이다.

전체 데이터에 대한 오차 총합으로 propagation을 수행하면 weight가 한 번에 크게 변할 수 있기 때문에 gradient decent처럼 조금씩 이동해 최적화 할 수 있도록 해야한다.

 

ex) data size가 3000, batch size가 300이면 iteration은 10

즉 data size = batch size * iteration

방금 본 것들을 구현하기 위해서는 모든 데이터를 일일히 나눠져야하는데...pytorch에서 제공하는 DataLoader 클래스를 사용하면 아주 편리하게 batch data를 만들 수 있다!!

 

PyTorch의 DataLoader 사용하기

from torch.utils.data import DataLoader

DataLoader의 parameter는 다음과 같다.

DataLoader(dataset, batch_size, shuffle)

  • dataset = 사용할 데이터 셋
  • batch_size = 배치의 크기 (default value = 1)
  • shuffle = 데이터를 DataLoader에 섞어서 사용할 것인지 결정 (default value = False)

DataLoader를 사용해 학습하는 방법은 다음과 같다.

dataloader = DataLoader(dataset, batch_size = 64, shuffle = True)

for epoch in range(epochs+1):
	for batch_idx, samples in enumerate(dataloader):
            x_train, y_train = samples
            prediction = model(x_train)
            # cost 계산
            # optimize

 

Reference

https://blog.naver.com/PostView.nhn?blogId=je_un&logNo=222122446787 

 

[Pytorch] Dataloader - epoch, batch, iteration

epoch 전체 데이터 셋을 반복하는 횟수 전체 데이터셋으로 forwardpropagation(순전파)와 backwardpropagat...

blog.naver.com

https://heytech.tistory.com/386

 

[딥러닝] Epoch, Iteration, Batch size 개념

📚 목차 1. Batch Size 2. Iteration 3. Epoch 1. Batch Size Batch 크기는 모델 학습 중 parameter를 업데이트할 때 사용할 데이터 개수를 의미합니다. 사람이 문제 풀이를 통해 학습해 나가는 과정을 예로 들어보

heytech.tistory.com

 

728x90
728x90