<p>If you want to use your own model and not fine tune a pretrained model like Vgg or inception (for examples), you should read this paper :</p>

<p><a href="https://arxiv.org/pdf/1611.07725.pdf" rel="nofollow noreferrer">iCaRL an incremnetal network (paper)</a></p>

<p>Of course you have to change your algorithm and your code. I find this github repo, apparently they implement it already : <a href="https://github.com/srebuffi/iCaRL/tree/master/iCaRL-Tensorflow" rel="nofollow noreferrer">Github repo for iCaRL in tensorflow</a></p>

<p>But you have to use tensorflow. Look at it to learn how to use it with your model (if possible, I just find the paper and this repo today, so I haven't looked at it yet).</p>

<p>What you are asking is still in research domain, so there are not broad or common techniques yet.
As I said in my comment, search for the keyword "incremental learning", there are others papers on this subject. (look at the Related work session of the iCaRL paper, all the main techniques and papers for this subject are well summarized !)</p>

<p>Also, please note that add objects that is very different from your previous dataset (with your example of flowers + beer or window), should decrease your accuracy a lot.
You will have to train longer to have a better accuracy (but it may possible that your accuracy never increase as it was before)</p>
How to expand CNN to recognize more objects?
<p>I created a simple CNN to differentiate between 5 different categories of flowers. I want to expand the CNN to recognize more objects. For example, I want the CNN to recognize the image of a glass of beer, window, tree etc. 
Below is the code that I made to classify the flowers, it works pretty good. But how to expand it and make it recognise more and more objects. I don't want to use any pre-trained models. I want it to learn to classify more objects. Please help.</p>

<pre><code>from keras.preprocessing.image import ImageDataGenerator
from keras.models import Sequential
from keras.layers import Convolution2D, MaxPooling2D, Flatten, Dense
classifier=Sequential()
#1st Convolution Layer
classifier.add(Convolution2D(32, 3, 3, input_shape=(64,64,3),activation="relu"))
#Pooling
classifier.add(MaxPooling2D(pool_size = (2, 2)))

# Adding a second convolutional layer
classifier.add(Convolution2D(32, 3, 3, activation = 'relu'))

classifier.add(MaxPooling2D(pool_size = (2, 2)))

# Flattening
classifier.add(Flatten())

classifier.add(Dense(output_dim = 128, activation = 'relu'))

classifier.add(Dense(output_dim = 64, activation = 'relu'))

classifier.add(Dense(output_dim = 5, activation = 'softmax'))

classifier.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy'])
print(classifier.summary())

train_datagen = ImageDataGenerator(rescale = 1./255,
                                   shear_range = 0.2,
                                   zoom_range = 0.2,
                                   horizontal_flip = True)

test_datagen = ImageDataGenerator(rescale = 1./255)

training_set= train_datagen.flow_from_directory('flowers/train_set',
                                                target_size=(64,64),
                                                batch_size=32,
                                                class_mode='categorical')


test_set= test_datagen.flow_from_directory('flowers/test_set',
                                                target_size=(64,64),
                                                batch_size=32,
                                                class_mode='categorical')

classifier.fit_generator(training_set,
                         samples_per_epoch = 3000,
                         nb_epoch = 25,
                         validation_data = test_set,
                         nb_val_samples=1000)
</code></pre>