Imports¶

InĀ [49]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import cv2
import math
from skimage.feature import hog
InĀ [50]:
import warnings
warnings.filterwarnings('ignore')

Fetching and analysing the data¶

Minimum number of faces per person selected = 70

Number of labels = 7

Number of images = 1288

InĀ [51]:
from sklearn.datasets import fetch_lfw_people

# Download and load the LFW dataset
lfw_dataset = fetch_lfw_people(min_faces_per_person=70, resize=0.4)

# Extract data and target labels
X = lfw_dataset.images
y = lfw_dataset.target
target_names = lfw_dataset.target_names

# Print information about the dataset
print("Number of images:", X.shape[0])
print("Image size:", X.shape[1:])
print("Number of unique classes:", len(target_names))
print("Target class names:", target_names)
num_samples, num_features = lfw_dataset.data.shape
num_classes = len(target_names)
Number of images: 1288
Image size: (50, 37)
Number of unique classes: 7
Target class names: ['Ariel Sharon' 'Colin Powell' 'Donald Rumsfeld' 'George W Bush'
 'Gerhard Schroeder' 'Hugo Chavez' 'Tony Blair']

Sample images

InĀ [52]:
num_samples_to_display = 5
random_indices = np.random.choice(num_samples, num_samples_to_display, replace=False)

plt.figure(figsize=(10, 4))
for i, index in enumerate(random_indices, 1):
    plt.subplot(1, num_samples_to_display, i)
    plt.imshow(X[index].reshape((50, 37)), cmap='gray')
    plt.title(target_names[y[index]])
    plt.axis('off')
plt.show()
No description has been provided for this image

Distribution of classes

InĀ [53]:
class_counts = np.bincount(y)
plt.bar(range(num_classes), class_counts)
plt.xlabel('Class Index')
plt.ylabel('Number of Samples')
plt.title('Distribution of Classes')
plt.xticks(range(num_classes), target_names, rotation=90)
plt.show()
No description has been provided for this image

Analysing how each image data looks like

InĀ [54]:
print('shape of each image data: ',lfw_dataset.images[0].shape)
print(lfw_dataset.images[0])
plt.axis("off")
plt.imshow(lfw_dataset.images[0], cmap='gray')
shape of each image data:  (50, 37)
[[0.9973857  0.99607843 0.9921568  ... 0.29803923 0.24836601 0.20653595]
 [0.9973857  0.9921569  0.9908497  ... 0.30588236 0.2535948  0.21568628]
 [0.96078426 0.93071896 0.8679738  ... 0.2875817  0.24183007 0.21568628]
 ...
 [0.34509805 0.26143792 0.17385621 ... 0.4248366  0.40261438 0.39084968]
 [0.30980393 0.23398693 0.17124183 ... 0.39869282 0.4013072  0.3764706 ]
 [0.28366014 0.2248366  0.18039216 ... 0.38169935 0.38823533 0.3803922 ]]
Out[54]:
<matplotlib.image.AxesImage at 0x7948f018c4c0>
No description has been provided for this image

Reshaping the data into single array of 1850 (50 * 37) features

InĀ [55]:
print('shape of each image data: ',lfw_dataset.data[0].shape)
print(lfw_dataset.data[0])
shape of each image data:  (1850,)
[0.9973857  0.99607843 0.9921568  ... 0.38169935 0.38823533 0.3803922 ]

Implementing Different Feature Extraction Techniques from Scratch¶

  • Linear Binary Pattern [LBP]
  • Histogram of Oriented Gradients [HoG]
  • Convolutional Neural Networks [CNN]

Linear Binary Pattern¶

From Scratch implementation

InĀ [56]:
def lbp_features(image):
  lbp_image = np.ones([50,37])
  for y in range(1,image.shape[0]-1):
    for x in range(1,image.shape[1]-1):
      l = [*list(image[y-1][x-1:x+2]),image[y][x+1],*list(image[y+1][x+1:x-1:-1]),image[y+1][x-1],image[y][x-1]]
      mwl= [2**i if image[y][x] >= l[i] else 0 for i in range(len(l))]
      lbp_image[y][x] = sum(mwl)
  return lbp_image

Original Image

InĀ [57]:
plt.axis("off")
plt.title('Original')
plt.imshow(lfw_dataset.images[163],cmap='gray')
Out[57]:
<matplotlib.image.AxesImage at 0x7948ecff51e0>
No description has been provided for this image

LBP Feature Extracted Image

InĀ [58]:
a = lbp_features(lfw_dataset.images[163])
plt.axis("off")
plt.imshow(a,cmap='gray')
Out[58]:
<matplotlib.image.AxesImage at 0x7948ecff5b10>
No description has been provided for this image

LBP using sklearn local_binary_pattern function

InĀ [59]:
from skimage.feature import local_binary_pattern
radius = 1
num_points = 8 * radius
lbp_image = local_binary_pattern(lfw_dataset.images[163], num_points, radius, method='uniform')
plt.axis("off")
plt.imshow(lbp_image.astype(np.uint8), cmap= 'gray')
Out[59]:
<matplotlib.image.AxesImage at 0x7948f018c5b0>
No description has been provided for this image

Histogram of Oriented Gradients¶

Resizing Image to 64 X 128 size

InĀ [60]:
img = cv2.resize(lfw_dataset.images[163], (64, 128))
plt.axis("off")
plt.imshow(img, cmap='gray')
Out[60]:
<matplotlib.image.AxesImage at 0x7948e6680cd0>
No description has been provided for this image

