We have understood basics of CNN in detail in my previous post post now this is time to write our own code and start create our own CNN model. Please have a look on below images to understand high level CNN architecture.
We shown in picture we need multiple layers in CNN so we will create multiple layers for different purpose. So let's start writing code -
First layer - Convolution layer
Second layer - pooling layer (For minimize the size)
Third layer - Flatten layer (To convert data from 2D to 1D)
Fourth layer - Dense layer (For neural network)
from keras.layers import Convolution2D
We shown in picture we need multiple layers in CNN so we will create multiple layers for different purpose. So let's start writing code -
First layer - Convolution layer
Second layer - pooling layer (For minimize the size)
Third layer - Flatten layer (To convert data from 2D to 1D)
Fourth layer - Dense layer (For neural network)
from keras.layers import Convolution2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.layers import Dense
model = Sequential()
model.add(Convolution2D(filters=32, kernel_size=(3,3), activation='relu', input_shape=(64,64,3) ) )
model.summary()
model.summary()
model.add(Flatten())
model.summary()
model.summary()
model.add(Dense(units=1,activation='sigmoid'))
model.summary()
Convolution -
Fully connected -
_________________________________________________________________
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
Soon I'll add remaining code......cont......
model = Sequential()
model.add(Convolution2D(filters=32, kernel_size=(3,3), activation='relu', input_shape=(64,64,3) ) )
model.summary()
Model: "sequential_3" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_3 (Conv2D) (None, 62, 62, 32) 896 ================================================================= Total params: 896 Trainable params: 896 Non-trainable params: 0
model.add(MaxPooling2D(pool_size=(2, 2)))
model.summary()
Model: "sequential_3" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_3 (Conv2D) (None, 62, 62, 32) 896 _________________________________________________________________ max_pooling2d_1 (MaxPooling2 (None, 31, 31, 32) 0 ================================================================= Total params: 896 Trainable params: 896 Non-trainable params: 0
model.add(Flatten())
model.summary()
Model: "sequential_3" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_3 (Conv2D) (None, 62, 62, 32) 896 _________________________________________________________________ max_pooling2d_1 (MaxPooling2 (None, 31, 31, 32) 0 _________________________________________________________________ flatten_1 (Flatten) (None, 30752) 0 ================================================================= Total params: 896 Trainable params: 896 Non-trainable params: 0
model.add(Dense(units=128, activation='relu'))
model.summary()
Model: "sequential_3" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_3 (Conv2D) (None, 62, 62, 32) 896 _________________________________________________________________ max_pooling2d_1 (MaxPooling2 (None, 31, 31, 32) 0 _________________________________________________________________ flatten_1 (Flatten) (None, 30752) 0 _________________________________________________________________ dense_1 (Dense) (None, 128) 3936384 ================================================================= Total params: 3,937,280 Trainable params: 3,937,280 Non-trainable params: 0
model.add(Dense(units=1,activation='sigmoid'))
model.summary()
Model: "sequential_3" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_3 (Conv2D) (None, 62, 62, 32) 896 _________________________________________________________________ max_pooling2d_1 (MaxPooling2 (None, 31, 31, 32) 0 _________________________________________________________________ flatten_1 (Flatten) (None, 30752) 0 _________________________________________________________________ dense_1 (Dense) (None, 128) 3936384 _________________________________________________________________ dense_2 (Dense) (None, 1) 129 ================================================================= Total params: 3,937,409 Trainable params: 3,937,409 Non-trainable params: 0
So finally we have created convolutional layer and fully connected model. here initial 3 layers are convolution and next two are for fully connected. Complete layers or network is known as ConNet(Convolution Network).
Convolution -
_________________________________________________________________
Layer (type) Output Shape Param # ================================================================= conv2d_3 (Conv2D) (None, 62, 62, 32) 896 _________________________________________________________________ max_pooling2d_1 (MaxPooling2 (None, 31, 31, 32) 0 _________________________________________________________________ flatten_1 (Flatten) (None, 30752) 0 _________________________________________________________________
Fully connected -
_________________________________________________________________
Layer (type) Output Shape Param #=================================================================
dense_1 (Dense) (None, 128) 3936384 _________________________________________________________________ dense_2 (Dense) (None, 1) 129
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
Soon I'll add remaining code......cont......
Comments
Post a Comment
Please share your experience.....