When should I use
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).
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-
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.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.