0% found this document useful (0 votes)
3 views

Copy_of_Lab5_Transfer_Learn

Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

Copy_of_Lab5_Transfer_Learn

Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 12

Lab 5

Name: Akshat Kumar


Registration No.: 08419011621
Lab 5: Transfer Learning on pre-trained model (ResNet, VGG-16) for MNIST
dataset

# Modules used for data handling.


import pandas as pd
import numpy as np

# Module used for random choice from an iterable.


import random as r

# Modules used for data visualization.


import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style()

# Modules used for training models. import tensorflow as tf from


tensorflow.keras import datasets, layers, models, losses, Model
from tensorflow.keras.applications.resnet50 import ResNet50 from
tensorflow.keras.datasets import mnist from tensorflow.keras.utils
import to_categorical from tensorflow.keras.applications import
ResNet50, VGG16 from tensorflow.keras.models import Model from
tensorflow.keras.layers import Dense, Flatten, Dropout

Importing the required modules


In [ ]:

(x_train, y_train), (x_test, y_test) = mnist.load_data()

Loading the MNIST dataset


In [ ]: In [ ]:

x_train=x_train[0:1000]
y_train=y_train[0:1000]
x_test=x_test[0:1000]
y_test=y_test[0:1000]
Image Manipulation for Transfer Learning using
pretrained models
Arrange data (pre-process size and any other requirement) as per the pre-trained models compatability.

write function ImageManipulation

In [ ]: def ImageManipulation(x_train, x_test, y_train, y_test, target_size=(224, 224), num_classes=10):


"""
Prepares the MNIST dataset for transfer learning with pretrained models.

Parameters:
x_train (numpy.ndarray): Training images.
x_test (numpy.ndarray): Test images.
y_train (numpy.ndarray): Training labels. y_test (numpy.ndarray): Test
labels. target_size (tuple): Target size for resizing images (default is (224,
224)). num_classes (int): Number of classes for one-hot encoding (default is 10
for MNIST).

Returns:
tuple: Preprocessed x_train, x_test, y_train, y_test.
"""
x_train = tf.image.grayscale_to_rgb(tf.expand_dims(x_train, axis=-
1)) x_test = tf.image.grayscale_to_rgb(tf.expand_dims(x_test,
axis=-1)) x_train = tf.image.resize(x_train, [224, 224]) x_test
= tf.image.resize(x_test, [224, 224])

# Normalize the images


x_train = x_train / 255.0
x_test = x_test / 255.0

# One-hot encode the labels


y_train = to_categorical(y_train, num_classes=10) y_test =
to_categorical(y_test, num_classes=10) return x_train, x_test, y_train, y_test

Image Manipulation

x_train, x_test, y_train, y_test = ImageManipulation(x_train, x_test, y_train, y_test)

Loading the data


In [ ]:

Transfer Learning using ResNet50 or VGG-16

# Load ResNet50 (or use VGG16 by replacing ResNet50 with VGG16)


base_model = ResNet50(weights='imagenet', include_top=False, input_shape=(224, 224, 3))
# Freeze the base model layers
base_model.trainable = False

for layer in base_model.layers[-10:]:


layer.trainable = True

# Add custom layers on top of the base


model x = Flatten()(base_model.output) x =
Dense(128, activation='relu')(x) x =
Dropout(0.5)(x) output = Dense(10,
activation='softmax')(x)

Initialisation of the model


In [ ]:
# Create the complete model
model = Model(inputs=base_model.input, outputs=output)

Loading the model


In [ ]:

Fine-tuning the model and compiling the model

model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.00001),

loss='categorical_crossentropy',
metrics=['accuracy']) model.summary()

architecture
In [ ]:

Model: "functional"
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Layer
(type) ┃ Output Shape ┃ Param # ┃ Connected to ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩ │
input_layer (InputLayer) │ (None, 224, 224, 3) │ 0 │ - │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv1_pad (ZeroPadding2D) │ (None, 230, 230, 3) │ 0 │ input_layer[0][0] │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv1_conv (Conv2D) │ (None, 112, 112, 64) │ 9,472 │ conv1_pad[0][0] │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv1_bn │ (None, 112, 112, 64) │ 256 │ conv1_conv[0][0] │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv1_relu (Activation) │ (None, 112, 112, 64) │ 0 │ conv1_bn[0][0] │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
pool1_pad (ZeroPadding2D) │ (None, 114, 114, 64) │ 0 │ conv1_relu[0][0] │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
pool1_pool (MaxPooling2D) │ (None, 56, 56, 64) │ 0 │ pool1_pad[0][0] │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block1_1_conv │ (None, 56, 56, 64) │ 4,160 │ pool1_pool[0][0] │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block1_1_bn │ (None, 56, 56, 64) │ 256 │ conv2_block1_1_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block1_1_relu │ (None, 56, 56, 64) │ 0 │ conv2_block1_1_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block1_2_conv │ (None, 56, 56, 64) │ 36,928 │ conv2_block1_1_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block1_2_bn │ (None, 56, 56, 64) │ 256 │ conv2_block1_2_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block1_2_relu │ (None, 56, 56, 64) │ 0 │ conv2_block1_2_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block1_0_conv │ (None, 56, 56, 256) │ 16,640 │ pool1_pool[0][0] │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block1_3_conv │ (None, 56, 56, 256) │ 16,640 │ conv2_block1_2_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block1_0_bn │ (None, 56, 56, 256) │ 1,024 │ conv2_block1_0_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block1_3_bn │ (None, 56, 56, 256) │ 1,024 │ conv2_block1_3_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block1_add (Add) │ (None, 56, 56, 256) │ 0 │ conv2_block1_0_bn[0][… │ │
│ │ │ conv2_block1_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block1_out │ (None, 56, 56, 256) │ 0 │ conv2_block1_add[0][0] │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block2_1_conv │ (None, 56, 56, 64) │ 16,448 │ conv2_block1_out[0][0] │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block2_1_bn │ (None, 56, 56, 64) │ 256 │ conv2_block2_1_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block2_1_relu │ (None, 56, 56, 64) │ 0 │ conv2_block2_1_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block2_2_conv │ (None, 56, 56, 64) │ 36,928 │ conv2_block2_1_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block2_2_bn │ (None, 56, 56, 64) │ 256 │ conv2_block2_2_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block2_2_relu │ (None, 56, 56, 64) │ 0 │ conv2_block2_2_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block2_3_conv │ (None, 56, 56, 256) │ 16,640 │ conv2_block2_2_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block2_3_bn │ (None, 56, 56, 256) │ 1,024 │ conv2_block2_3_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block2_add (Add) │ (None, 56, 56, 256) │ 0 │ conv2_block1_out[0][0… │ │
│ │ │ conv2_block2_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block2_out │ (None, 56, 56, 256) │ 0 │ conv2_block2_add[0][0] │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block3_1_conv │ (None, 56, 56, 64) │ 16,448 │ conv2_block2_out[0][0] │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block3_1_bn │ (None, 56, 56, 64) │ 256 │ conv2_block3_1_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block3_1_relu │ (None, 56, 56, 64) │ 0 │ conv2_block3_1_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block3_2_conv │ (None, 56, 56, 64) │ 36,928 │ conv2_block3_1_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block3_2_bn │ (None, 56, 56, 64) │ 256 │ conv2_block3_2_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block3_2_relu │ (None, 56, 56, 64) │ 0 │ conv2_block3_2_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block3_3_conv │ (None, 56, 56, 256) │ 16,640 │ conv2_block3_2_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block3_3_bn │ (None, 56, 56, 256) │ 1,024 │ conv2_block3_3_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block3_add (Add) │ (None, 56, 56, 256) │ 0 │ conv2_block2_out[0][0… │ │
│ │ │ conv2_block3_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv2_block3_out │ (None, 56, 56, 256) │ 0 │ conv2_block3_add[0][0] │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block1_1_conv │ (None, 28, 28, 128) │ 32,896 │ conv2_block3_out[0][0] │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block1_1_bn │ (None, 28, 28, 128) │ 512 │ conv3_block1_1_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block1_1_relu │ (None, 28, 28, 128) │ 0 │ conv3_block1_1_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block1_2_conv │ (None, 28, 28, 128) │ 147,584 │ conv3_block1_1_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block1_2_bn │ (None, 28, 28, 128) │ 512 │ conv3_block1_2_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block1_2_relu │ (None, 28, 28, 128) │ 0 │ conv3_block1_2_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block1_0_conv │ (None, 28, 28, 512) │ 131,584 │ conv2_block3_out[0][0] │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block1_3_conv │ (None, 28, 28, 512) │ 66,048 │ conv3_block1_2_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block1_0_bn │ (None, 28, 28, 512) │ 2,048 │ conv3_block1_0_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block1_3_bn │ (None, 28, 28, 512) │ 2,048 │ conv3_block1_3_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block1_add (Add) │ (None, 28, 28, 512) │ 0 │ conv3_block1_0_bn[0][… │ │
│ │ │ conv3_block1_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block1_out │ (None, 28, 28, 512) │ 0 │ conv3_block1_add[0][0] │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block2_1_conv │ (None, 28, 28, 128) │ 65,664 │ conv3_block1_out[0][0] │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block2_1_bn │ (None, 28, 28, 128) │ 512 │ conv3_block2_1_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block2_1_relu │ (None, 28, 28, 128) │ 0 │ conv3_block2_1_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block2_2_conv │ (None, 28, 28, 128) │ 147,584 │ conv3_block2_1_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block2_2_bn │ (None, 28, 28, 128) │ 512 │ conv3_block2_2_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block2_2_relu │ (None, 28, 28, 128) │ 0 │ conv3_block2_2_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block2_3_conv │ (None, 28, 28, 512) │ 66,048 │ conv3_block2_2_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block2_3_bn │ (None, 28, 28, 512) │ 2,048 │ conv3_block2_3_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block2_add (Add) │ (None, 28, 28, 512) │ 0 │ conv3_block1_out[0][0… │ │
│ │ │ conv3_block2_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block2_out │ (None, 28, 28, 512) │ 0 │ conv3_block2_add[0][0] │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block3_1_conv │ (None, 28, 28, 128) │ 65,664 │ conv3_block2_out[0][0] │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block3_1_bn │ (None, 28, 28, 128) │ 512 │ conv3_block3_1_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block3_1_relu │ (None, 28, 28, 128) │ 0 │ conv3_block3_1_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block3_2_conv │ (None, 28, 28, 128) │ 147,584 │ conv3_block3_1_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block3_2_bn │ (None, 28, 28, 128) │ 512 │ conv3_block3_2_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block3_2_relu │ (None, 28, 28, 128) │ 0 │ conv3_block3_2_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block3_3_conv │ (None, 28, 28, 512) │ 66,048 │ conv3_block3_2_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block3_3_bn │ (None, 28, 28, 512) │ 2,048 │ conv3_block3_3_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block3_add (Add) │ (None, 28, 28, 512) │ 0 │ conv3_block2_out[0][0… │ │
│ │ │ conv3_block3_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block3_out │ (None, 28, 28, 512) │ 0 │ conv3_block3_add[0][0] │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block4_1_conv │ (None, 28, 28, 128) │ 65,664 │ conv3_block3_out[0][0] │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block4_1_bn │ (None, 28, 28, 128) │ 512 │ conv3_block4_1_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block4_1_relu │ (None, 28, 28, 128) │ 0 │ conv3_block4_1_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block4_2_conv │ (None, 28, 28, 128) │ 147,584 │ conv3_block4_1_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block4_2_bn │ (None, 28, 28, 128) │ 512 │ conv3_block4_2_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block4_2_relu │ (None, 28, 28, 128) │ 0 │ conv3_block4_2_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block4_3_conv │ (None, 28, 28, 512) │ 66,048 │ conv3_block4_2_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block4_3_bn │ (None, 28, 28, 512) │ 2,048 │ conv3_block4_3_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block4_add (Add) │ (None, 28, 28, 512) │ 0 │ conv3_block3_out[0][0… │ │
│ │ │ conv3_block4_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv3_block4_out │ (None, 28, 28, 512) │ 0 │ conv3_block4_add[0][0] │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block1_1_conv │ (None, 14, 14, 256) │ 131,328 │ conv3_block4_out[0][0] │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block1_1_bn │ (None, 14, 14, 256) │ 1,024 │ conv4_block1_1_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block1_1_relu │ (None, 14, 14, 256) │ 0 │ conv4_block1_1_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block1_2_conv │ (None, 14, 14, 256) │ 590,080 │ conv4_block1_1_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block1_2_bn │ (None, 14, 14, 256) │ 1,024 │ conv4_block1_2_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block1_2_relu │ (None, 14, 14, 256) │ 0 │ conv4_block1_2_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block1_0_conv │ (None, 14, 14, 1024) │ 525,312 │ conv3_block4_out[0][0] │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block1_3_conv │ (None, 14, 14, 1024) │ 263,168 │ conv4_block1_2_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block1_0_bn │ (None, 14, 14, 1024) │ 4,096 │ conv4_block1_0_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block1_3_bn │ (None, 14, 14, 1024) │ 4,096 │ conv4_block1_3_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block1_add (Add) │ (None, 14, 14, 1024) │ 0 │ conv4_block1_0_bn[0][… │ │
│ │ │ conv4_block1_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block1_out │ (None, 14, 14, 1024) │ 0 │ conv4_block1_add[0][0] │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block2_1_conv │ (None, 14, 14, 256) │ 262,400 │ conv4_block1_out[0][0] │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block2_1_bn │ (None, 14, 14, 256) │ 1,024 │ conv4_block2_1_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block2_1_relu │ (None, 14, 14, 256) │ 0 │ conv4_block2_1_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block2_2_conv │ (None, 14, 14, 256) │ 590,080 │ conv4_block2_1_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block2_2_bn │ (None, 14, 14, 256) │ 1,024 │ conv4_block2_2_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block2_2_relu │ (None, 14, 14, 256) │ 0 │ conv4_block2_2_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block2_3_conv │ (None, 14, 14, 1024) │ 263,168 │ conv4_block2_2_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block2_3_bn │ (None, 14, 14, 1024) │ 4,096 │ conv4_block2_3_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block2_add (Add) │ (None, 14, 14, 1024) │ 0 │ conv4_block1_out[0][0… │ │
│ │ │ conv4_block2_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block2_out │ (None, 14, 14, 1024) │ 0 │ conv4_block2_add[0][0] │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block3_1_conv │ (None, 14, 14, 256) │ 262,400 │ conv4_block2_out[0][0] │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block3_1_bn │ (None, 14, 14, 256) │ 1,024 │ conv4_block3_1_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block3_1_relu │ (None, 14, 14, 256) │ 0 │ conv4_block3_1_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block3_2_conv │ (None, 14, 14, 256) │ 590,080 │ conv4_block3_1_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block3_2_bn │ (None, 14, 14, 256) │ 1,024 │ conv4_block3_2_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block3_2_relu │ (None, 14, 14, 256) │ 0 │ conv4_block3_2_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block3_3_conv │ (None, 14, 14, 1024) │ 263,168 │ conv4_block3_2_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block3_3_bn │ (None, 14, 14, 1024) │ 4,096 │ conv4_block3_3_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block3_add (Add) │ (None, 14, 14, 1024) │ 0 │ conv4_block2_out[0][0… │ │
│ │ │ conv4_block3_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block3_out │ (None, 14, 14, 1024) │ 0 │ conv4_block3_add[0][0] │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block4_1_conv │ (None, 14, 14, 256) │ 262,400 │ conv4_block3_out[0][0] │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block4_1_bn │ (None, 14, 14, 256) │ 1,024 │ conv4_block4_1_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block4_1_relu │ (None, 14, 14, 256) │ 0 │ conv4_block4_1_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block4_2_conv │ (None, 14, 14, 256) │ 590,080 │ conv4_block4_1_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block4_2_bn │ (None, 14, 14, 256) │ 1,024 │ conv4_block4_2_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block4_2_relu │ (None, 14, 14, 256) │ 0 │ conv4_block4_2_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block4_3_conv │ (None, 14, 14, 1024) │ 263,168 │ conv4_block4_2_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block4_3_bn │ (None, 14, 14, 1024) │ 4,096 │ conv4_block4_3_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block4_add (Add) │ (None, 14, 14, 1024) │ 0 │ conv4_block3_out[0][0… │ │
│ │ │ conv4_block4_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block4_out │ (None, 14, 14, 1024) │ 0 │ conv4_block4_add[0][0] │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block5_1_conv │ (None, 14, 14, 256) │ 262,400 │ conv4_block4_out[0][0] │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block5_1_bn │ (None, 14, 14, 256) │ 1,024 │ conv4_block5_1_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block5_1_relu │ (None, 14, 14, 256) │ 0 │ conv4_block5_1_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block5_2_conv │ (None, 14, 14, 256) │ 590,080 │ conv4_block5_1_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block5_2_bn │ (None, 14, 14, 256) │ 1,024 │ conv4_block5_2_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block5_2_relu │ (None, 14, 14, 256) │ 0 │ conv4_block5_2_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block5_3_conv │ (None, 14, 14, 1024) │ 263,168 │ conv4_block5_2_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block5_3_bn │ (None, 14, 14, 1024) │ 4,096 │ conv4_block5_3_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block5_add (Add) │ (None, 14, 14, 1024) │ 0 │ conv4_block4_out[0][0… │ │
│ │ │ conv4_block5_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block5_out │ (None, 14, 14, 1024) │ 0 │ conv4_block5_add[0][0] │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block6_1_conv │ (None, 14, 14, 256) │ 262,400 │ conv4_block5_out[0][0] │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block6_1_bn │ (None, 14, 14, 256) │ 1,024 │ conv4_block6_1_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block6_1_relu │ (None, 14, 14, 256) │ 0 │ conv4_block6_1_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block6_2_conv │ (None, 14, 14, 256) │ 590,080 │ conv4_block6_1_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block6_2_bn │ (None, 14, 14, 256) │ 1,024 │ conv4_block6_2_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block6_2_relu │ (None, 14, 14, 256) │ 0 │ conv4_block6_2_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block6_3_conv │ (None, 14, 14, 1024) │ 263,168 │ conv4_block6_2_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block6_3_bn │ (None, 14, 14, 1024) │ 4,096 │ conv4_block6_3_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block6_add (Add) │ (None, 14, 14, 1024) │ 0 │ conv4_block5_out[0][0… │ │
│ │ │ conv4_block6_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv4_block6_out │ (None, 14, 14, 1024) │ 0 │ conv4_block6_add[0][0] │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block1_1_conv │ (None, 7, 7, 512) │ 524,800 │ conv4_block6_out[0][0] │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block1_1_bn │ (None, 7, 7, 512) │ 2,048 │ conv5_block1_1_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block1_1_relu │ (None, 7, 7, 512) │ 0 │ conv5_block1_1_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block1_2_conv │ (None, 7, 7, 512) │ 2,359,808 │ conv5_block1_1_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block1_2_bn │ (None, 7, 7, 512) │ 2,048 │ conv5_block1_2_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block1_2_relu │ (None, 7, 7, 512) │ 0 │ conv5_block1_2_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block1_0_conv │ (None, 7, 7, 2048) │ 2,099,200 │ conv4_block6_out[0][0] │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block1_3_conv │ (None, 7, 7, 2048) │ 1,050,624 │ conv5_block1_2_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block1_0_bn │ (None, 7, 7, 2048) │ 8,192 │ conv5_block1_0_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block1_3_bn │ (None, 7, 7, 2048) │ 8,192 │ conv5_block1_3_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block1_add (Add) │ (None, 7, 7, 2048) │ 0 │ conv5_block1_0_bn[0][… │ │
│ │ │ conv5_block1_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block1_out │ (None, 7, 7, 2048) │ 0 │ conv5_block1_add[0][0] │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block2_1_conv │ (None, 7, 7, 512) │ 1,049,088 │ conv5_block1_out[0][0] │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block2_1_bn │ (None, 7, 7, 512) │ 2,048 │ conv5_block2_1_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block2_1_relu │ (None, 7, 7, 512) │ 0 │ conv5_block2_1_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block2_2_conv │ (None, 7, 7, 512) │ 2,359,808 │ conv5_block2_1_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block2_2_bn │ (None, 7, 7, 512) │ 2,048 │ conv5_block2_2_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block2_2_relu │ (None, 7, 7, 512) │ 0 │ conv5_block2_2_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block2_3_conv │ (None, 7, 7, 2048) │ 1,050,624 │ conv5_block2_2_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block2_3_bn │ (None, 7, 7, 2048) │ 8,192 │ conv5_block2_3_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block2_add (Add) │ (None, 7, 7, 2048) │ 0 │ conv5_block1_out[0][0… │ │
│ │ │ conv5_block2_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block2_out │ (None, 7, 7, 2048) │ 0 │ conv5_block2_add[0][0] │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block3_1_conv │ (None, 7, 7, 512) │ 1,049,088 │ conv5_block2_out[0][0] │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block3_1_bn │ (None, 7, 7, 512) │ 2,048 │ conv5_block3_1_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block3_1_relu │ (None, 7, 7, 512) │ 0 │ conv5_block3_1_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block3_2_conv │ (None, 7, 7, 512) │ 2,359,808 │ conv5_block3_1_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block3_2_bn │ (None, 7, 7, 512) │ 2,048 │ conv5_block3_2_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block3_2_relu │ (None, 7, 7, 512) │ 0 │ conv5_block3_2_bn[0][… │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block3_3_conv │ (None, 7, 7, 2048) │ 1,050,624 │ conv5_block3_2_relu[0… │ │
(Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block3_3_bn │ (None, 7, 7, 2048) │ 8,192 │ conv5_block3_3_conv[0… │ │
(BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block3_add (Add) │ (None, 7, 7, 2048) │ 0 │ conv5_block2_out[0][0… │ │
│ │ │ conv5_block3_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
conv5_block3_out │ (None, 7, 7, 2048) │ 0 │ conv5_block3_add[0][0] │ │
(Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
flatten (Flatten) │ (None, 100352) │ 0 │ conv5_block3_out[0][0] │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │ dense
(Dense) │ (None, 128) │ 12,845,184 │ flatten[0][0] │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
dropout (Dropout) │ (None, 128) │ 0 │ dense[0][0] │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤ │
dense_1 (Dense) │ (None, 10) │ 1,290 │ dropout[0][0] │
└───────────────────────────┴────────────────────────┴────────────────┴────────────────────────┘
Total params: 36,434,186 (138.99 MB)
Trainable params: 17,312,138 (66.04 MB)
Non-trainable params: 19,122,048 (72.94 MB)

history = model.fit(x_train, y_train,


validation_split=0.2,
epochs=10,
batch_size=8)

Fitting the model


In [ ]:

Epoch 1/10
100/100 ━━━━━━━━━━━━━━━━━━━━ 23s 79ms/step - accuracy: 0.2791 - loss: 2.2321 - val_accuracy: 0.1550 -
val_loss:
2.3670
Epoch 2/10
100/100 ━━━━━━━━━━━━━━━━━━━━ 9s 40ms/step - accuracy: 0.7132 - loss: 1.0209 - val_accuracy: 0.3500 - val_loss:
1.
9464
Epoch 3/10
100/100 ━━━━━━━━━━━━━━━━━━━━ 6s 45ms/step - accuracy: 0.7882 - loss: 0.7438 - val_accuracy: 0.6750 - val_loss:
1.
2829
Epoch 4/10
100/100 ━━━━━━━━━━━━━━━━━━━━ 4s 39ms/step - accuracy: 0.8326 - loss: 0.5013 - val_accuracy: 0.8350 - val_loss:
0.
7181
Epoch 5/10
100/100 ━━━━━━━━━━━━━━━━━━━━ 4s 39ms/step - accuracy: 0.8688 - loss: 0.4635 - val_accuracy: 0.8750 - val_loss:
0.
4241
Epoch 6/10
100/100 ━━━━━━━━━━━━━━━━━━━━ 5s 41ms/step - accuracy: 0.9062 - loss: 0.3139 - val_accuracy: 0.9050 - val_loss:
0.
3220
Epoch 7/10
100/100 ━━━━━━━━━━━━━━━━━━━━ 5s 39ms/step - accuracy: 0.9178 - loss: 0.2922 - val_accuracy: 0.8750 - val_loss:
0.
4053
Epoch 8/10
100/100 ━━━━━━━━━━━━━━━━━━━━ 4s 39ms/step - accuracy: 0.9366 - loss: 0.2117 - val_accuracy: 0.8850 - val_loss:
0.
4001
Epoch 9/10
100/100 ━━━━━━━━━━━━━━━━━━━━ 4s 41ms/step - accuracy: 0.9378 - loss: 0.2211 - val_accuracy: 0.9050 - val_loss:
0.
3066
Epoch 10/10
100/100 ━━━━━━━━━━━━━━━━━━━━ 4s 39ms/step - accuracy: 0.9572 - loss: 0.1792 - val_accuracy: 0.8900 - val_loss:
0.
2995
import matplotlib.pyplot as plt

def plot_training_history(history):
"""
Plots the training and validation accuracy and loss from the training history.

Parameters:
history (History): The history object returned by the `model.fit()` function.
"""
# Extract data from the history object
acc = history.history['accuracy']
val_acc = history.history['val_accuracy']
loss = history.history['loss'] val_loss
= history.history['val_loss'] epochs =
range(1, len(acc) + 1)

# Plot accuracy
plt.figure(figsize=(12, 5)) plt.subplot(1, 2, 1)
plt.plot(epochs, acc, 'b', label='Training Accuracy')
plt.plot(epochs, val_acc, 'r', label='Validation Accuracy')
plt.title('Training and Validation Accuracy')
plt.xlabel('Epochs') plt.ylabel('Accuracy')
plt.legend()

# Plot loss plt.subplot(1, 2, 2)


plt.plot(epochs, loss, 'b', label='Training Loss')
plt.plot(epochs, val_loss, 'r', label='Validation Loss')
plt.title('Training and Validation Loss')
plt.xlabel('Epochs') plt.ylabel('Loss')
plt.legend()

plt.tight_layout()
plt.show()
plot_training_history(history)

Plotting the training history


In [ ]:
Conclusions
In this experiment, we successfully utilized transfer learning with a pre-trained model to classify images efficiently. By
preprocessing the data through resizing, normalization, and appropriate label encoding, we ensured compatibility with the
model and optimal performance. Transfer learning allowed us to leverage pre-learned features from a robust model like
ResNet50, reducing training complexity while achieving high accuracy. This highlights the effectiveness of transfer learning in
adapting general-purpose models to domain-specific tasks with limited data and resources.

In [ ]:

You might also like