Vertical Gradient Detection

InĀ [61]:
def img_gradient_ver(image):
  lbp_image = np.ones(image.shape)
  for y in range(0,image.shape[0]):
    for x in range(1,image.shape[1]-1):
      lbp_image[y][x] = image[y][x+1]-image[y][x-1]
  return lbp_image
InĀ [62]:
a = img_gradient_ver(img)
plt.axis("off")
plt.imshow(a,cmap='gray')
Out[62]:
<matplotlib.image.AxesImage at 0x7948e9f3bcd0>
No description has been provided for this image

Horizontal Gradient Detection

InĀ [63]:
def img_gradient_horr(image):
  lbp_image = np.ones(image.shape)
  for y in range(1,image.shape[0]-1):
    for x in range(0,image.shape[1]):
      lbp_image[y][x] = image[y+1][x]-image[y-1][x]
  return lbp_image
InĀ [64]:
b = img_gradient_horr(img)
plt.axis("off")
plt.imshow(b,cmap='gray')
Out[64]:
<matplotlib.image.AxesImage at 0x79497ff07040>
No description has been provided for this image

Adding both vertical and horizontal gradients

InĀ [65]:
plt.axis("off")
plt.imshow(a+b,cmap='gray')
Out[65]:
<matplotlib.image.AxesImage at 0x7948e4526d70>
No description has been provided for this image

Gradient and Angle of image

InĀ [66]:
mag = []
theta = []
for i in range(128):
  magnitudeArray = []
  angleArray = []
  for j in range(64):

    if j-1 <= 0 or j+1 >= 64:
      if j-1 <= 0:
        Gx = img[i][j+1] - 0
      elif j + 1 >= len(img[0]):
        Gx = 0 - img[i][j-1]
    else:
      Gx = img[i][j+1] - img[i][j-1]

    if i-1 <= 0 or i+1 >= 128:
      if i-1 <= 0:
        Gy = 0 - img[i+1][j]
      elif i +1 >= 128:
        Gy = img[i-1][j] - 0
    else:
      Gy = img[i-1][j] - img[i+1][j]

    magnitude = math.sqrt(pow(Gx, 2) + pow(Gy, 2))     # Calculating magnitude
    magnitudeArray.append(round(magnitude, 9))

    if Gx == 0:     # Calculating angle
      angle = math.degrees(0.0)
    else:
      angle = math.degrees(abs(math.atan(Gy / Gx)))
    angleArray.append(round(angle, 9))
  mag.append(magnitudeArray)
  theta.append(angleArray)

Represetation of magnitude of gradient of image

InĀ [67]:
plt.imshow(mag, cmap="gray")
plt.axis("off")
plt.title('Magnitudes')
plt.show()
No description has been provided for this image

Representation of angle of image

InĀ [68]:
plt.imshow(theta, cmap="gray")
plt.axis("off")
plt.title('Angles')
plt.show()
No description has been provided for this image

Final Histogram of Oriented Gradients Image

InĀ [69]:
_ , hog_image = hog(img, orientations=8, pixels_per_cell=(8, 8),
                             cells_per_block=(2, 2), visualize=True)
plt.axis('off')
plt.title('HoG')
plt.imshow(hog_image, cmap='gray')
Out[69]:
<matplotlib.image.AxesImage at 0x79497fdd9cc0>
No description has been provided for this image

Convolutional Layers¶

Convolution function from scratch

InĀ [70]:
def convolutional_features(image, kernel):
    output = np.zeros((image.shape[0] - kernel.shape[0] + 1, image.shape[1] - kernel.shape[1] + 1))
    for i in range(output.shape[0]):
      for j in range(output.shape[1]):
        output[i, j] = np.multiply(image[i:i+kernel.shape[0],j:j+kernel.shape[1]],kernel).sum()
    return output

3 different types of kernels

InĀ [71]:
kernel_ver = np.array([[-1, 0, 1],
                   [-2,0,2],
                   [-1,0,1]])

kernel_hor = np.array([[-1, -2, -1],
                   [0,0,0],
                   [1,2,1]])

kernel_gabor = np.array([[-0.2324, -0.268, -0.2324],
                   [0.8673,1,0.8673],
                   [-0.2324,-0.268,-0.2324]])

Verrtical kernel for edge detection

InĀ [72]:
d = convolutional_features(lfw_dataset.images[163], kernel_ver)
plt.axis('off')
plt.title('Vertical Edges')
plt.imshow(d, cmap='gray')
Out[72]:
<matplotlib.image.AxesImage at 0x7949801fcfa0>
No description has been provided for this image

Horizontal kernel for edge detection

InĀ [73]:
e = convolutional_features(lfw_dataset.images[163], kernel_hor)
plt.title('Horizontal Edges')
plt.axis('off')
plt.imshow(e, cmap='gray')
Out[73]:
<matplotlib.image.AxesImage at 0x7948f014f130>
No description has been provided for this image

Gabor Filter Kernel

InĀ [74]:
f = convolutional_features(lfw_dataset.images[163], kernel_gabor)
plt.title('Gabor')
plt.axis('off')
plt.imshow(f, cmap='gray')
Out[74]:
<matplotlib.image.AxesImage at 0x7948fcdc2920>
No description has been provided for this image

Using all 3 at the same time

