Actually 1000 is an arbitrary number so you can choose what you want, even 100 images is enough sometimes.
Overfitting means your CNN network, learned only features in your samples not a generalization. It means you training loss should be very low, but if you test your trained model on a new unseen image, it will give you bad result (high loss value of test set).

image.png1546×754 49.1 KB

If your model can overfit, you model implementation is rational probably . Why we do this at all? Some times, you implement your model and it seem fine, but it cannot fit at all, even when you let it be trained for a big number of epochs.
If your model did not overfit, you should play with learning_rate, batch_size, learning_weight_decay, preprocessing, optimizers, other hyperparameters, etc.
A demonstration of overfitting can be like this: you train your model on 10 images for 100 epochs.
After making sure your model can be trained, you can proceed to test it on your real dataset.
Finally, I highly suggest to use tools like TensorboardX (interface of Tensorboard for Pytorch), Visdom, etc to visualize whats happening in each layer and each epoch. You can check what is happening on your gradients like vanishing or eexploding or even get your images from intermediate layers to make sure what is happening in your model.
In the end, many times, no one even experts cannot say what optimizer or what size of batch size, etc is good for a specific task. They get things done by experimenting many times. So the purpose of overfitting is to handle this problem.
By the way, I suggest for overfitting step, use Adam optimizer because it is more general and learns fast.
If you have any other questions, feel free to ask.
Good luck