What is the difference between fit() and fit_generator() in Keras?

When should I use fit() vs fit_generator()?


2 Answers 2


In keras, fit() is much similar to sklearn's fit method, where you pass array of features as x values and target as y values. You pass your whole dataset at once in fit method. Also, use it if you can load whole data into your memory (small dataset).

In fit_generator(), you don't pass the x and y directly, instead they come from a generator. As it is written in keras documentation, generator is used when you want to avoid duplicate data when using multiprocessing. This is for practical purpose, when you have large dataset.

Here is a link to understand more about this-

A thing you should know about Keras if you plan to train a deep learning model on a large dataset

For reference you can check this book- https://github.com/hktxt/bookshelf/blob/master/Computer%20Science/Deep%20Learning%20with%20Python%2C%20Fran%C3%A7ois%20Chollet.pdf


There is more to the difference between Keras fit and fit.generator than meets the eye. I had a dataset who was perfectly been learned by the model using fit.generator. As the dataset wasn't too big I decided to change to fit instead of fit.generator. To my surprise the learning curve was all over the place. Had to start tuning up from scratch. Guess the way gradients are updated in each function differs quite significantly. Beware.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.