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

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

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

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.
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.