아이공의 AI 공부 도전기

Epoch vs Iteration 비교 

 

     

Epoch와 Iteration은 둘 다 모두 같은 의미일 것이다 라고 생각을 했었습니다. 그러나 잘못된 생각이었다는 것을 최근에서야 깨닫게 되었습니다. 간략히 둘 간의 비교에 대해 설명드리면 다음과 같습니다.

 

일반적인 Neural Network 훈련 방식은 다음과 간단히 표현할 수 있습니다.

 

epochs = 100
batch_size = 25

dataset = torch.utils.data.Dataset(datasets)
dataloader = torch.utils.data.DataLoader(dataset, ...)

for epoch in range(epochs):
  for img in dataloader: 
    train()

이 코드를 가지고 설명을 드리면 다음과 같습니다.

1. Epoch

전체 데이터 세트를 한 번 돌린 것이 바로 epoch입니다. 이 부분은 모두가 다 아시는 내용이라 생각합니다.

2. Iteration

Iteration이란 batch size만큼 돌아가는 횟수를 말하는 용어로 len(dataloader)을 의미합니다.

예시

가령 예를 들어

Image가 1000개 있고 batch_size가 25, epoch가 100이라면

 

1 Iteration은 25개의 image를 훈련한 결과

1 epoch는 1000개의 이미지를 훈련한 결과입니다.

 

즉, 총 100 epoch의 결과는 1000 이미지 * 100 epoch 횟수 = 100,000 이미지 학습을 의미합니다.

이는 100,000/25 = 4000 iteration을 의미합니다.

 

1 epoch 당 iteration 수는 총 이미지 수 / batch_size입니다.

즉 위 예시에서는 1000/25 = 40입니다.

참조

일반적인 학습 방법으로는 total epochs를 고려한 계산을 하지만 어떤 경우에서는 Iteration을 기반으로 진행하는 경우가 있습니다. 해당의 내용을 위해서 다음과 같은 방식을 사용하기도 합니다.

Iteration = 10000

dataset = ~
dataloader = ~

total_epochs = int(Iteration / len(dataloader))

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading