This CNN model architecture uses the Keras Sequential API and consists of multiple convolutional and pooling layers, followed by a flatten layer and fully connected layers to classify inputs into 7 categories. The model architecture includes 12 Conv2D layers with various filter sizes and ReLU activation, 4 Dropout layers for regularization, 3 Flatten layers, and 3 Dense layers with ReLU and softmax activation.
model = Sequential()
# convolutional layers
model.add(Conv2D(128, kernel_size=(3,3), activation='relu', input_shape=(48,48,1)))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.4))
model.add(Conv2D(256, kernel_size=(3,3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.4))
model.add(Conv2D(512, kernel_size=(3,3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.4))
model.add(Conv2D(512, kernel_size=(3,3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.4))
model.add(Flatten())
# fully connected layers
model.add(Dense(512, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.3))
# output layer
model.add(Dense(7, activation='softmax'))
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Dropout, Flatten, Dense
# Create a Sequential model
model = Sequential()
# First convolutional block
# TODO: Consider using transfer learning for pre-trained models like VGG16 or ResNet50
first_block = [
Conv2D(128, kernel_size=(3, 3), activation='relu', input_shape=(48, 48, 1)),
MaxPooling2D(pool_size=(2, 2)),
Dropout(0.4)
]
for layer in first_block:
model.add(layer)
# Second convolutional block
second_block = [
Conv2D(256, kernel_size=(3, 3), activation='relu'),
MaxPooling2D(pool_size=(2, 2)),
Dropout(0.4)
]
for layer in second_block:
model.add(layer)
# Third convolutional block
third_block = [
Conv2D(512, kernel_size=(3, 3), activation='relu'),
MaxPooling2D(pool_size=(2, 2)),
Dropout(0.4)
]
for layer in third_block:
model.add(layer)
# Fourth convolutional block
fourth_block = [
Conv2D(512, kernel_size=(3, 3), activation='relu'),
MaxPooling2D(pool_size=(2, 2)),
Dropout(0.4)
]
for layer in fourth_block:
model.add(layer)
# Flatten the output
model.add(Flatten())
### Fully Connected Layers
# Hidden layer with 512 units
model.add(Dense(512, activation='relu'))
model.add(Dropout(0.4))
# Hidden layer with 256 units
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.3))
### Output Layer
# Output layer with 7 units and softmax activation
model.add(Dense(7, activation='softmax'))
Convolutional Neural Network (CNN) Model Architecture
This code defines a CNN model architecture using the Keras Sequential API. The model consists of multiple convolutional and pooling layers, followed by fully connected and output layers.
Conv2D
layer with 128 filters, kernel size 3x3, and ReLU activation.MaxPooling2D
layer with pool size 2x2.Dropout
layer with rate 0.4.Conv2D
layer with 256 filters, kernel size 3x3, and ReLU activation.MaxPooling2D
layer with pool size 2x2.Dropout
layer with rate 0.4.Conv2D
layer with 512 filters, kernel size 3x3, and ReLU activation.MaxPooling2D
layer with pool size 2x2.Dropout
layer with rate 0.4.Conv2D
layer with 512 filters, kernel size 3x3, and ReLU activation.MaxPooling2D
layer with pool size 2x2.Dropout
layer with rate 0.4.Flatten
layer to flatten the output of the convolutional layers.Dense
layer with 512 units, ReLU activation, and dropout rate 0.4.Dense
layer with 256 units, ReLU activation, and dropout rate 0.3.Dense
layer with 7 units, softmax activation.