InĀ [75]:
plt.axis('off')
plt.imshow(d + e + f, cmap ='gray')
Out[75]:
<matplotlib.image.AxesImage at 0x7948fcd31240>
No description has been provided for this image

Classification¶

Classifying the images with different classifiers:

  • SVM
  • KNN
  • Decision Tree
InĀ [76]:
from sklearn.metrics import classification_report, accuracy_score, ConfusionMatrixDisplay
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.decomposition import PCA
from sklearn.model_selection import RandomizedSearchCV, train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC

Trying PCA

InĀ [77]:
X = lfw_dataset.data
y = lfw_dataset.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=69)

scaler = StandardScaler()
X_train = scaler.fit_transform(X_train) #scaling train and test data
X_test = scaler.transform(X_test)

pca = PCA(n_components = 10)
pca.fit(X_train)
print(pca.explained_variance_ratio_)
[0.255891   0.1450748  0.06833295 0.0516422  0.03171235 0.02718069
 0.0204603  0.0168401  0.01583593 0.01506251]

Results with LBP¶

InĀ [78]:
X_train = np.reshape(X_train, (X_train.shape[0], 50, 37))
X_test = np.reshape(X_test, (X_test.shape[0], 50, 37))
InĀ [79]:
X_train_lbp = [lbp_features(x) for x in X_train]
X_test_lbp = [lbp_features(x) for x in X_test]

X_train_lbp = np.array(X_train_lbp)
X_test_lbp = np.array(X_test_lbp)

X_train_lbp = X_train_lbp.reshape((X_train.shape[0], 50*37))
X_test_lbp = X_test_lbp.reshape((X_test.shape[0], 50*37))

SVM

InĀ [80]:
svm_lbp = SVC(kernel='rbf', decision_function_shape='ovo' )
svm_lbp.fit(X_train_lbp, y_train)

lbp_predictions = svm_lbp.predict(X_test_lbp)
print(classification_report(y_test, lbp_predictions, target_names = target_names))
ConfusionMatrixDisplay.from_estimator(svm_lbp, X_test_lbp, y_test, display_labels=target_names, xticks_rotation="vertical")
plt.tight_layout()
plt.show()
                   precision    recall  f1-score   support

     Ariel Sharon       0.00      0.00      0.00        12
     Colin Powell       0.83      0.91      0.87        55
  Donald Rumsfeld       1.00      0.14      0.25        21
    George W Bush       0.62      0.98      0.76       106
Gerhard Schroeder       1.00      0.21      0.35        19
      Hugo Chavez       0.00      0.00      0.00        15
       Tony Blair       0.91      0.70      0.79        30

         accuracy                           0.71       258
        macro avg       0.62      0.42      0.43       258
     weighted avg       0.69      0.71      0.64       258

No description has been provided for this image

KNN

InĀ [81]:
knn_lbp = KNeighborsClassifier(n_neighbors = 5)
knn_lbp.fit(X_train_lbp, y_train)

lbp_predictions = knn_lbp.predict(X_test_lbp)
print(classification_report(y_test, lbp_predictions, target_names = target_names))
ConfusionMatrixDisplay.from_estimator(knn_lbp, X_test_lbp, y_test, display_labels=target_names, xticks_rotation="vertical")
plt.tight_layout()
plt.show()
                   precision    recall  f1-score   support

     Ariel Sharon       0.80      0.67      0.73        12
     Colin Powell       0.85      0.85      0.85        55
  Donald Rumsfeld       0.93      0.67      0.78        21
    George W Bush       0.80      0.96      0.87       106
Gerhard Schroeder       0.78      0.74      0.76        19
      Hugo Chavez       0.71      0.33      0.45        15
       Tony Blair       0.96      0.80      0.87        30

         accuracy                           0.83       258
        macro avg       0.83      0.72      0.76       258
     weighted avg       0.83      0.83      0.82       258

No description has been provided for this image

Decision Tree

InĀ [82]:
tree_lbp = DecisionTreeClassifier()
tree_lbp.fit(X_train_lbp, y_train)

lbp_predictions = tree_lbp.predict(X_test_lbp)
print(classification_report(y_test, lbp_predictions, target_names = target_names))
ConfusionMatrixDisplay.from_estimator(tree_lbp, X_test_lbp, y_test, display_labels=target_names, xticks_rotation="vertical")
plt.tight_layout()
plt.show()
                   precision    recall  f1-score   support

     Ariel Sharon       0.12      0.17      0.14        12
     Colin Powell       0.59      0.47      0.53        55
  Donald Rumsfeld       0.10      0.10      0.10        21
    George W Bush       0.61      0.58      0.60       106
Gerhard Schroeder       0.38      0.47      0.42        19
      Hugo Chavez       0.10      0.13      0.11        15
       Tony Blair       0.27      0.27      0.27        30

         accuracy                           0.43       258
        macro avg       0.31      0.31      0.31       258
     weighted avg       0.45      0.43      0.44       258

No description has been provided for this image

Results with HoG¶

InĀ [83]:
X_train_hog = [hog_image for _ , hog_image in [hog(x, orientations=8, pixels_per_cell=(8, 8),cells_per_block=(2, 2), visualize=True) for x in X_train]]
X_test_hog = [hog_image for _ , hog_image in [hog(x, orientations=8, pixels_per_cell=(8, 8),cells_per_block=(2, 2), visualize=True) for x in X_test]]

