딥 러닝 도구인 Caffe를 사용하면서 batch_size, max_iter, test_iter, epoch 등의 용어를 이해하는 것이 힘들었어서 이렇게 기록으로 남깁니다. 설명을 쉽게 하기 위해 사진을 Caffe로 처리하는 경우를 가정해 보도록 하겠습니다.


1. batch_size

배치(batch)는 한 번에 처리하는 사진의 장 수를 말합니다. Caffe에서 기본으로 제공되는 cifar10 예제의 cifar10_full_train_test.prototxt 파일을 열어보면 batch_size: 100 이라는 부분이 있습니다. 한 번에 100장의 사진을 처리한다는 의미입니다.


2. max_iter

반복(이터레이션, iteration)은 몇 개의 배치(batch)를 사용할 것인지를 의미합니다. max_iter는 기계 학습(머신 러닝)의 학습(training) 과정에서 반복을 몇 번 할 것인지를 정해줍니다. cifar10 예제의 cifar10_full_solver.prototxt 파일에 max_iter: 60000 이라고 되어 있는데, batch_size:100 이기 때문에 학습을 한 번에 사진 100장씩 60,000번 하겠다는 말이 됩니다. 총 사진 6,000,000장으로 학습이 이루어질 것입니다. 이 과정에서 사진이 중복될 수 있는데, 그에 대해서는 아래의 세대(이폭, epoch) 에서 설명하겠습니다.


3. test_iter

학습을 했으면 실전에 사용해 보아야 합니다. 예제에서 역시 batch_size:100 으로 되어 있습니다. test_iter:100 으로 설정되어 있는데, 그 말은 한 번에 사진 100장 씩 100번, 총 10,000장의 사진으로 학습 결과를 검사해 보겠다는 뜻입니다.


4. epoch

학습용 사진 전체를 딱 한 번 사용했을 때 한 세대(이폭, epoch)이 지나갔다고 말합니다. cifar10의 경우 사진 60,000장 중 50,000장이 학습용, 10,000장이 검사용으로 지정되어 있습니다. 그런데 max_iter에서 학습에 사진 6,000,000장을 사용하기로 했기 때문에 50,000장의 학습용 사진이 여러번 재사용되게 됩니다. 정확히 계산해보면 6,000,000 / 50,000 = 120 이니 한 사진이 120번 씩 재사용될 것입니다. 이 경우 120 세대(epoch)라고 말합니다. 검사용의 경우 사진 10,000장을 사용하기로 했는데 실제로도 사진이 10,000장 있으니 딱 한 세대만 있는 것입니다.


( 도움을 얻은 곳: https://groups.google.com/forum/#!topic/caffe-users/mUIi42aKWHQ )


'인공지능 > 딥 러닝' 카테고리의 다른 글

딥 러닝 용어 - batch, iteration, epoch  (9) 2017.01.12
  1. caffe초보 2017.01.20 00:29 신고

    감사합니다. 크로뮴망가니즈 님..^^

  2. PARANG 2017.04.29 14:42 신고

    궁금했던 차에 도움 받고 갑니다. 감사합니다!^^

  3. ShinSeungIl 2017.06.30 11:29 신고

    안녕하세요, 용어 정리가 이해하기 쉽게 잘 되어 있어서 보다가 궁금한게 있어서 질문 드립니다.
    test_iter가 100일 때, batch size : 100장씩 100번, 총 10,000장의 사진으로 훈련 결과를 검사해보겠다고 쓰여져 있는데
    한번에 10,000장의 이미지를 검사하지 않고 굳이 100번에 걸쳐 검사하는 이유가 단순히 메모리 문제 때문인가요? 아님 다른 특별한 이유가 있는 것 인가요?

    • 크롬망간 2017.07.04 12:33 신고

      안녕하세요? test_iter의 경우 순전히 메모리와 속도 때문에 말씀하신 대로 하는 것이 맞습니다. 예제에서는 제가 100이라고 써 놓았는데, 실제로는 효율적인 메모리 사용을 위해 32, 64, 128, 256등 2의 배수를 주로 사용합니다.

      학습 과정에서는 배치의 크기가 학습 결과에 미미한 영향을 미칠 수 있다고 합니다. 한 장씩 학습하는게 결과가 제일 좋다고는 하는데 차이가 미미하고 속도 문제도 있고 해서 역시 보통 32, 64, 128, 256 정도의 배치 크기를 사용합니다. 하지만 512나 1024같이 너무 큰 배치 크기는 사용하지 않는 것 같습니다.

  4. naaam 2017.09.17 08:43 신고

    감사해요. 쉽게 복습이 되었네요^^

  5. 2018.09.11 21:18

    비밀댓글입니다

+ Recent posts