## 3 Proposed Technology Solution
### Matching and Classification
The process is highlighted and explained thus:  
```
1:Imports:
2:from tensorflow.keras import models, layers
3:import numpy as np
4:from tensorflow.keras.utils import to_categorical
5:Define the CNN model creation function:
6:functionCREATE_CNN_MODEL(input_fingerID)
7:model\(\leftarrow\)- models.Sequential([
8:layers.Conv2D(32, (3, 3), activation='relu', input_shape=input_fingerID),
9:layers.MaxPooling2D((2, 2)),
10:layers.Conv2D(32, (3, 3), activation='relu'),
11:layers.MaxPooling2D((2, 2)),
12:layers.Conv2D(64, (3, 3), activation='relu'),
13:layers.MaxPooling2D((2, 2)),
14:layers.Flatten(),
15:layers.Dense(128, activation='relu'),
16:layers.Dense(num_classes, activation='softmax')
17:1)
18:return model
19:endfunction
20:Load and preprocess data:
21:X_train\(\leftarrow\)np.load('fingerprint_features_train.npy')
22:y_train\(\leftarrow\)np.load('user_labels_train.npy')
23:input_fingerID\(\gets\)Xtrain.shape[1 :]
24:num_classes\(\leftarrow\)len(np.unique(y_train))
25:X_train\(\leftarrow\)X_train.astype('float32')/255
26:y_train\(\leftarrow\)to_categorical(y_train,num_classes)
27:Create and compile the model:
28:model\(\leftarrow\)create_cnn_model(input_fingerID)
29:model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
30:Train the model:
31:model.fit(X_train,y_train,epochs=10, batch_size=32, validation_split=0.2)
```  
**Algorithm 1** Deep learning classifiers algorithm  
1. Fingerprint Input: The procedure begins with determining the input shape for the CNN model. This form usually correlates to the dimensions of the input images, such as their height, breadth, and number of channels (for example, grayscale or RGB). 2. Model Creation: The method creates a sequential model, a linear stack of layers, from the models. Sequential function. 3. Convolutional Layers: The method iterates over multiple convolutional layers. (layers.Conv2D) with increasing filter count (32, 64, and 128) and kernel size (3, 3). To extract features from an input image, each convolutional layer uses a series of filters. The ReLU activation function (\(activation='relu'\)) is used to add non-linearity. After each convolutional layer, add max-pooling layers (layers). MaxPooling2D is used to downsample feature maps, lowering spatial dimensions and extracting the most significant minutiae point information. * Flatten Layer: After convolutional and max-pooling layers, add a flattened layer (layers. Flatten to turn 2D feature maps into 1D vectors for fully connected neural networks. * Data Preparation: Before training the model, the algorithm loads the feature vector of the fingerprint A (\(X\_train\) and \(y\_train\)) from the database (containing fingerprint features and corresponding labels) using NumPy's np.load function. * Data Preprocessing: The labels (\(y\_train\)) are converted into one-hot encoded vectors using \(tf\_keras.utils\_to\_categorical\), which is necessary for classification tasks. * Model Compilation: The model is compiled using the specified optimizer ('_User1_'), loss function ('_categorical_crossentropy_'), and evaluation metrics ('_accuracy_'). Categorical cross-entropy is commonly used for multi-class classification problems, and accuracy is a metric used to evaluate the performance of the model during training. * Model Training: The algorithm then trains the model using the training data (\(X\_train\) and \(y\_train\)) for a specified number of users (10), with a batch size of 32 bits. Additionally, it uses 20% of the training data for validation during training (\(validation\_split=0.2\)). * Output: Finally, the algorithm outputs \"_MatchedFingerID_\" after the training process completes, indicating that the model is ready for fingerprint classification: Matched or Unmatched.