X_train_hog = np.array(X_train_hog)
X_test_hog = np.array(X_test_hog)

X_train_hog = X_train_hog.reshape((X_train.shape[0], 50*37))
X_test_hog = X_test_hog.reshape((X_test.shape[0], 50*37))

SVM

InĀ [84]:
svm_hog = SVC(kernel = 'rbf', decision_function_shape='ovo')
svm_hog.fit(X_train_hog, y_train)

hog_predictions = svm_hog.predict(X_test_hog)
print(classification_report(y_test, hog_predictions, target_names = target_names))
ConfusionMatrixDisplay.from_estimator(svm_hog, X_test_hog, y_test, display_labels=target_names, xticks_rotation="vertical")
plt.tight_layout()
plt.show()
                   precision    recall  f1-score   support

     Ariel Sharon       0.83      0.42      0.56        12
     Colin Powell       0.86      0.89      0.88        55
  Donald Rumsfeld       0.71      0.48      0.57        21
    George W Bush       0.71      0.99      0.83       106
Gerhard Schroeder       0.70      0.37      0.48        19
      Hugo Chavez       0.00      0.00      0.00        15
       Tony Blair       0.87      0.67      0.75        30

         accuracy                           0.76       258
        macro avg       0.67      0.54      0.58       258
     weighted avg       0.72      0.76      0.72       258

No description has been provided for this image

KNN

InĀ [85]:
knn_hog = KNeighborsClassifier(n_neighbors = 5)
knn_hog.fit(X_train_hog, y_train)

hog_predictions = knn_hog.predict(X_test_hog)
print(classification_report(y_test, hog_predictions, target_names = target_names))
ConfusionMatrixDisplay.from_estimator(knn_hog, X_test_hog, y_test, display_labels=target_names, xticks_rotation="vertical")
plt.tight_layout()
plt.show()
                   precision    recall  f1-score   support

     Ariel Sharon       0.55      0.50      0.52        12
     Colin Powell       0.88      0.82      0.85        55
  Donald Rumsfeld       0.54      0.67      0.60        21
    George W Bush       0.78      0.94      0.85       106
Gerhard Schroeder       0.58      0.58      0.58        19
      Hugo Chavez       0.75      0.20      0.32        15
       Tony Blair       0.74      0.47      0.57        30

         accuracy                           0.75       258
        macro avg       0.69      0.60      0.61       258
     weighted avg       0.75      0.75      0.73       258

No description has been provided for this image

Decision Tree

InĀ [86]:
tree_hog = DecisionTreeClassifier()
tree_hog.fit(X_train_hog, y_train)

hog_predictions = tree_hog.predict(X_test_hog)
print(classification_report(y_test, hog_predictions, target_names = target_names))
ConfusionMatrixDisplay.from_estimator(tree_hog, X_test_hog, y_test, display_labels=target_names, xticks_rotation="vertical")
plt.tight_layout()
plt.show()
                   precision    recall  f1-score   support

     Ariel Sharon       0.00      0.00      0.00        12
     Colin Powell       0.56      0.58      0.57        55
  Donald Rumsfeld       0.24      0.29      0.26        21
    George W Bush       0.77      0.67      0.72       106
Gerhard Schroeder       0.13      0.16      0.14        19
      Hugo Chavez       0.18      0.13      0.15        15
       Tony Blair       0.30      0.37      0.33        30

         accuracy                           0.48       258
        macro avg       0.31      0.31      0.31       258
     weighted avg       0.51      0.48      0.50       258

No description has been provided for this image

Results with CNN¶

InĀ [87]:
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout
from keras.utils import to_categorical
import keras
InĀ [88]:
model = Sequential()

model.add(Conv2D(1, (3, 3), activation='relu', input_shape=(50, 37, 1)))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(1, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(len(np.unique(y)), activation='softmax'))

model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])


