이 글은 아래 링크를 번역한 및 추가한 글입니다.
https://stackoverflow.com/questions/49100556/what-is-the-use-of-train-on-batch-in-keras
Q : train_on_batch()와 fit()은 다른점이 무엇일까?
A : 이 질문에 대한 응답은, primary author(숄레 형아)가 대답한 간단한 답을 보면됩니다.
fit_generator로 당신은 validation data를 위한 generator를 만들 수 있다. 보통은, fit_generator를 사용하는 것을 추천하지만, train_on_batch도 잘 동작한다. 이 두개의 메소드는 서로 다른 케이스에 따라 사용되는 것 뿐, 더 "올바른" 메소드는 없다.
train_on_batch는 고정된 batch size를 신경쓰지 않고, 입력으로 준 콜렉션에 대한 weights를 명시적으로 업데이트하도록 해준다. 다음과 같은 케이스에 이 메소드를 쓰고 싶을 것이다: explicit한 데이터로 학습할 때. 이런 접근법을 기존의 학습 데이터 셋의 여러 개의 배치에서 iteration을 유지할 수 있지만, fit 혹은 fit_generator가 보통은 더 간단할 것이다.
train_on_batch를 사용하기 좋은 케이스는 pre-trained 모델을 단일 배치로 학습시켜야 할 때 이다. 이미 모델을 학습하고 deploy(배포)했으며, 나중에 이전에는 사용하지 않았던 새로운 학습 데이터 셋을 받았다고 가정해보자. train_on_batch는 이미 존재하는 모델에 바로바로 그 학습 데이터 셋을 학습시킬 수 있다. 다른 방법들도 사용할 수 있겠지만, train_on_batch가 이 경우에 가장 적합하다.
이와 같은 특별한 케이스 (다른 학습 배치에서 커서를 유지 관리해야 하는 교육학적 이유가 있거나, 특정 배치에 대한 semi-online을 해야하는 유형)이 아니라면, 이것은 항상 fit(모든 데이터를 메모리에 올려서 학습) 또는 fit_generator(generator를 사용해서 배치만큼만 메모리에 올려서 학습)를 사용하는 것보다 나을 것이다. 따라서 작은 데이터의 경우에는 fit을 사용해도 무방하지만 큰 데이터라면 fit_generator를 사용하여 대용량의 데이터를 효율적으로 학습하기에 좋다.
'DL|ML' 카테고리의 다른 글
torch의 model summary에서는 cuda가 필요한가요? (0) | 2021.01.05 |
---|---|
PyTorch와 비교 해본 PyTorch Lightning 소개 (An introduction to PyTorch Lightning with comparisons to PyTorch) (0) | 2020.07.15 |
Checkerboard Artifacts 체커보드 아티팩트 (0) | 2020.05.28 |
PReLU (Parametric ReLU) (0) | 2020.04.11 |
트와이스 사나 Twitter 데이터 크롤해서 일본어 데이터 시각화하기 (2) | 2020.04.10 |