Spaces:
Sleeping
Sleeping
| # -*- coding: utf-8 -*- | |
| """ | |
| Created on Tue May 21 17:23:33 2019 | |
| @author: Shahzeb | |
| """ | |
| # Convolutional Neural Network | |
| # Installing Theano | |
| # pip install --upgrade --no-deps git+git://github.com/Theano/Theano.git | |
| # Installing Tensorflow | |
| # pip install tensorflow | |
| # Installing Keras | |
| # pip install --upgrade keras | |
| #Installing pillow | |
| #pip install pillow | |
| # Part 1 - Building the CNN | |
| # Importing the Keras libraries and packages | |
| from keras.models import Sequential | |
| from keras.layers import Conv2D | |
| from keras.layers import MaxPooling2D | |
| from keras.layers import Flatten | |
| from keras.layers import Dense | |
| from keras.models import model_from_json | |
| # Initialising the CNN | |
| classifier = Sequential() | |
| # Step 1 - Convolution | |
| classifier.add(Conv2D(64, (4, 4), input_shape = (299, 299, 3), activation = 'relu')) | |
| # Step 2 - Pooling | |
| classifier.add(MaxPooling2D(pool_size = (4, 4))) | |
| # Adding a second convolutional layer | |
| classifier.add(Conv2D(32, (3, 3), activation = 'relu')) | |
| classifier.add(MaxPooling2D(pool_size = (3, 3))) | |
| classifier.add(Conv2D(16, (3, 3), activation = 'relu')) | |
| classifier.add(MaxPooling2D(pool_size = (3, 3))) | |
| # Step 3 - Flattening | |
| classifier.add(Flatten()) | |
| # Step 4 - Full connection | |
| classifier.add(Dense(units = 40, activation = 'relu')) | |
| classifier.add(Dense(units = 10, activation = 'relu')) | |
| classifier.add(Dense(units = 1, activation = 'sigmoid')) | |
| # Compiling the CNN | |
| classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy']) | |
| # Part 2 - Fitting the CNN to the images | |
| from keras.preprocessing.image import ImageDataGenerator | |
| 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('dataset/model_1/trn_set', | |
| target_size = (299, 299), | |
| batch_size = 10, | |
| class_mode = 'binary') | |
| test_set = test_datagen.flow_from_directory('dataset/model_1/tst_set', | |
| target_size = (299, 299), | |
| batch_size = 10, | |
| class_mode = 'binary') | |
| classifier.fit_generator(training_set, | |
| steps_per_epoch = 3000, | |
| epochs = 3, | |
| validation_data = test_set, | |
| validation_steps = 600) | |
| # serialize model to JSON | |
| model_json = classifier.to_json() | |
| with open("models/model_1.json", "w") as json_file: | |
| json_file.write(model_json) | |
| # serialize weights to HDF5 | |
| classifier.save_weights("models/model_1.h5") | |
| print("Saved model to disk") | |