y_categorical = to_categorical(y_train, num_classes=len(np.unique(y)))
model.fit(X_train, y_categorical, epochs=50, batch_size=32, validation_split=0.2)
Epoch 1/50
26/26 [==============================] - 2s 41ms/step - loss: 2.0155 - accuracy: 0.2840 - val_loss: 1.6755 - val_accuracy: 0.4320
Epoch 2/50
26/26 [==============================] - 1s 19ms/step - loss: 1.7488 - accuracy: 0.3714 - val_loss: 1.6156 - val_accuracy: 0.4126
Epoch 3/50
26/26 [==============================] - 0s 18ms/step - loss: 1.6526 - accuracy: 0.4150 - val_loss: 1.5560 - val_accuracy: 0.4515
Epoch 4/50
26/26 [==============================] - 0s 19ms/step - loss: 1.5799 - accuracy: 0.4490 - val_loss: 1.4920 - val_accuracy: 0.4515
Epoch 5/50
26/26 [==============================] - 0s 18ms/step - loss: 1.5310 - accuracy: 0.4515 - val_loss: 1.4343 - val_accuracy: 0.5291
Epoch 6/50
26/26 [==============================] - 1s 19ms/step - loss: 1.4682 - accuracy: 0.4806 - val_loss: 1.3677 - val_accuracy: 0.5583
Epoch 7/50
26/26 [==============================] - 0s 18ms/step - loss: 1.3823 - accuracy: 0.5061 - val_loss: 1.3192 - val_accuracy: 0.5534
Epoch 8/50
26/26 [==============================] - 0s 19ms/step - loss: 1.3896 - accuracy: 0.4830 - val_loss: 1.2743 - val_accuracy: 0.5825
Epoch 9/50
26/26 [==============================] - 0s 18ms/step - loss: 1.3326 - accuracy: 0.5255 - val_loss: 1.2241 - val_accuracy: 0.5825
Epoch 10/50
26/26 [==============================] - 0s 19ms/step - loss: 1.2607 - accuracy: 0.5534 - val_loss: 1.1740 - val_accuracy: 0.5971
Epoch 11/50
26/26 [==============================] - 0s 18ms/step - loss: 1.2288 - accuracy: 0.5595 - val_loss: 1.1435 - val_accuracy: 0.6019
Epoch 12/50
26/26 [==============================] - 0s 19ms/step - loss: 1.1811 - accuracy: 0.5850 - val_loss: 1.1121 - val_accuracy: 0.5825
Epoch 13/50
26/26 [==============================] - 0s 19ms/step - loss: 1.1277 - accuracy: 0.5947 - val_loss: 1.0572 - val_accuracy: 0.6505
Epoch 14/50
26/26 [==============================] - 0s 18ms/step - loss: 1.1210 - accuracy: 0.5922 - val_loss: 1.0129 - val_accuracy: 0.6845
Epoch 15/50
26/26 [==============================] - 0s 18ms/step - loss: 1.0646 - accuracy: 0.6335 - val_loss: 1.0081 - val_accuracy: 0.6796
Epoch 16/50
26/26 [==============================] - 0s 18ms/step - loss: 1.0342 - accuracy: 0.6274 - val_loss: 1.0136 - val_accuracy: 0.6456
Epoch 17/50
26/26 [==============================] - 1s 19ms/step - loss: 0.9980 - accuracy: 0.6432 - val_loss: 0.9976 - val_accuracy: 0.6602
Epoch 18/50
26/26 [==============================] - 0s 18ms/step - loss: 0.9692 - accuracy: 0.6590 - val_loss: 0.9352 - val_accuracy: 0.6699
Epoch 19/50
26/26 [==============================] - 0s 18ms/step - loss: 0.9677 - accuracy: 0.6711 - val_loss: 0.9452 - val_accuracy: 0.6748
Epoch 20/50
26/26 [==============================] - 0s 19ms/step - loss: 0.9255 - accuracy: 0.6590 - val_loss: 0.9195 - val_accuracy: 0.6942
Epoch 21/50
26/26 [==============================] - 0s 19ms/step - loss: 0.9031 - accuracy: 0.6845 - val_loss: 0.9164 - val_accuracy: 0.6845
Epoch 22/50
26/26 [==============================] - 1s 24ms/step - loss: 0.8453 - accuracy: 0.6905 - val_loss: 0.8817 - val_accuracy: 0.6699
Epoch 23/50
26/26 [==============================] - 1s 29ms/step - loss: 0.8972 - accuracy: 0.6869 - val_loss: 0.8991 - val_accuracy: 0.6602
Epoch 24/50
26/26 [==============================] - 1s 32ms/step - loss: 0.8386 - accuracy: 0.7015 - val_loss: 0.8837 - val_accuracy: 0.6796
Epoch 25/50
26/26 [==============================] - 1s 27ms/step - loss: 0.8203 - accuracy: 0.7124 - val_loss: 0.8930 - val_accuracy: 0.6699
Epoch 26/50
26/26 [==============================] - 0s 18ms/step - loss: 0.7915 - accuracy: 0.7257 - val_loss: 0.8809 - val_accuracy: 0.6845
Epoch 27/50
26/26 [==============================] - 1s 25ms/step - loss: 0.7470 - accuracy: 0.7476 - val_loss: 0.8580 - val_accuracy: 0.6748
Epoch 28/50
26/26 [==============================] - 1s 31ms/step - loss: 0.7667 - accuracy: 0.7245 - val_loss: 0.8523 - val_accuracy: 0.6796
Epoch 29/50
26/26 [==============================] - 1s 31ms/step - loss: 0.7686 - accuracy: 0.7403 - val_loss: 0.8236 - val_accuracy: 0.6990
Epoch 30/50
26/26 [==============================] - 1s 25ms/step - loss: 0.7383 - accuracy: 0.7367 - val_loss: 0.8259 - val_accuracy: 0.6893
Epoch 31/50
26/26 [==============================] - 0s 18ms/step - loss: 0.6816 - accuracy: 0.7536 - val_loss: 0.8214 - val_accuracy: 0.6893
Epoch 32/50
26/26 [==============================] - 0s 18ms/step - loss: 0.6481 - accuracy: 0.7852 - val_loss: 0.8540 - val_accuracy: 0.7136
Epoch 33/50
26/26 [==============================] - 0s 18ms/step - loss: 0.6911 - accuracy: 0.7621 - val_loss: 0.8308 - val_accuracy: 0.6893
Epoch 34/50
26/26 [==============================] - 0s 19ms/step - loss: 0.6173 - accuracy: 0.7828 - val_loss: 0.7821 - val_accuracy: 0.7184
Epoch 35/50
26/26 [==============================] - 0s 18ms/step - loss: 0.6389 - accuracy: 0.7913 - val_loss: 0.7905 - val_accuracy: 0.7136
Epoch 36/50
26/26 [==============================] - 0s 19ms/step - loss: 0.6521 - accuracy: 0.7488 - val_loss: 0.7979 - val_accuracy: 0.6796
Epoch 37/50
26/26 [==============================] - 0s 19ms/step - loss: 0.5834 - accuracy: 0.7925 - val_loss: 0.7902 - val_accuracy: 0.6990
Epoch 38/50
26/26 [==============================] - 0s 19ms/step - loss: 0.5795 - accuracy: 0.7913 - val_loss: 0.8223 - val_accuracy: 0.6845
Epoch 39/50
26/26 [==============================] - 0s 18ms/step - loss: 0.5922 - accuracy: 0.8034 - val_loss: 0.7989 - val_accuracy: 0.7087
Epoch 40/50
26/26 [==============================] - 0s 18ms/step - loss: 0.5981 - accuracy: 0.8095 - val_loss: 0.7923 - val_accuracy: 0.6990
Epoch 41/50
26/26 [==============================] - 0s 17ms/step - loss: 0.6018 - accuracy: 0.7900 - val_loss: 0.7932 - val_accuracy: 0.7233
Epoch 42/50
26/26 [==============================] - 0s 18ms/step - loss: 0.5972 - accuracy: 0.7949 - val_loss: 0.8355 - val_accuracy: 0.6942
Epoch 43/50
26/26 [==============================] - 0s 18ms/step - loss: 0.5222 - accuracy: 0.8277 - val_loss: 0.7805 - val_accuracy: 0.7233
Epoch 44/50
26/26 [==============================] - 1s 25ms/step - loss: 0.5742 - accuracy: 0.8070 - val_loss: 0.8051 - val_accuracy: 0.7233
Epoch 45/50
26/26 [==============================] - 1s 37ms/step - loss: 0.5962 - accuracy: 0.8119 - val_loss: 0.7760 - val_accuracy: 0.7427
Epoch 46/50
26/26 [==============================] - 1s 37ms/step - loss: 0.5538 - accuracy: 0.8022 - val_loss: 0.8090 - val_accuracy: 0.7184
Epoch 47/50
26/26 [==============================] - 1s 23ms/step - loss: 0.4936 - accuracy: 0.8216 - val_loss: 0.7777 - val_accuracy: 0.7039
Epoch 48/50
26/26 [==============================] - 0s 18ms/step - loss: 0.5010 - accuracy: 0.8374 - val_loss: 0.7834 - val_accuracy: 0.7427
Epoch 49/50
26/26 [==============================] - 0s 18ms/step - loss: 0.4935 - accuracy: 0.8277 - val_loss: 0.8089 - val_accuracy: 0.7330
Epoch 50/50
26/26 [==============================] - 0s 18ms/step - loss: 0.5017 - accuracy: 0.8228 - val_loss: 0.7851 - val_accuracy: 0.7184
Out[88]:
<keras.src.callbacks.History at 0x794914d0c940>
InĀ [89]:
def cnn_activations(input, layer, filters):
  conv_layer = model.get_layer(layer)  #put name of the actual convolutional layer, based on the error message
  conv_model = keras.Model(inputs=model.inputs, outputs=conv_layer.output)

  activations = conv_model.predict(input)
  activations = np.squeeze(activations, axis=0)
  activation_map = activations[:, :, filters - 1]

  return activation_map
