# -*- 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")