Fashion Mnist - Resnet 50 - CNN Visualization
Import Libraries
import tensorflow as tf
import pandas as pd
import numpy as np
from keras.models import Model
import matplotlib.pyplot as plt
import seaborn as sns
import random
from sklearn.metrics import confusion_matrix, classification_report,
accuracy_score
# from utils import mnist_reader # Download from Fashion Mnist repo
import mnist_reader
print(len(tf.config.list_physical_devices('GPU'))>0)
True
Download and Load Data
# Download Data if needed
# !wget http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-
images-idx3-ubyte.gz
# !wget http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-
labels-idx1-ubyte.gz
# !wget http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-
images-idx3-ubyte.gz
# !wget http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-
labels-idx1-ubyte.gz
# Load Data
# Change Data folder respectively
data_folder = "./data"
train_images, train_labels = mnist_reader.load_mnist(data_folder, "train")
test_images, test_labels = mnist_reader.load_mnist(data_folder, "t10k")
train_images = train_images.reshape(-1, 28,28)
test_images = test_images.reshape(-1, 28,28)
Load ResNet 50 Model Trained on ImageNet Data
# Load the pre trained model
# Top is not included for us to customize
base_model = tf.keras.applications.ResNet50(
include_top=False,
weights='imagenet')
# If u want to freeze
# base_model.trainable = False
base_model.summary()
Model: "resnet50"
_____________________________________________________________________________
_____________________
Layer (type) Output Shape Param # Connected to
=============================================================================
=====================
input_1 (InputLayer) [(None, None, None, 0 []
3)]
conv1_pad (ZeroPadding2D) (None, None, None, 0 ['input_1[0]
[0]']
3)
conv1_conv (Conv2D) (None, None, None, 9472
['conv1_pad[0][0]']
64)
conv1_bn (BatchNormalization) (None, None, None, 256
['conv1_conv[0][0]']
64)
conv1_relu (Activation) (None, None, None, 0
['conv1_bn[0][0]']
64)
pool1_pad (ZeroPadding2D) (None, None, None, 0
['conv1_relu[0][0]']
64)
pool1_pool (MaxPooling2D) (None, None, None, 0
['pool1_pad[0][0]']
64)
conv2_block1_1_conv (Conv2D) (None, None, None, 4160
['pool1_pool[0][0]']
64)
conv2_block1_1_bn (BatchNormal (None, None, None, 256
['conv2_block1_1_conv[0][0]']
ization) 64)
conv2_block1_1_relu (Activatio (None, None, None, 0
['conv2_block1_1_bn[0][0]']
n) 64)
conv2_block1_2_conv (Conv2D) (None, None, None, 36928
['conv2_block1_1_relu[0][0]']
64)
conv2_block1_2_bn (BatchNormal (None, None, None, 256
['conv2_block1_2_conv[0][0]']
ization) 64)
conv2_block1_2_relu (Activatio (None, None, None, 0
['conv2_block1_2_bn[0][0]']
n) 64)
conv2_block1_0_conv (Conv2D) (None, None, None, 16640
['pool1_pool[0][0]']
256)
conv2_block1_3_conv (Conv2D) (None, None, None, 16640
['conv2_block1_2_relu[0][0]']
256)
conv2_block1_0_bn (BatchNormal (None, None, None, 1024
['conv2_block1_0_conv[0][0]']
ization) 256)
conv2_block1_3_bn (BatchNormal (None, None, None, 1024
['conv2_block1_3_conv[0][0]']
ization) 256)
conv2_block1_add (Add) (None, None, None, 0
['conv2_block1_0_bn[0][0]',
256)
'conv2_block1_3_bn[0][0]']
conv2_block1_out (Activation) (None, None, None, 0
['conv2_block1_add[0][0]']
256)
conv2_block2_1_conv (Conv2D) (None, None, None, 16448
['conv2_block1_out[0][0]']
64)
conv2_block2_1_bn (BatchNormal (None, None, None, 256
['conv2_block2_1_conv[0][0]']
ization) 64)
conv2_block2_1_relu (Activatio (None, None, None, 0
['conv2_block2_1_bn[0][0]']
n) 64)
conv2_block2_2_conv (Conv2D) (None, None, None, 36928
['conv2_block2_1_relu[0][0]']
64)
conv2_block2_2_bn (BatchNormal (None, None, None, 256
['conv2_block2_2_conv[0][0]']
ization) 64)
conv2_block2_2_relu (Activatio (None, None, None, 0
['conv2_block2_2_bn[0][0]']
n) 64)
conv2_block2_3_conv (Conv2D) (None, None, None, 16640
['conv2_block2_2_relu[0][0]']
256)
conv2_block2_3_bn (BatchNormal (None, None, None, 1024
['conv2_block2_3_conv[0][0]']
ization) 256)
conv2_block2_add (Add) (None, None, None, 0
['conv2_block1_out[0][0]',
256)
'conv2_block2_3_bn[0][0]']
conv2_block2_out (Activation) (None, None, None, 0
['conv2_block2_add[0][0]']
256)
conv2_block3_1_conv (Conv2D) (None, None, None, 16448
['conv2_block2_out[0][0]']
64)
conv2_block3_1_bn (BatchNormal (None, None, None, 256
['conv2_block3_1_conv[0][0]']
ization) 64)
conv2_block3_1_relu (Activatio (None, None, None, 0
['conv2_block3_1_bn[0][0]']
n) 64)
conv2_block3_2_conv (Conv2D) (None, None, None, 36928
['conv2_block3_1_relu[0][0]']
64)
conv2_block3_2_bn (BatchNormal (None, None, None, 256
['conv2_block3_2_conv[0][0]']
ization) 64)
conv2_block3_2_relu (Activatio (None, None, None, 0
['conv2_block3_2_bn[0][0]']
n) 64)
conv2_block3_3_conv (Conv2D) (None, None, None, 16640
['conv2_block3_2_relu[0][0]']
256)
conv2_block3_3_bn (BatchNormal (None, None, None, 1024
['conv2_block3_3_conv[0][0]']
ization) 256)
conv2_block3_add (Add) (None, None, None, 0
['conv2_block2_out[0][0]',
256)
'conv2_block3_3_bn[0][0]']
conv2_block3_out (Activation) (None, None, None, 0
['conv2_block3_add[0][0]']
256)
conv3_block1_1_conv (Conv2D) (None, None, None, 32896
['conv2_block3_out[0][0]']
128)
conv3_block1_1_bn (BatchNormal (None, None, None, 512
['conv3_block1_1_conv[0][0]']
ization) 128)
conv3_block1_1_relu (Activatio (None, None, None, 0
['conv3_block1_1_bn[0][0]']
n) 128)
conv3_block1_2_conv (Conv2D) (None, None, None, 147584
['conv3_block1_1_relu[0][0]']
128)
conv3_block1_2_bn (BatchNormal (None, None, None, 512
['conv3_block1_2_conv[0][0]']
ization) 128)
conv3_block1_2_relu (Activatio (None, None, None, 0
['conv3_block1_2_bn[0][0]']
n) 128)
conv3_block1_0_conv (Conv2D) (None, None, None, 131584
['conv2_block3_out[0][0]']
512)
conv3_block1_3_conv (Conv2D) (None, None, None, 66048
['conv3_block1_2_relu[0][0]']
512)
conv3_block1_0_bn (BatchNormal (None, None, None, 2048
['conv3_block1_0_conv[0][0]']
ization) 512)
conv3_block1_3_bn (BatchNormal (None, None, None, 2048
['conv3_block1_3_conv[0][0]']
ization) 512)
conv3_block1_add (Add) (None, None, None, 0
['conv3_block1_0_bn[0][0]',
512)
'conv3_block1_3_bn[0][0]']
conv3_block1_out (Activation) (None, None, None, 0
['conv3_block1_add[0][0]']
512)
conv3_block2_1_conv (Conv2D) (None, None, None, 65664
['conv3_block1_out[0][0]']
128)
conv3_block2_1_bn (BatchNormal (None, None, None, 512
['conv3_block2_1_conv[0][0]']
ization) 128)
conv3_block2_1_relu (Activatio (None, None, None, 0
['conv3_block2_1_bn[0][0]']
n) 128)
conv3_block2_2_conv (Conv2D) (None, None, None, 147584
['conv3_block2_1_relu[0][0]']
128)
conv3_block2_2_bn (BatchNormal (None, None, None, 512
['conv3_block2_2_conv[0][0]']
ization) 128)
conv3_block2_2_relu (Activatio (None, None, None, 0
['conv3_block2_2_bn[0][0]']
n) 128)
conv3_block2_3_conv (Conv2D) (None, None, None, 66048
['conv3_block2_2_relu[0][0]']
512)
conv3_block2_3_bn (BatchNormal (None, None, None, 2048
['conv3_block2_3_conv[0][0]']
ization) 512)
conv3_block2_add (Add) (None, None, None, 0
['conv3_block1_out[0][0]',
512)
'conv3_block2_3_bn[0][0]']
conv3_block2_out (Activation) (None, None, None, 0
['conv3_block2_add[0][0]']
512)
conv3_block3_1_conv (Conv2D) (None, None, None, 65664
['conv3_block2_out[0][0]']
128)
conv3_block3_1_bn (BatchNormal (None, None, None, 512
['conv3_block3_1_conv[0][0]']
ization) 128)
conv3_block3_1_relu (Activatio (None, None, None, 0
['conv3_block3_1_bn[0][0]']
n) 128)
conv3_block3_2_conv (Conv2D) (None, None, None, 147584
['conv3_block3_1_relu[0][0]']
128)
conv3_block3_2_bn (BatchNormal (None, None, None, 512
['conv3_block3_2_conv[0][0]']
ization) 128)
conv3_block3_2_relu (Activatio (None, None, None, 0
['conv3_block3_2_bn[0][0]']
n) 128)
conv3_block3_3_conv (Conv2D) (None, None, None, 66048
['conv3_block3_2_relu[0][0]']
512)
conv3_block3_3_bn (BatchNormal (None, None, None, 2048
['conv3_block3_3_conv[0][0]']
ization) 512)
conv3_block3_add (Add) (None, None, None, 0
['conv3_block2_out[0][0]',
512)
'conv3_block3_3_bn[0][0]']
conv3_block3_out (Activation) (None, None, None, 0
['conv3_block3_add[0][0]']
512)
conv3_block4_1_conv (Conv2D) (None, None, None, 65664
['conv3_block3_out[0][0]']
128)
conv3_block4_1_bn (BatchNormal (None, None, None, 512
['conv3_block4_1_conv[0][0]']
ization) 128)
conv3_block4_1_relu (Activatio (None, None, None, 0
['conv3_block4_1_bn[0][0]']
n) 128)
conv3_block4_2_conv (Conv2D) (None, None, None, 147584
['conv3_block4_1_relu[0][0]']
128)
conv3_block4_2_bn (BatchNormal (None, None, None, 512
['conv3_block4_2_conv[0][0]']
ization) 128)
conv3_block4_2_relu (Activatio (None, None, None, 0
['conv3_block4_2_bn[0][0]']
n) 128)
conv3_block4_3_conv (Conv2D) (None, None, None, 66048
['conv3_block4_2_relu[0][0]']
512)
conv3_block4_3_bn (BatchNormal (None, None, None, 2048
['conv3_block4_3_conv[0][0]']
ization) 512)
conv3_block4_add (Add) (None, None, None, 0
['conv3_block3_out[0][0]',
512)
'conv3_block4_3_bn[0][0]']
conv3_block4_out (Activation) (None, None, None, 0
['conv3_block4_add[0][0]']
512)
conv4_block1_1_conv (Conv2D) (None, None, None, 131328
['conv3_block4_out[0][0]']
256)
conv4_block1_1_bn (BatchNormal (None, None, None, 1024
['conv4_block1_1_conv[0][0]']
ization) 256)
conv4_block1_1_relu (Activatio (None, None, None, 0
['conv4_block1_1_bn[0][0]']
n) 256)
conv4_block1_2_conv (Conv2D) (None, None, None, 590080
['conv4_block1_1_relu[0][0]']
256)
conv4_block1_2_bn (BatchNormal (None, None, None, 1024
['conv4_block1_2_conv[0][0]']
ization) 256)
conv4_block1_2_relu (Activatio (None, None, None, 0
['conv4_block1_2_bn[0][0]']
n) 256)
conv4_block1_0_conv (Conv2D) (None, None, None, 525312
['conv3_block4_out[0][0]']
1024)
conv4_block1_3_conv (Conv2D) (None, None, None, 263168
['conv4_block1_2_relu[0][0]']
1024)
conv4_block1_0_bn (BatchNormal (None, None, None, 4096
['conv4_block1_0_conv[0][0]']
ization) 1024)
conv4_block1_3_bn (BatchNormal (None, None, None, 4096
['conv4_block1_3_conv[0][0]']
ization) 1024)
conv4_block1_add (Add) (None, None, None, 0
['conv4_block1_0_bn[0][0]',
1024)
'conv4_block1_3_bn[0][0]']
conv4_block1_out (Activation) (None, None, None, 0
['conv4_block1_add[0][0]']
1024)
conv4_block2_1_conv (Conv2D) (None, None, None, 262400
['conv4_block1_out[0][0]']
256)
conv4_block2_1_bn (BatchNormal (None, None, None, 1024
['conv4_block2_1_conv[0][0]']
ization) 256)
conv4_block2_1_relu (Activatio (None, None, None, 0
['conv4_block2_1_bn[0][0]']
n) 256)
conv4_block2_2_conv (Conv2D) (None, None, None, 590080
['conv4_block2_1_relu[0][0]']
256)
conv4_block2_2_bn (BatchNormal (None, None, None, 1024
['conv4_block2_2_conv[0][0]']
ization) 256)
conv4_block2_2_relu (Activatio (None, None, None, 0
['conv4_block2_2_bn[0][0]']
n) 256)
conv4_block2_3_conv (Conv2D) (None, None, None, 263168
['conv4_block2_2_relu[0][0]']
1024)
conv4_block2_3_bn (BatchNormal (None, None, None, 4096
['conv4_block2_3_conv[0][0]']
ization) 1024)
conv4_block2_add (Add) (None, None, None, 0
['conv4_block1_out[0][0]',
1024)
'conv4_block2_3_bn[0][0]']
conv4_block2_out (Activation) (None, None, None, 0
['conv4_block2_add[0][0]']
1024)
conv4_block3_1_conv (Conv2D) (None, None, None, 262400
['conv4_block2_out[0][0]']
256)
conv4_block3_1_bn (BatchNormal (None, None, None, 1024
['conv4_block3_1_conv[0][0]']
ization) 256)
conv4_block3_1_relu (Activatio (None, None, None, 0
['conv4_block3_1_bn[0][0]']
n) 256)
conv4_block3_2_conv (Conv2D) (None, None, None, 590080
['conv4_block3_1_relu[0][0]']
256)
conv4_block3_2_bn (BatchNormal (None, None, None, 1024
['conv4_block3_2_conv[0][0]']
ization) 256)
conv4_block3_2_relu (Activatio (None, None, None, 0
['conv4_block3_2_bn[0][0]']
n) 256)
conv4_block3_3_conv (Conv2D) (None, None, None, 263168
['conv4_block3_2_relu[0][0]']
1024)
conv4_block3_3_bn (BatchNormal (None, None, None, 4096
['conv4_block3_3_conv[0][0]']
ization) 1024)
conv4_block3_add (Add) (None, None, None, 0
['conv4_block2_out[0][0]',
1024)
'conv4_block3_3_bn[0][0]']
conv4_block3_out (Activation) (None, None, None, 0
['conv4_block3_add[0][0]']
1024)
conv4_block4_1_conv (Conv2D) (None, None, None, 262400
['conv4_block3_out[0][0]']
256)
conv4_block4_1_bn (BatchNormal (None, None, None, 1024
['conv4_block4_1_conv[0][0]']
ization) 256)
conv4_block4_1_relu (Activatio (None, None, None, 0
['conv4_block4_1_bn[0][0]']
n) 256)
conv4_block4_2_conv (Conv2D) (None, None, None, 590080
['conv4_block4_1_relu[0][0]']
256)
conv4_block4_2_bn (BatchNormal (None, None, None, 1024
['conv4_block4_2_conv[0][0]']
ization) 256)
conv4_block4_2_relu (Activatio (None, None, None, 0
['conv4_block4_2_bn[0][0]']
n) 256)
conv4_block4_3_conv (Conv2D) (None, None, None, 263168
['conv4_block4_2_relu[0][0]']
1024)
conv4_block4_3_bn (BatchNormal (None, None, None, 4096
['conv4_block4_3_conv[0][0]']
ization) 1024)
conv4_block4_add (Add) (None, None, None, 0
['conv4_block3_out[0][0]',
1024)
'conv4_block4_3_bn[0][0]']
conv4_block4_out (Activation) (None, None, None, 0
['conv4_block4_add[0][0]']
1024)
conv4_block5_1_conv (Conv2D) (None, None, None, 262400
['conv4_block4_out[0][0]']
256)
conv4_block5_1_bn (BatchNormal (None, None, None, 1024
['conv4_block5_1_conv[0][0]']
ization) 256)
conv4_block5_1_relu (Activatio (None, None, None, 0
['conv4_block5_1_bn[0][0]']
n) 256)
conv4_block5_2_conv (Conv2D) (None, None, None, 590080
['conv4_block5_1_relu[0][0]']
256)
conv4_block5_2_bn (BatchNormal (None, None, None, 1024
['conv4_block5_2_conv[0][0]']
ization) 256)
conv4_block5_2_relu (Activatio (None, None, None, 0
['conv4_block5_2_bn[0][0]']
n) 256)
conv4_block5_3_conv (Conv2D) (None, None, None, 263168
['conv4_block5_2_relu[0][0]']
1024)
conv4_block5_3_bn (BatchNormal (None, None, None, 4096
['conv4_block5_3_conv[0][0]']
ization) 1024)
conv4_block5_add (Add) (None, None, None, 0
['conv4_block4_out[0][0]',
1024)
'conv4_block5_3_bn[0][0]']
conv4_block5_out (Activation) (None, None, None, 0
['conv4_block5_add[0][0]']
1024)
conv4_block6_1_conv (Conv2D) (None, None, None, 262400
['conv4_block5_out[0][0]']
256)
conv4_block6_1_bn (BatchNormal (None, None, None, 1024
['conv4_block6_1_conv[0][0]']
ization) 256)
conv4_block6_1_relu (Activatio (None, None, None, 0
['conv4_block6_1_bn[0][0]']
n) 256)
conv4_block6_2_conv (Conv2D) (None, None, None, 590080
['conv4_block6_1_relu[0][0]']
256)
conv4_block6_2_bn (BatchNormal (None, None, None, 1024
['conv4_block6_2_conv[0][0]']
ization) 256)
conv4_block6_2_relu (Activatio (None, None, None, 0
['conv4_block6_2_bn[0][0]']
n) 256)
conv4_block6_3_conv (Conv2D) (None, None, None, 263168
['conv4_block6_2_relu[0][0]']
1024)
conv4_block6_3_bn (BatchNormal (None, None, None, 4096
['conv4_block6_3_conv[0][0]']
ization) 1024)
conv4_block6_add (Add) (None, None, None, 0
['conv4_block5_out[0][0]',
1024)
'conv4_block6_3_bn[0][0]']
conv4_block6_out (Activation) (None, None, None, 0
['conv4_block6_add[0][0]']
1024)
conv5_block1_1_conv (Conv2D) (None, None, None, 524800
['conv4_block6_out[0][0]']
512)
conv5_block1_1_bn (BatchNormal (None, None, None, 2048
['conv5_block1_1_conv[0][0]']
ization) 512)
conv5_block1_1_relu (Activatio (None, None, None, 0
['conv5_block1_1_bn[0][0]']
n) 512)
conv5_block1_2_conv (Conv2D) (None, None, None, 2359808
['conv5_block1_1_relu[0][0]']
512)
conv5_block1_2_bn (BatchNormal (None, None, None, 2048
['conv5_block1_2_conv[0][0]']
ization) 512)
conv5_block1_2_relu (Activatio (None, None, None, 0
['conv5_block1_2_bn[0][0]']
n) 512)
conv5_block1_0_conv (Conv2D) (None, None, None, 2099200
['conv4_block6_out[0][0]']
2048)
conv5_block1_3_conv (Conv2D) (None, None, None, 1050624
['conv5_block1_2_relu[0][0]']
2048)
conv5_block1_0_bn (BatchNormal (None, None, None, 8192
['conv5_block1_0_conv[0][0]']
ization) 2048)
conv5_block1_3_bn (BatchNormal (None, None, None, 8192
['conv5_block1_3_conv[0][0]']
ization) 2048)
conv5_block1_add (Add) (None, None, None, 0
['conv5_block1_0_bn[0][0]',
2048)
'conv5_block1_3_bn[0][0]']
conv5_block1_out (Activation) (None, None, None, 0
['conv5_block1_add[0][0]']
2048)
conv5_block2_1_conv (Conv2D) (None, None, None, 1049088
['conv5_block1_out[0][0]']
512)
conv5_block2_1_bn (BatchNormal (None, None, None, 2048
['conv5_block2_1_conv[0][0]']
ization) 512)
conv5_block2_1_relu (Activatio (None, None, None, 0
['conv5_block2_1_bn[0][0]']
n) 512)
conv5_block2_2_conv (Conv2D) (None, None, None, 2359808
['conv5_block2_1_relu[0][0]']
512)
conv5_block2_2_bn (BatchNormal (None, None, None, 2048
['conv5_block2_2_conv[0][0]']
ization) 512)
conv5_block2_2_relu (Activatio (None, None, None, 0
['conv5_block2_2_bn[0][0]']
n) 512)
conv5_block2_3_conv (Conv2D) (None, None, None, 1050624
['conv5_block2_2_relu[0][0]']
2048)
conv5_block2_3_bn (BatchNormal (None, None, None, 8192
['conv5_block2_3_conv[0][0]']
ization) 2048)
conv5_block2_add (Add) (None, None, None, 0
['conv5_block1_out[0][0]',
2048)
'conv5_block2_3_bn[0][0]']
conv5_block2_out (Activation) (None, None, None, 0
['conv5_block2_add[0][0]']
2048)
conv5_block3_1_conv (Conv2D) (None, None, None, 1049088
['conv5_block2_out[0][0]']
512)
conv5_block3_1_bn (BatchNormal (None, None, None, 2048
['conv5_block3_1_conv[0][0]']
ization) 512)
conv5_block3_1_relu (Activatio (None, None, None, 0
['conv5_block3_1_bn[0][0]']
n) 512)
conv5_block3_2_conv (Conv2D) (None, None, None, 2359808
['conv5_block3_1_relu[0][0]']
512)
conv5_block3_2_bn (BatchNormal (None, None, None, 2048
['conv5_block3_2_conv[0][0]']
ization) 512)
conv5_block3_2_relu (Activatio (None, None, None, 0
['conv5_block3_2_bn[0][0]']
n) 512)
conv5_block3_3_conv (Conv2D) (None, None, None, 1050624
['conv5_block3_2_relu[0][0]']
2048)
conv5_block3_3_bn (BatchNormal (None, None, None, 8192
['conv5_block3_3_conv[0][0]']
ization) 2048)
conv5_block3_add (Add) (None, None, None, 0
['conv5_block2_out[0][0]',
2048)
'conv5_block3_3_bn[0][0]']
conv5_block3_out (Activation) (None, None, None, 0
['conv5_block3_add[0][0]']
2048)
=============================================================================
=====================
Total params: 23,587,712
Trainable params: 23,534,592
Non-trainable params: 53,120
_____________________________________________________________________________
_____________________
layer = base_model.layers #Conv layers at 2,7,10
filters, biases = base_model.layers[10].get_weights()
print(layer[2].name, filters.shape)
conv1_conv (3, 3, 64, 64)
fig1=plt.figure(figsize=(8, 12))
columns = 8
rows = 8
n_filters = columns * rows
for i in range(1, n_filters +1):
f = filters[:, :, :, i-1]
fig1 =plt.subplot(rows, columns, i)
fig1.set_xticks([]) #Turn off axis
fig1.set_yticks([])
plt.imshow(f[:, :, 0], cmap='gray') #Show only the filters from 0th
channel (R)
#ix += 1
plt.show()
conv_layer_index = [2, 7, 10] #TO define a shorter model
outputs = [base_model.layers[i].output for i in conv_layer_index]
model_short = Model(inputs=base_model.inputs, outputs=outputs)
print(model_short.summary())
Model: "model_3"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_1 (InputLayer) [(None, None, None, 3)] 0
conv1_pad (ZeroPadding2D) (None, None, None, 3) 0
conv1_conv (Conv2D) (None, None, None, 64) 9472
conv1_bn (BatchNormalizatio (None, None, None, 64) 256
n)
conv1_relu (Activation) (None, None, None, 64) 0
pool1_pad (ZeroPadding2D) (None, None, None, 64) 0
pool1_pool (MaxPooling2D) (None, None, None, 64) 0
conv2_block1_1_conv (Conv2D (None, None, None, 64) 4160
)
conv2_block1_1_bn (BatchNor (None, None, None, 64) 256
malization)
conv2_block1_1_relu (Activa (None, None, None, 64) 0
tion)
conv2_block1_2_conv (Conv2D (None, None, None, 64) 36928
)
=================================================================
Total params: 51,072
Trainable params: 50,816
Non-trainable params: 256
_________________________________________________________________
None
# from PIL import Image
# img_pil = Image.fromarray(test_images[2]).resize((28,28))
# im1 = img_pil.save("test_image2.png")
from tensorflow.keras.utils import load_img, img_to_array
img = load_img('test_image2.png', target_size=(28, 28)) #VGG user 224 as
input
img
img = img_to_array(img)
img = np.expand_dims(img, axis=0)
feature_output = model_short.predict(img)
1/1 [==============================] - 0s 84ms/step
columns = 8
rows = 8
for ftr in feature_output:
#pos = 1
print('layer')
fig=plt.figure(figsize=(12, 12))
for i in range(1, columns*rows +1):
fig =plt.subplot(rows, columns, i)
fig.set_xticks([]) #Turn off axis
fig.set_yticks([])
plt.imshow(ftr[0, :, :, i-1], cmap='gray')
#pos += 1
plt.show()
layer
layer
layer
---
.
from tensorflow.keras.utils import load_img, img_to_array
import numpy as np
import matplotlib.pyplot as plt
def get_cnn_visualization(model, list_of_layer_nos):
print(model.summary())
conv_layer_index = list_of_layer_nos #TO define a shorter model
outputs = [model.layers[i].output for i in conv_layer_index]
model_short = Model(inputs=base_model.inputs, outputs=outputs)
print(model_short.summary())
img = load_img('test_image2.png', target_size=(28, 28)) #VGG user 224 as
input
img = img_to_array(img)
img = np.expand_dims(img, axis=0)
feature_output = model_short.predict(img)
columns = 8
rows = 8
for ftr in feature_output:
#pos = 1
print('Conv Layer')
fig=plt.figure(figsize=(12, 12))
for i in range(1, columns*rows +1):
fig =plt.subplot(rows, columns, i)
fig.set_xticks([]) #Turn off axis
fig.set_yticks([])
plt.imshow(ftr[0, :, :, i-1], cmap='gray')
#pos += 1
plt.show()
from tensorflow.keras.utils import load_img, img_to_array
img = load_img('test_image2.png', target_size=(28, 28))
img
import tensorflow as tf
from keras.models import Model
from tensorflow.keras.utils import load_img, img_to_array
base_model = tf.keras.applications.ResNet50(
include_top=False,
weights='imagenet')
get_cnn_visualization(base_model, [2,7,10])
Model: "resnet50"
_____________________________________________________________________________
_____________________
Layer (type) Output Shape Param # Connected to
=============================================================================
=====================
input_18 (InputLayer) [(None, None, None, 0 []
3)]
conv1_pad (ZeroPadding2D) (None, None, None, 0
['input_18[0][0]']
3)
conv1_conv (Conv2D) (None, None, None, 9472
['conv1_pad[0][0]']
64)
conv1_bn (BatchNormalization) (None, None, None, 256
['conv1_conv[0][0]']
64)
conv1_relu (Activation) (None, None, None, 0
['conv1_bn[0][0]']
64)
pool1_pad (ZeroPadding2D) (None, None, None, 0
['conv1_relu[0][0]']
64)
pool1_pool (MaxPooling2D) (None, None, None, 0
['pool1_pad[0][0]']
64)
conv2_block1_1_conv (Conv2D) (None, None, None, 4160
['pool1_pool[0][0]']
64)
conv2_block1_1_bn (BatchNormal (None, None, None, 256
['conv2_block1_1_conv[0][0]']
ization) 64)
conv2_block1_1_relu (Activatio (None, None, None, 0
['conv2_block1_1_bn[0][0]']
n) 64)
conv2_block1_2_conv (Conv2D) (None, None, None, 36928
['conv2_block1_1_relu[0][0]']
64)
conv2_block1_2_bn (BatchNormal (None, None, None, 256
['conv2_block1_2_conv[0][0]']
ization) 64)
conv2_block1_2_relu (Activatio (None, None, None, 0
['conv2_block1_2_bn[0][0]']
n) 64)
conv2_block1_0_conv (Conv2D) (None, None, None, 16640
['pool1_pool[0][0]']
256)
conv2_block1_3_conv (Conv2D) (None, None, None, 16640
['conv2_block1_2_relu[0][0]']
256)
conv2_block1_0_bn (BatchNormal (None, None, None, 1024
['conv2_block1_0_conv[0][0]']
ization) 256)
conv2_block1_3_bn (BatchNormal (None, None, None, 1024
['conv2_block1_3_conv[0][0]']
ization) 256)
conv2_block1_add (Add) (None, None, None, 0
['conv2_block1_0_bn[0][0]',
256)
'conv2_block1_3_bn[0][0]']
conv2_block1_out (Activation) (None, None, None, 0
['conv2_block1_add[0][0]']
256)
conv2_block2_1_conv (Conv2D) (None, None, None, 16448
['conv2_block1_out[0][0]']
64)
conv2_block2_1_bn (BatchNormal (None, None, None, 256
['conv2_block2_1_conv[0][0]']
ization) 64)
conv2_block2_1_relu (Activatio (None, None, None, 0
['conv2_block2_1_bn[0][0]']
n) 64)
conv2_block2_2_conv (Conv2D) (None, None, None, 36928
['conv2_block2_1_relu[0][0]']
64)
conv2_block2_2_bn (BatchNormal (None, None, None, 256
['conv2_block2_2_conv[0][0]']
ization) 64)
conv2_block2_2_relu (Activatio (None, None, None, 0
['conv2_block2_2_bn[0][0]']
n) 64)
conv2_block2_3_conv (Conv2D) (None, None, None, 16640
['conv2_block2_2_relu[0][0]']
256)
conv2_block2_3_bn (BatchNormal (None, None, None, 1024
['conv2_block2_3_conv[0][0]']
ization) 256)
conv2_block2_add (Add) (None, None, None, 0
['conv2_block1_out[0][0]',
256)
'conv2_block2_3_bn[0][0]']
conv2_block2_out (Activation) (None, None, None, 0
['conv2_block2_add[0][0]']
256)
conv2_block3_1_conv (Conv2D) (None, None, None, 16448
['conv2_block2_out[0][0]']
64)
conv2_block3_1_bn (BatchNormal (None, None, None, 256
['conv2_block3_1_conv[0][0]']
ization) 64)
conv2_block3_1_relu (Activatio (None, None, None, 0
['conv2_block3_1_bn[0][0]']
n) 64)
conv2_block3_2_conv (Conv2D) (None, None, None, 36928
['conv2_block3_1_relu[0][0]']
64)
conv2_block3_2_bn (BatchNormal (None, None, None, 256
['conv2_block3_2_conv[0][0]']
ization) 64)
conv2_block3_2_relu (Activatio (None, None, None, 0
['conv2_block3_2_bn[0][0]']
n) 64)
conv2_block3_3_conv (Conv2D) (None, None, None, 16640
['conv2_block3_2_relu[0][0]']
256)
conv2_block3_3_bn (BatchNormal (None, None, None, 1024
['conv2_block3_3_conv[0][0]']
ization) 256)
conv2_block3_add (Add) (None, None, None, 0
['conv2_block2_out[0][0]',
256)
'conv2_block3_3_bn[0][0]']
conv2_block3_out (Activation) (None, None, None, 0
['conv2_block3_add[0][0]']
256)
conv3_block1_1_conv (Conv2D) (None, None, None, 32896
['conv2_block3_out[0][0]']
128)
conv3_block1_1_bn (BatchNormal (None, None, None, 512
['conv3_block1_1_conv[0][0]']
ization) 128)
conv3_block1_1_relu (Activatio (None, None, None, 0
['conv3_block1_1_bn[0][0]']
n) 128)
conv3_block1_2_conv (Conv2D) (None, None, None, 147584
['conv3_block1_1_relu[0][0]']
128)
conv3_block1_2_bn (BatchNormal (None, None, None, 512
['conv3_block1_2_conv[0][0]']
ization) 128)
conv3_block1_2_relu (Activatio (None, None, None, 0
['conv3_block1_2_bn[0][0]']
n) 128)
conv3_block1_0_conv (Conv2D) (None, None, None, 131584
['conv2_block3_out[0][0]']
512)
conv3_block1_3_conv (Conv2D) (None, None, None, 66048
['conv3_block1_2_relu[0][0]']
512)
conv3_block1_0_bn (BatchNormal (None, None, None, 2048
['conv3_block1_0_conv[0][0]']
ization) 512)
conv3_block1_3_bn (BatchNormal (None, None, None, 2048
['conv3_block1_3_conv[0][0]']
ization) 512)
conv3_block1_add (Add) (None, None, None, 0
['conv3_block1_0_bn[0][0]',
512)
'conv3_block1_3_bn[0][0]']
conv3_block1_out (Activation) (None, None, None, 0
['conv3_block1_add[0][0]']
512)
conv3_block2_1_conv (Conv2D) (None, None, None, 65664
['conv3_block1_out[0][0]']
128)
conv3_block2_1_bn (BatchNormal (None, None, None, 512
['conv3_block2_1_conv[0][0]']
ization) 128)
conv3_block2_1_relu (Activatio (None, None, None, 0
['conv3_block2_1_bn[0][0]']
n) 128)
conv3_block2_2_conv (Conv2D) (None, None, None, 147584
['conv3_block2_1_relu[0][0]']
128)
conv3_block2_2_bn (BatchNormal (None, None, None, 512
['conv3_block2_2_conv[0][0]']
ization) 128)
conv3_block2_2_relu (Activatio (None, None, None, 0
['conv3_block2_2_bn[0][0]']
n) 128)
conv3_block2_3_conv (Conv2D) (None, None, None, 66048
['conv3_block2_2_relu[0][0]']
512)
conv3_block2_3_bn (BatchNormal (None, None, None, 2048
['conv3_block2_3_conv[0][0]']
ization) 512)
conv3_block2_add (Add) (None, None, None, 0
['conv3_block1_out[0][0]',
512)
'conv3_block2_3_bn[0][0]']
conv3_block2_out (Activation) (None, None, None, 0
['conv3_block2_add[0][0]']
512)
conv3_block3_1_conv (Conv2D) (None, None, None, 65664
['conv3_block2_out[0][0]']
128)
conv3_block3_1_bn (BatchNormal (None, None, None, 512
['conv3_block3_1_conv[0][0]']
ization) 128)
conv3_block3_1_relu (Activatio (None, None, None, 0
['conv3_block3_1_bn[0][0]']
n) 128)
conv3_block3_2_conv (Conv2D) (None, None, None, 147584
['conv3_block3_1_relu[0][0]']
128)
conv3_block3_2_bn (BatchNormal (None, None, None, 512
['conv3_block3_2_conv[0][0]']
ization) 128)
conv3_block3_2_relu (Activatio (None, None, None, 0
['conv3_block3_2_bn[0][0]']
n) 128)
conv3_block3_3_conv (Conv2D) (None, None, None, 66048
['conv3_block3_2_relu[0][0]']
512)
conv3_block3_3_bn (BatchNormal (None, None, None, 2048
['conv3_block3_3_conv[0][0]']
ization) 512)
conv3_block3_add (Add) (None, None, None, 0
['conv3_block2_out[0][0]',
512)
'conv3_block3_3_bn[0][0]']
conv3_block3_out (Activation) (None, None, None, 0
['conv3_block3_add[0][0]']
512)
conv3_block4_1_conv (Conv2D) (None, None, None, 65664
['conv3_block3_out[0][0]']
128)
conv3_block4_1_bn (BatchNormal (None, None, None, 512
['conv3_block4_1_conv[0][0]']
ization) 128)
conv3_block4_1_relu (Activatio (None, None, None, 0
['conv3_block4_1_bn[0][0]']
n) 128)
conv3_block4_2_conv (Conv2D) (None, None, None, 147584
['conv3_block4_1_relu[0][0]']
128)
conv3_block4_2_bn (BatchNormal (None, None, None, 512
['conv3_block4_2_conv[0][0]']
ization) 128)
conv3_block4_2_relu (Activatio (None, None, None, 0
['conv3_block4_2_bn[0][0]']
n) 128)
conv3_block4_3_conv (Conv2D) (None, None, None, 66048
['conv3_block4_2_relu[0][0]']
512)
conv3_block4_3_bn (BatchNormal (None, None, None, 2048
['conv3_block4_3_conv[0][0]']
ization) 512)
conv3_block4_add (Add) (None, None, None, 0
['conv3_block3_out[0][0]',
512)
'conv3_block4_3_bn[0][0]']
conv3_block4_out (Activation) (None, None, None, 0
['conv3_block4_add[0][0]']
512)
conv4_block1_1_conv (Conv2D) (None, None, None, 131328
['conv3_block4_out[0][0]']
256)
conv4_block1_1_bn (BatchNormal (None, None, None, 1024
['conv4_block1_1_conv[0][0]']
ization) 256)
conv4_block1_1_relu (Activatio (None, None, None, 0
['conv4_block1_1_bn[0][0]']
n) 256)
conv4_block1_2_conv (Conv2D) (None, None, None, 590080
['conv4_block1_1_relu[0][0]']
256)
conv4_block1_2_bn (BatchNormal (None, None, None, 1024
['conv4_block1_2_conv[0][0]']
ization) 256)
conv4_block1_2_relu (Activatio (None, None, None, 0
['conv4_block1_2_bn[0][0]']
n) 256)
conv4_block1_0_conv (Conv2D) (None, None, None, 525312
['conv3_block4_out[0][0]']
1024)
conv4_block1_3_conv (Conv2D) (None, None, None, 263168
['conv4_block1_2_relu[0][0]']
1024)
conv4_block1_0_bn (BatchNormal (None, None, None, 4096
['conv4_block1_0_conv[0][0]']
ization) 1024)
conv4_block1_3_bn (BatchNormal (None, None, None, 4096
['conv4_block1_3_conv[0][0]']
ization) 1024)
conv4_block1_add (Add) (None, None, None, 0
['conv4_block1_0_bn[0][0]',
1024)
'conv4_block1_3_bn[0][0]']
conv4_block1_out (Activation) (None, None, None, 0
['conv4_block1_add[0][0]']
1024)
conv4_block2_1_conv (Conv2D) (None, None, None, 262400
['conv4_block1_out[0][0]']
256)
conv4_block2_1_bn (BatchNormal (None, None, None, 1024
['conv4_block2_1_conv[0][0]']
ization) 256)
conv4_block2_1_relu (Activatio (None, None, None, 0
['conv4_block2_1_bn[0][0]']
n) 256)
conv4_block2_2_conv (Conv2D) (None, None, None, 590080
['conv4_block2_1_relu[0][0]']
256)
conv4_block2_2_bn (BatchNormal (None, None, None, 1024
['conv4_block2_2_conv[0][0]']
ization) 256)
conv4_block2_2_relu (Activatio (None, None, None, 0
['conv4_block2_2_bn[0][0]']
n) 256)
conv4_block2_3_conv (Conv2D) (None, None, None, 263168
['conv4_block2_2_relu[0][0]']
1024)
conv4_block2_3_bn (BatchNormal (None, None, None, 4096
['conv4_block2_3_conv[0][0]']
ization) 1024)
conv4_block2_add (Add) (None, None, None, 0
['conv4_block1_out[0][0]',
1024)
'conv4_block2_3_bn[0][0]']
conv4_block2_out (Activation) (None, None, None, 0
['conv4_block2_add[0][0]']
1024)
conv4_block3_1_conv (Conv2D) (None, None, None, 262400
['conv4_block2_out[0][0]']
256)
conv4_block3_1_bn (BatchNormal (None, None, None, 1024
['conv4_block3_1_conv[0][0]']
ization) 256)
conv4_block3_1_relu (Activatio (None, None, None, 0
['conv4_block3_1_bn[0][0]']
n) 256)
conv4_block3_2_conv (Conv2D) (None, None, None, 590080
['conv4_block3_1_relu[0][0]']
256)
conv4_block3_2_bn (BatchNormal (None, None, None, 1024
['conv4_block3_2_conv[0][0]']
ization) 256)
conv4_block3_2_relu (Activatio (None, None, None, 0
['conv4_block3_2_bn[0][0]']
n) 256)
conv4_block3_3_conv (Conv2D) (None, None, None, 263168
['conv4_block3_2_relu[0][0]']
1024)
conv4_block3_3_bn (BatchNormal (None, None, None, 4096
['conv4_block3_3_conv[0][0]']
ization) 1024)
conv4_block3_add (Add) (None, None, None, 0
['conv4_block2_out[0][0]',
1024)
'conv4_block3_3_bn[0][0]']
conv4_block3_out (Activation) (None, None, None, 0
['conv4_block3_add[0][0]']
1024)
conv4_block4_1_conv (Conv2D) (None, None, None, 262400
['conv4_block3_out[0][0]']
256)
conv4_block4_1_bn (BatchNormal (None, None, None, 1024
['conv4_block4_1_conv[0][0]']
ization) 256)
conv4_block4_1_relu (Activatio (None, None, None, 0
['conv4_block4_1_bn[0][0]']
n) 256)
conv4_block4_2_conv (Conv2D) (None, None, None, 590080
['conv4_block4_1_relu[0][0]']
256)
conv4_block4_2_bn (BatchNormal (None, None, None, 1024
['conv4_block4_2_conv[0][0]']
ization) 256)
conv4_block4_2_relu (Activatio (None, None, None, 0
['conv4_block4_2_bn[0][0]']
n) 256)
conv4_block4_3_conv (Conv2D) (None, None, None, 263168
['conv4_block4_2_relu[0][0]']
1024)
conv4_block4_3_bn (BatchNormal (None, None, None, 4096
['conv4_block4_3_conv[0][0]']
ization) 1024)
conv4_block4_add (Add) (None, None, None, 0
['conv4_block3_out[0][0]',
1024)
'conv4_block4_3_bn[0][0]']
conv4_block4_out (Activation) (None, None, None, 0
['conv4_block4_add[0][0]']
1024)
conv4_block5_1_conv (Conv2D) (None, None, None, 262400
['conv4_block4_out[0][0]']
256)
conv4_block5_1_bn (BatchNormal (None, None, None, 1024
['conv4_block5_1_conv[0][0]']
ization) 256)
conv4_block5_1_relu (Activatio (None, None, None, 0
['conv4_block5_1_bn[0][0]']
n) 256)
conv4_block5_2_conv (Conv2D) (None, None, None, 590080
['conv4_block5_1_relu[0][0]']
256)
conv4_block5_2_bn (BatchNormal (None, None, None, 1024
['conv4_block5_2_conv[0][0]']
ization) 256)
conv4_block5_2_relu (Activatio (None, None, None, 0
['conv4_block5_2_bn[0][0]']
n) 256)
conv4_block5_3_conv (Conv2D) (None, None, None, 263168
['conv4_block5_2_relu[0][0]']
1024)
conv4_block5_3_bn (BatchNormal (None, None, None, 4096
['conv4_block5_3_conv[0][0]']
ization) 1024)
conv4_block5_add (Add) (None, None, None, 0
['conv4_block4_out[0][0]',
1024)
'conv4_block5_3_bn[0][0]']
conv4_block5_out (Activation) (None, None, None, 0
['conv4_block5_add[0][0]']
1024)
conv4_block6_1_conv (Conv2D) (None, None, None, 262400
['conv4_block5_out[0][0]']
256)
conv4_block6_1_bn (BatchNormal (None, None, None, 1024
['conv4_block6_1_conv[0][0]']
ization) 256)
conv4_block6_1_relu (Activatio (None, None, None, 0
['conv4_block6_1_bn[0][0]']
n) 256)
conv4_block6_2_conv (Conv2D) (None, None, None, 590080
['conv4_block6_1_relu[0][0]']
256)
conv4_block6_2_bn (BatchNormal (None, None, None, 1024
['conv4_block6_2_conv[0][0]']
ization) 256)
conv4_block6_2_relu (Activatio (None, None, None, 0
['conv4_block6_2_bn[0][0]']
n) 256)
conv4_block6_3_conv (Conv2D) (None, None, None, 263168
['conv4_block6_2_relu[0][0]']
1024)
conv4_block6_3_bn (BatchNormal (None, None, None, 4096
['conv4_block6_3_conv[0][0]']
ization) 1024)
conv4_block6_add (Add) (None, None, None, 0
['conv4_block5_out[0][0]',
1024)
'conv4_block6_3_bn[0][0]']
conv4_block6_out (Activation) (None, None, None, 0
['conv4_block6_add[0][0]']
1024)
conv5_block1_1_conv (Conv2D) (None, None, None, 524800
['conv4_block6_out[0][0]']
512)
conv5_block1_1_bn (BatchNormal (None, None, None, 2048
['conv5_block1_1_conv[0][0]']
ization) 512)
conv5_block1_1_relu (Activatio (None, None, None, 0
['conv5_block1_1_bn[0][0]']
n) 512)
conv5_block1_2_conv (Conv2D) (None, None, None, 2359808
['conv5_block1_1_relu[0][0]']
512)
conv5_block1_2_bn (BatchNormal (None, None, None, 2048
['conv5_block1_2_conv[0][0]']
ization) 512)
conv5_block1_2_relu (Activatio (None, None, None, 0
['conv5_block1_2_bn[0][0]']
n) 512)
conv5_block1_0_conv (Conv2D) (None, None, None, 2099200
['conv4_block6_out[0][0]']
2048)
conv5_block1_3_conv (Conv2D) (None, None, None, 1050624
['conv5_block1_2_relu[0][0]']
2048)
conv5_block1_0_bn (BatchNormal (None, None, None, 8192
['conv5_block1_0_conv[0][0]']
ization) 2048)
conv5_block1_3_bn (BatchNormal (None, None, None, 8192
['conv5_block1_3_conv[0][0]']
ization) 2048)
conv5_block1_add (Add) (None, None, None, 0
['conv5_block1_0_bn[0][0]',
2048)
'conv5_block1_3_bn[0][0]']
conv5_block1_out (Activation) (None, None, None, 0
['conv5_block1_add[0][0]']
2048)
conv5_block2_1_conv (Conv2D) (None, None, None, 1049088
['conv5_block1_out[0][0]']
512)
conv5_block2_1_bn (BatchNormal (None, None, None, 2048
['conv5_block2_1_conv[0][0]']
ization) 512)
conv5_block2_1_relu (Activatio (None, None, None, 0
['conv5_block2_1_bn[0][0]']
n) 512)
conv5_block2_2_conv (Conv2D) (None, None, None, 2359808
['conv5_block2_1_relu[0][0]']
512)
conv5_block2_2_bn (BatchNormal (None, None, None, 2048
['conv5_block2_2_conv[0][0]']
ization) 512)
conv5_block2_2_relu (Activatio (None, None, None, 0
['conv5_block2_2_bn[0][0]']
n) 512)
conv5_block2_3_conv (Conv2D) (None, None, None, 1050624
['conv5_block2_2_relu[0][0]']
2048)
conv5_block2_3_bn (BatchNormal (None, None, None, 8192
['conv5_block2_3_conv[0][0]']
ization) 2048)
conv5_block2_add (Add) (None, None, None, 0
['conv5_block1_out[0][0]',
2048)
'conv5_block2_3_bn[0][0]']
conv5_block2_out (Activation) (None, None, None, 0
['conv5_block2_add[0][0]']
2048)
conv5_block3_1_conv (Conv2D) (None, None, None, 1049088
['conv5_block2_out[0][0]']
512)
conv5_block3_1_bn (BatchNormal (None, None, None, 2048
['conv5_block3_1_conv[0][0]']
ization) 512)
conv5_block3_1_relu (Activatio (None, None, None, 0
['conv5_block3_1_bn[0][0]']
n) 512)
conv5_block3_2_conv (Conv2D) (None, None, None, 2359808
['conv5_block3_1_relu[0][0]']
512)
conv5_block3_2_bn (BatchNormal (None, None, None, 2048
['conv5_block3_2_conv[0][0]']
ization) 512)
conv5_block3_2_relu (Activatio (None, None, None, 0
['conv5_block3_2_bn[0][0]']
n) 512)
conv5_block3_3_conv (Conv2D) (None, None, None, 1050624
['conv5_block3_2_relu[0][0]']
2048)
conv5_block3_3_bn (BatchNormal (None, None, None, 8192
['conv5_block3_3_conv[0][0]']
ization) 2048)
conv5_block3_add (Add) (None, None, None, 0
['conv5_block2_out[0][0]',
2048)
'conv5_block3_3_bn[0][0]']
conv5_block3_out (Activation) (None, None, None, 0
['conv5_block3_add[0][0]']
2048)
=============================================================================
=====================
Total params: 23,587,712
Trainable params: 23,534,592
Non-trainable params: 53,120
_____________________________________________________________________________
_____________________
None
Model: "model_16"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_18 (InputLayer) [(None, None, None, 3)] 0
conv1_pad (ZeroPadding2D) (None, None, None, 3) 0
conv1_conv (Conv2D) (None, None, None, 64) 9472
conv1_bn (BatchNormalizatio (None, None, None, 64) 256
n)
conv1_relu (Activation) (None, None, None, 64) 0
pool1_pad (ZeroPadding2D) (None, None, None, 64) 0
pool1_pool (MaxPooling2D) (None, None, None, 64) 0
conv2_block1_1_conv (Conv2D (None, None, None, 64) 4160
)
conv2_block1_1_bn (BatchNor (None, None, None, 64) 256
malization)
conv2_block1_1_relu (Activa (None, None, None, 64) 0
tion)
conv2_block1_2_conv (Conv2D (None, None, None, 64) 36928
)
=================================================================
Total params: 51,072
Trainable params: 50,816
Non-trainable params: 256
_________________________________________________________________
None
1/1 [==============================] - 0s 269ms/step
Conv Layer
Conv Layer
Conv Layer