InĀ [90]:
image = X_test[0]
plt.imshow(image, cmap='gray')
image = np.expand_dims(image, axis=0)
image = np.expand_dims(image, axis=-1)
print(image.shape)
(1, 50, 37, 1)
No description has been provided for this image
InĀ [94]:
plt.imshow(cnn_activations(image, 'conv2d_2', 1), cmap='gray')
1/1 [==============================] - 0s 103ms/step
Out[94]:
<matplotlib.image.AxesImage at 0x794914da2980>
No description has been provided for this image
InĀ [95]:
X_train_cnn = [cnn_activations(np.expand_dims(np.expand_dims(x, axis=0), axis=-1), 'conv2d_2', 1) for x in X_train]
X_test_cnn = [cnn_activations(np.expand_dims(np.expand_dims(x, axis=0), axis=-1), 'conv2d_2', 1) for x in X_test]
1/1 [==============================] - 0s 257ms/step
1/1 [==============================] - 0s 136ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 69ms/step
1/1 [==============================] - 0s 99ms/step
1/1 [==============================] - 0s 134ms/step
1/1 [==============================] - 0s 70ms/step
1/1 [==============================] - 0s 168ms/step
1/1 [==============================] - 0s 116ms/step
1/1 [==============================] - 0s 178ms/step
1/1 [==============================] - 0s 161ms/step
1/1 [==============================] - 0s 182ms/step
1/1 [==============================] - 0s 128ms/step
1/1 [==============================] - 0s 128ms/step
1/1 [==============================] - 0s 166ms/step
1/1 [==============================] - 0s 110ms/step
1/1 [==============================] - 0s 71ms/step
1/1 [==============================] - 0s 94ms/step
1/1 [==============================] - 0s 71ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 68ms/step
1/1 [==============================] - 0s 70ms/step
1/1 [==============================] - 0s 97ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 68ms/step
1/1 [==============================] - 0s 65ms/step
1/1 [==============================] - 0s 71ms/step
1/1 [==============================] - 0s 68ms/step
1/1 [==============================] - 0s 68ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 65ms/step
1/1 [==============================] - 0s 66ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 67ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 68ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 56ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 65ms/step
1/1 [==============================] - 0s 58ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 55ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 63ms/step
1/1 [==============================] - 0s 70ms/step
1/1 [==============================] - 0s 68ms/step
1/1 [==============================] - 0s 71ms/step
1/1 [==============================] - 0s 63ms/step
1/1 [==============================] - 0s 64ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 64ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 66ms/step
1/1 [==============================] - 0s 95ms/step
1/1 [==============================] - 0s 68ms/step
1/1 [==============================] - 0s 70ms/step
1/1 [==============================] - 0s 70ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 56ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 68ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 69ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 49ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 56ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 49ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 55ms/step
1/1 [==============================] - 0s 66ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 56ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 55ms/step
1/1 [==============================] - 0s 56ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 56ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 40ms/step
1/1 [==============================] - 0s 63ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 49ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 49ms/step
1/1 [==============================] - 0s 58ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 71ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 58ms/step
1/1 [==============================] - 0s 67ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 1s 636ms/step
1/1 [==============================] - 0s 70ms/step
1/1 [==============================] - 0s 68ms/step
1/1 [==============================] - 0s 69ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 56ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 56ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 69ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 55ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 60ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 49ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 63ms/step
1/1 [==============================] - 0s 63ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 60ms/step
1/1 [==============================] - 0s 60ms/step
1/1 [==============================] - 0s 94ms/step
1/1 [==============================] - 0s 66ms/step
1/1 [==============================] - 0s 67ms/step
1/1 [==============================] - 0s 64ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 66ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 55ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 58ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 56ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 58ms/step
1/1 [==============================] - 0s 60ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 58ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 62ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 49ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 61ms/step
1/1 [==============================] - 0s 49ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 71ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 62ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 60ms/step
1/1 [==============================] - 0s 65ms/step
1/1 [==============================] - 0s 67ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 0s 65ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 65ms/step
1/1 [==============================] - 0s 70ms/step
1/1 [==============================] - 0s 67ms/step
1/1 [==============================] - 0s 70ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 58ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 49ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 55ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 56ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 68ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 58ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 61ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 49ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 0s 49ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 58ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 62ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 60ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 69ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 64ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 68ms/step
1/1 [==============================] - 0s 61ms/step
1/1 [==============================] - 0s 61ms/step
1/1 [==============================] - 0s 58ms/step
1/1 [==============================] - 0s 92ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 71ms/step
1/1 [==============================] - 0s 69ms/step
1/1 [==============================] - 0s 68ms/step
1/1 [==============================] - 0s 70ms/step
1/1 [==============================] - 0s 62ms/step
1/1 [==============================] - 0s 67ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 60ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 58ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 56ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 55ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 65ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 60ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 63ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 56ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 40ms/step
1/1 [==============================] - 0s 60ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 62ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 62ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 56ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 58ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 65ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 69ms/step
1/1 [==============================] - 0s 58ms/step
1/1 [==============================] - 0s 69ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 65ms/step
1/1 [==============================] - 0s 60ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 64ms/step
1/1 [==============================] - 0s 66ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 71ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 55ms/step
1/1 [==============================] - 0s 49ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 88ms/step
1/1 [==============================] - 0s 244ms/step
1/1 [==============================] - 0s 100ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 40ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 40ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 40ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 55ms/step
1/1 [==============================] - 0s 67ms/step
1/1 [==============================] - 0s 64ms/step
1/1 [==============================] - 0s 55ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 63ms/step
1/1 [==============================] - 0s 66ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 0s 68ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 68ms/step
1/1 [==============================] - 0s 65ms/step
1/1 [==============================] - 0s 66ms/step
1/1 [==============================] - 0s 65ms/step
1/1 [==============================] - 0s 64ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 40ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 67ms/step
1/1 [==============================] - 0s 63ms/step
1/1 [==============================] - 0s 61ms/step
1/1 [==============================] - 0s 61ms/step
1/1 [==============================] - 0s 62ms/step
1/1 [==============================] - 0s 60ms/step
1/1 [==============================] - 0s 60ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 0s 60ms/step
1/1 [==============================] - 0s 63ms/step
1/1 [==============================] - 0s 62ms/step
1/1 [==============================] - 0s 62ms/step
1/1 [==============================] - 0s 65ms/step
1/1 [==============================] - 0s 68ms/step
1/1 [==============================] - 0s 65ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 49ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 55ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 55ms/step
1/1 [==============================] - 1s 722ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 49ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 49ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 55ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 49ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 56ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 58ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 62ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 69ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 65ms/step
1/1 [==============================] - 0s 64ms/step
1/1 [==============================] - 0s 60ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 63ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 63ms/step
1/1 [==============================] - 0s 68ms/step
1/1 [==============================] - 0s 95ms/step
1/1 [==============================] - 0s 66ms/step
1/1 [==============================] - 0s 70ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 69ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 58ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 66ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 49ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 65ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 66ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 55ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 58ms/step
1/1 [==============================] - 0s 49ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 49ms/step
1/1 [==============================] - 0s 49ms/step
1/1 [==============================] - 0s 56ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 58ms/step
1/1 [==============================] - 0s 56ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 58ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 63ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 55ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 60ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 55ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 68ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 61ms/step
1/1 [==============================] - 0s 62ms/step
1/1 [==============================] - 0s 68ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 0s 92ms/step
1/1 [==============================] - 0s 63ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 66ms/step
1/1 [==============================] - 0s 68ms/step
1/1 [==============================] - 0s 69ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 65ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 49ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 56ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 58ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 55ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 0s 61ms/step
1/1 [==============================] - 0s 55ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 49ms/step
1/1 [==============================] - 0s 65ms/step
1/1 [==============================] - 0s 67ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 61ms/step
1/1 [==============================] - 0s 61ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 61ms/step
1/1 [==============================] - 0s 71ms/step
1/1 [==============================] - 0s 68ms/step
1/1 [==============================] - 0s 71ms/step
1/1 [==============================] - 0s 61ms/step
1/1 [==============================] - 0s 68ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 67ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 40ms/step
1/1 [==============================] - 0s 39ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 40ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 49ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 40ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 64ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 49ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 56ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 67ms/step
1/1 [==============================] - 0s 63ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 62ms/step
1/1 [==============================] - 0s 61ms/step
1/1 [==============================] - 0s 65ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 67ms/step
1/1 [==============================] - 0s 64ms/step
1/1 [==============================] - 0s 67ms/step
1/1 [==============================] - 0s 63ms/step
1/1 [==============================] - 0s 67ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 68ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 49ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 58ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 56ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 62ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 51ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 55ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 48ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 57ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 40ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 56ms/step
1/1 [==============================] - 0s 55ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 67ms/step
1/1 [==============================] - 0s 64ms/step
1/1 [==============================] - 0s 62ms/step
1/1 [==============================] - 0s 93ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 63ms/step
1/1 [==============================] - 0s 58ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 70ms/step
1/1 [==============================] - 0s 63ms/step
1/1 [==============================] - 0s 63ms/step
1/1 [==============================] - 0s 63ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 56ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 55ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 46ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 59ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 42ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 41ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 53ms/step
1/1 [==============================] - 0s 58ms/step
1/1 [==============================] - 0s 50ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 68ms/step
1/1 [==============================] - 0s 54ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 47ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 55ms/step
1/1 [==============================] - 0s 52ms/step
1/1 [==============================] - 0s 43ms/step
1/1 [==============================] - 0s 44ms/step
1/1 [==============================] - 0s 45ms/step
1/1 [==============================] - 0s 41ms/step
InĀ [96]:
X_train_cnn = np.array(X_train_cnn)
X_test_cnn = np.array(X_test_cnn)

