# %% Importing the libraries
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
# %% Initializing the CNN
classifier = Sequential()
# %% Step-1 Convolution
classifier.add(Conv2D(32, (3, 3), input_shape = (64, 64, 3), activation = 'relu'))
# All the images come to us does'nt have same size and shape so we have to fix the
dimensions of the pixels rgb color channel in input shape parameter
# %% Step - 2 Pooling
classifier.add(MaxPooling2D(pool_size=(2, 2)))
# %% Adding a second convolution layer
#classifier.add(Convolution2D(32, 3, 3, activation='relu'))
classifier.add(Conv2D(32, (3, 3), input_shape = (64, 64, 3), activation = 'relu'))
classifier.add(MaxPooling2D(pool_size=(2, 2)))
# %% Step-3 Flattening
classifier.add(Flatten())
# %% Step-4 Full Connection
# output_dim = random (mostly give it according to input variables but here those are
too many)
classifier.add(Dense(units=68, activation='relu'))
classifier.add(Dense(units=120, activation='relu'))
# output layer
#classifier.add(Dense(output_dim=1, activation='sigmoid'))
classifier.add(Dense(units=1, activation='sigmoid'))
# %% Compiling CNN
# adam -> stochastic gradient descent
# binary -> as we have only two categories otherwise 'categorical_crossentropy'
classifier.compile(optimizer='adam', loss="binary_crossentropy", metrics=['accuracy'])
# %% Fitting CNN to images
from keras.preprocessing.image import ImageDataGenerator
# %% Rescaling for feature scaling
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/training_set',
target_size=(64, 64),
batch_size=32,
class_mode='binary')
test_set = test_datagen.flow_from_directory('dataset/test_set',
target_size=(64, 64),
batch_size=32,
class_mode='binary')
classifier.fit_generator(training_set,
steps_per_epoch=8000,
epochs=2,
validation_data=test_set,
validation_steps=2000)
Comments
Post a Comment