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
https://heytech.tistory.com/386
'연구 > PyTorch' 카테고리의 다른 글
[PyTorch] Tensor 조작법 기본) indexing, view, squeeze, unsqueeze (0) | 2023.09.17 |
---|---|
PyTorch로 AutoEncoder 구현하기 (0) | 2023.08.16 |
Pytorch에서 TensorBoard 사용하기 (0) | 2023.08.03 |
Pytorch로 dataset 구성하기 (0) | 2023.07.27 |
Pytorch 사용해서 간단한 Neural Network 설계하기 (0) | 2023.07.17 |