X_train_cnn = X_train_cnn.reshape((X_train.shape[0], 48*35))
X_test_cnn = X_test_cnn.reshape((X_test.shape[0], 48*35))

SVM

InĀ [97]:
svm_cnn = SVC(kernel = 'rbf', decision_function_shape='ovo')
svm_cnn.fit(X_train_cnn, y_train)

cnn_predictions = svm_cnn.predict(X_test_cnn)
print(classification_report(y_test, cnn_predictions, target_names = target_names))
ConfusionMatrixDisplay.from_estimator(svm_cnn, X_test_cnn, y_test, display_labels=target_names, xticks_rotation="vertical")
plt.tight_layout()
plt.show()
                   precision    recall  f1-score   support

     Ariel Sharon       1.00      0.17      0.29        12
     Colin Powell       0.87      0.71      0.78        55
  Donald Rumsfeld       0.85      0.52      0.65        21
    George W Bush       0.64      0.97      0.77       106
Gerhard Schroeder       1.00      0.37      0.54        19
      Hugo Chavez       0.83      0.33      0.48        15
       Tony Blair       0.65      0.50      0.57        30

         accuracy                           0.71       258
        macro avg       0.83      0.51      0.58       258
     weighted avg       0.76      0.71      0.68       258

No description has been provided for this image

KNN

InĀ [98]:
knn_cnn = KNeighborsClassifier(n_neighbors = 5)
knn_cnn.fit(X_train_cnn, y_train)

cnn_predictions = knn_cnn.predict(X_test_cnn)
print(classification_report(y_test, cnn_predictions, target_names = target_names))
ConfusionMatrixDisplay.from_estimator(knn_cnn, X_test_cnn, y_test, display_labels=target_names, xticks_rotation="vertical")
plt.tight_layout()
plt.show()
                   precision    recall  f1-score   support

     Ariel Sharon       0.24      0.42      0.30        12
     Colin Powell       0.69      0.64      0.66        55
  Donald Rumsfeld       0.33      0.43      0.38        21
    George W Bush       0.66      0.77      0.71       106
Gerhard Schroeder       0.25      0.16      0.19        19
      Hugo Chavez       0.60      0.20      0.30        15
       Tony Blair       0.35      0.20      0.26        30

         accuracy                           0.55       258
        macro avg       0.45      0.40      0.40       258
     weighted avg       0.55      0.55      0.54       258

No description has been provided for this image

Decision Tree

InĀ [99]:
tree_cnn = DecisionTreeClassifier()
tree_cnn.fit(X_train_cnn, y_train)

cnn_predictions = tree_cnn.predict(X_test_cnn)
print(classification_report(y_test, cnn_predictions, target_names = target_names))
ConfusionMatrixDisplay.from_estimator(tree_cnn, X_test_cnn, y_test, display_labels=target_names, xticks_rotation="vertical")
plt.tight_layout()
plt.show()
                   precision    recall  f1-score   support

     Ariel Sharon       0.20      0.17      0.18        12
     Colin Powell       0.56      0.51      0.53        55
  Donald Rumsfeld       0.17      0.14      0.15        21
    George W Bush       0.60      0.60      0.60       106
Gerhard Schroeder       0.24      0.42      0.31        19
      Hugo Chavez       0.38      0.20      0.26        15
       Tony Blair       0.38      0.40      0.39        30

         accuracy                           0.47       258
        macro avg       0.36      0.35      0.35       258
     weighted avg       0.47      0.47      0.46       258

No description has been provided for this image