Using Pretrained CNN Models

Biostat 203B

Author

Dr. Hua Zhou @ UCLA

Published

February 28, 2024

1 Setup

Display system information for reproducibility.

import IPython
print(IPython.sys_info())
{'commit_hash': '8b1204b6c',
 'commit_source': 'installation',
 'default_encoding': 'utf-8',
 'ipython_path': '/opt/venv/lib/python3.10/site-packages/IPython',
 'ipython_version': '8.21.0',
 'os_name': 'posix',
 'platform': 'Linux-6.6.12-linuxkit-aarch64-with-glibc2.35',
 'sys_executable': '/opt/venv/bin/python',
 'sys_platform': 'linux',
 'sys_version': '3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0]'}
sessionInfo()
R version 4.3.2 (2023-10-31)
Platform: aarch64-unknown-linux-gnu (64-bit)
Running under: Ubuntu 22.04.3 LTS

Matrix products: default
BLAS:   /usr/lib/aarch64-linux-gnu/openblas-pthread/libblas.so.3 
LAPACK: /usr/lib/aarch64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so;  LAPACK version 3.10.0

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

time zone: Etc/UTC
tzcode source: system (glibc)

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
 [1] digest_0.6.34     fastmap_1.1.1     xfun_0.42         Matrix_1.6-1.1   
 [5] lattice_0.21-9    reticulate_1.35.0 knitr_1.45        htmltools_0.5.7  
 [9] png_0.1-8         rmarkdown_2.25    cli_3.6.2         grid_4.3.2       
[13] compiler_4.3.2    rstudioapi_0.15.0 tools_4.3.2       evaluate_0.23    
[17] Rcpp_1.0.12       yaml_2.3.8        rlang_1.1.3       jsonlite_1.8.8   
[21] htmlwidgets_1.6.4

Load some libraries.

# Load the pandas library
import pandas as pd
# Load numpy for array manipulation
import numpy as np
# Load seaborn plotting library
import seaborn as sns
import matplotlib.pyplot as plt
import os

# Set font sizes in plots
sns.set(font_scale = 1.2)
# Display all columns
pd.set_option('display.max_columns', None)

# Load Tensorflow and Keras
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
library(keras)
library(jpeg)
library(imager)
Loading required package: magrittr

Attaching package: 'imager'
The following object is masked from 'package:magrittr':

    add
The following objects are masked from 'package:stats':

    convolve, spectrum
The following object is masked from 'package:graphics':

    frame
The following object is masked from 'package:base':

    save.image

In this example, we usea a CNN (convolution neural network) pretrained on the ImageNet database to classify natural images.

2 Prepare data

Read in images from the /book_images folder, convert them to arrays of size 224 x 224 x 3, and preprocess them using the preprocess_input function in keras.

img_dir = "book_images"
image_names = os.listdir(img_dir)
num_images = len(image_names)
x = np.empty((num_images, 224, 224, 3))
for i in range(num_images):
  img_path = img_dir + '/' + image_names[i]
  img = keras.utils.load_img(img_path, target_size = (224, 224))
  plt.imshow(img)
  x[i] = keras.utils.img_to_array(img)
  plt.show(x[i] / 255)

x = keras.applications.imagenet_utils.preprocess_input(x)
img_dir <- "book_images"
image_names <- list.files(img_dir)
num_images <- length(image_names)
x <- array(dim = c(num_images, 224, 224, 3))
par(mar = c(0, 0, 0, 0), mfrow = c(2, 3))
for (i in 1:num_images) {
  img_path <- paste(img_dir, image_names[i], sep = "/")
  plot(load.image(img_path))
  img <- image_load(img_path, target_size = c(224, 224))
  x[i, , ,] <- image_to_array(img)
}

x <- imagenet_preprocess_input(x)

3 Load the trained network

We load the resnet50 network trained on the ImageNet database.

model = keras.applications.resnet.ResNet50(weights = 'imagenet')
model.summary()
Model: "resnet50"
__________________________________________________________________________________________________
 Layer (type)                Output Shape                 Param #   Connected to                  
==================================================================================================
 input_1 (InputLayer)        [(None, 224, 224, 3)]        0         []                            
                                                                                                  
 conv1_pad (ZeroPadding2D)   (None, 230, 230, 3)          0         ['input_1[0][0]']             
                                                                                                  
 conv1_conv (Conv2D)         (None, 112, 112, 64)         9472      ['conv1_pad[0][0]']           
                                                                                                  
 conv1_bn (BatchNormalizati  (None, 112, 112, 64)         256       ['conv1_conv[0][0]']          
 on)                                                                                              
                                                                                                  
 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 (Conv2  (None, 56, 56, 64)           4160      ['pool1_pool[0][0]']          
 D)                                                                                               
                                                                                                  
 conv2_block1_1_bn (BatchNo  (None, 56, 56, 64)           256       ['conv2_block1_1_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv2_block1_1_relu (Activ  (None, 56, 56, 64)           0         ['conv2_block1_1_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv2_block1_2_conv (Conv2  (None, 56, 56, 64)           36928     ['conv2_block1_1_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv2_block1_2_bn (BatchNo  (None, 56, 56, 64)           256       ['conv2_block1_2_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv2_block1_2_relu (Activ  (None, 56, 56, 64)           0         ['conv2_block1_2_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv2_block1_0_conv (Conv2  (None, 56, 56, 256)          16640     ['pool1_pool[0][0]']          
 D)                                                                                               
                                                                                                  
 conv2_block1_3_conv (Conv2  (None, 56, 56, 256)          16640     ['conv2_block1_2_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv2_block1_0_bn (BatchNo  (None, 56, 56, 256)          1024      ['conv2_block1_0_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv2_block1_3_bn (BatchNo  (None, 56, 56, 256)          1024      ['conv2_block1_3_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv2_block1_add (Add)      (None, 56, 56, 256)          0         ['conv2_block1_0_bn[0][0]',   
                                                                     'conv2_block1_3_bn[0][0]']   
                                                                                                  
 conv2_block1_out (Activati  (None, 56, 56, 256)          0         ['conv2_block1_add[0][0]']    
 on)                                                                                              
                                                                                                  
 conv2_block2_1_conv (Conv2  (None, 56, 56, 64)           16448     ['conv2_block1_out[0][0]']    
 D)                                                                                               
                                                                                                  
 conv2_block2_1_bn (BatchNo  (None, 56, 56, 64)           256       ['conv2_block2_1_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv2_block2_1_relu (Activ  (None, 56, 56, 64)           0         ['conv2_block2_1_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv2_block2_2_conv (Conv2  (None, 56, 56, 64)           36928     ['conv2_block2_1_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv2_block2_2_bn (BatchNo  (None, 56, 56, 64)           256       ['conv2_block2_2_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv2_block2_2_relu (Activ  (None, 56, 56, 64)           0         ['conv2_block2_2_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv2_block2_3_conv (Conv2  (None, 56, 56, 256)          16640     ['conv2_block2_2_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv2_block2_3_bn (BatchNo  (None, 56, 56, 256)          1024      ['conv2_block2_3_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv2_block2_add (Add)      (None, 56, 56, 256)          0         ['conv2_block1_out[0][0]',    
                                                                     'conv2_block2_3_bn[0][0]']   
                                                                                                  
 conv2_block2_out (Activati  (None, 56, 56, 256)          0         ['conv2_block2_add[0][0]']    
 on)                                                                                              
                                                                                                  
 conv2_block3_1_conv (Conv2  (None, 56, 56, 64)           16448     ['conv2_block2_out[0][0]']    
 D)                                                                                               
                                                                                                  
 conv2_block3_1_bn (BatchNo  (None, 56, 56, 64)           256       ['conv2_block3_1_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv2_block3_1_relu (Activ  (None, 56, 56, 64)           0         ['conv2_block3_1_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv2_block3_2_conv (Conv2  (None, 56, 56, 64)           36928     ['conv2_block3_1_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv2_block3_2_bn (BatchNo  (None, 56, 56, 64)           256       ['conv2_block3_2_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv2_block3_2_relu (Activ  (None, 56, 56, 64)           0         ['conv2_block3_2_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv2_block3_3_conv (Conv2  (None, 56, 56, 256)          16640     ['conv2_block3_2_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv2_block3_3_bn (BatchNo  (None, 56, 56, 256)          1024      ['conv2_block3_3_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv2_block3_add (Add)      (None, 56, 56, 256)          0         ['conv2_block2_out[0][0]',    
                                                                     'conv2_block3_3_bn[0][0]']   
                                                                                                  
 conv2_block3_out (Activati  (None, 56, 56, 256)          0         ['conv2_block3_add[0][0]']    
 on)                                                                                              
                                                                                                  
 conv3_block1_1_conv (Conv2  (None, 28, 28, 128)          32896     ['conv2_block3_out[0][0]']    
 D)                                                                                               
                                                                                                  
 conv3_block1_1_bn (BatchNo  (None, 28, 28, 128)          512       ['conv3_block1_1_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv3_block1_1_relu (Activ  (None, 28, 28, 128)          0         ['conv3_block1_1_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv3_block1_2_conv (Conv2  (None, 28, 28, 128)          147584    ['conv3_block1_1_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv3_block1_2_bn (BatchNo  (None, 28, 28, 128)          512       ['conv3_block1_2_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv3_block1_2_relu (Activ  (None, 28, 28, 128)          0         ['conv3_block1_2_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv3_block1_0_conv (Conv2  (None, 28, 28, 512)          131584    ['conv2_block3_out[0][0]']    
 D)                                                                                               
                                                                                                  
 conv3_block1_3_conv (Conv2  (None, 28, 28, 512)          66048     ['conv3_block1_2_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv3_block1_0_bn (BatchNo  (None, 28, 28, 512)          2048      ['conv3_block1_0_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv3_block1_3_bn (BatchNo  (None, 28, 28, 512)          2048      ['conv3_block1_3_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv3_block1_add (Add)      (None, 28, 28, 512)          0         ['conv3_block1_0_bn[0][0]',   
                                                                     'conv3_block1_3_bn[0][0]']   
                                                                                                  
 conv3_block1_out (Activati  (None, 28, 28, 512)          0         ['conv3_block1_add[0][0]']    
 on)                                                                                              
                                                                                                  
 conv3_block2_1_conv (Conv2  (None, 28, 28, 128)          65664     ['conv3_block1_out[0][0]']    
 D)                                                                                               
                                                                                                  
 conv3_block2_1_bn (BatchNo  (None, 28, 28, 128)          512       ['conv3_block2_1_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv3_block2_1_relu (Activ  (None, 28, 28, 128)          0         ['conv3_block2_1_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv3_block2_2_conv (Conv2  (None, 28, 28, 128)          147584    ['conv3_block2_1_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv3_block2_2_bn (BatchNo  (None, 28, 28, 128)          512       ['conv3_block2_2_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv3_block2_2_relu (Activ  (None, 28, 28, 128)          0         ['conv3_block2_2_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv3_block2_3_conv (Conv2  (None, 28, 28, 512)          66048     ['conv3_block2_2_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv3_block2_3_bn (BatchNo  (None, 28, 28, 512)          2048      ['conv3_block2_3_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv3_block2_add (Add)      (None, 28, 28, 512)          0         ['conv3_block1_out[0][0]',    
                                                                     'conv3_block2_3_bn[0][0]']   
                                                                                                  
 conv3_block2_out (Activati  (None, 28, 28, 512)          0         ['conv3_block2_add[0][0]']    
 on)                                                                                              
                                                                                                  
 conv3_block3_1_conv (Conv2  (None, 28, 28, 128)          65664     ['conv3_block2_out[0][0]']    
 D)                                                                                               
                                                                                                  
 conv3_block3_1_bn (BatchNo  (None, 28, 28, 128)          512       ['conv3_block3_1_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv3_block3_1_relu (Activ  (None, 28, 28, 128)          0         ['conv3_block3_1_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv3_block3_2_conv (Conv2  (None, 28, 28, 128)          147584    ['conv3_block3_1_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv3_block3_2_bn (BatchNo  (None, 28, 28, 128)          512       ['conv3_block3_2_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv3_block3_2_relu (Activ  (None, 28, 28, 128)          0         ['conv3_block3_2_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv3_block3_3_conv (Conv2  (None, 28, 28, 512)          66048     ['conv3_block3_2_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv3_block3_3_bn (BatchNo  (None, 28, 28, 512)          2048      ['conv3_block3_3_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv3_block3_add (Add)      (None, 28, 28, 512)          0         ['conv3_block2_out[0][0]',    
                                                                     'conv3_block3_3_bn[0][0]']   
                                                                                                  
 conv3_block3_out (Activati  (None, 28, 28, 512)          0         ['conv3_block3_add[0][0]']    
 on)                                                                                              
                                                                                                  
 conv3_block4_1_conv (Conv2  (None, 28, 28, 128)          65664     ['conv3_block3_out[0][0]']    
 D)                                                                                               
                                                                                                  
 conv3_block4_1_bn (BatchNo  (None, 28, 28, 128)          512       ['conv3_block4_1_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv3_block4_1_relu (Activ  (None, 28, 28, 128)          0         ['conv3_block4_1_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv3_block4_2_conv (Conv2  (None, 28, 28, 128)          147584    ['conv3_block4_1_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv3_block4_2_bn (BatchNo  (None, 28, 28, 128)          512       ['conv3_block4_2_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv3_block4_2_relu (Activ  (None, 28, 28, 128)          0         ['conv3_block4_2_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv3_block4_3_conv (Conv2  (None, 28, 28, 512)          66048     ['conv3_block4_2_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv3_block4_3_bn (BatchNo  (None, 28, 28, 512)          2048      ['conv3_block4_3_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv3_block4_add (Add)      (None, 28, 28, 512)          0         ['conv3_block3_out[0][0]',    
                                                                     'conv3_block4_3_bn[0][0]']   
                                                                                                  
 conv3_block4_out (Activati  (None, 28, 28, 512)          0         ['conv3_block4_add[0][0]']    
 on)                                                                                              
                                                                                                  
 conv4_block1_1_conv (Conv2  (None, 14, 14, 256)          131328    ['conv3_block4_out[0][0]']    
 D)                                                                                               
                                                                                                  
 conv4_block1_1_bn (BatchNo  (None, 14, 14, 256)          1024      ['conv4_block1_1_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv4_block1_1_relu (Activ  (None, 14, 14, 256)          0         ['conv4_block1_1_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv4_block1_2_conv (Conv2  (None, 14, 14, 256)          590080    ['conv4_block1_1_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv4_block1_2_bn (BatchNo  (None, 14, 14, 256)          1024      ['conv4_block1_2_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv4_block1_2_relu (Activ  (None, 14, 14, 256)          0         ['conv4_block1_2_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv4_block1_0_conv (Conv2  (None, 14, 14, 1024)         525312    ['conv3_block4_out[0][0]']    
 D)                                                                                               
                                                                                                  
 conv4_block1_3_conv (Conv2  (None, 14, 14, 1024)         263168    ['conv4_block1_2_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv4_block1_0_bn (BatchNo  (None, 14, 14, 1024)         4096      ['conv4_block1_0_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv4_block1_3_bn (BatchNo  (None, 14, 14, 1024)         4096      ['conv4_block1_3_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv4_block1_add (Add)      (None, 14, 14, 1024)         0         ['conv4_block1_0_bn[0][0]',   
                                                                     'conv4_block1_3_bn[0][0]']   
                                                                                                  
 conv4_block1_out (Activati  (None, 14, 14, 1024)         0         ['conv4_block1_add[0][0]']    
 on)                                                                                              
                                                                                                  
 conv4_block2_1_conv (Conv2  (None, 14, 14, 256)          262400    ['conv4_block1_out[0][0]']    
 D)                                                                                               
                                                                                                  
 conv4_block2_1_bn (BatchNo  (None, 14, 14, 256)          1024      ['conv4_block2_1_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv4_block2_1_relu (Activ  (None, 14, 14, 256)          0         ['conv4_block2_1_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv4_block2_2_conv (Conv2  (None, 14, 14, 256)          590080    ['conv4_block2_1_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv4_block2_2_bn (BatchNo  (None, 14, 14, 256)          1024      ['conv4_block2_2_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv4_block2_2_relu (Activ  (None, 14, 14, 256)          0         ['conv4_block2_2_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv4_block2_3_conv (Conv2  (None, 14, 14, 1024)         263168    ['conv4_block2_2_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv4_block2_3_bn (BatchNo  (None, 14, 14, 1024)         4096      ['conv4_block2_3_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv4_block2_add (Add)      (None, 14, 14, 1024)         0         ['conv4_block1_out[0][0]',    
                                                                     'conv4_block2_3_bn[0][0]']   
                                                                                                  
 conv4_block2_out (Activati  (None, 14, 14, 1024)         0         ['conv4_block2_add[0][0]']    
 on)                                                                                              
                                                                                                  
 conv4_block3_1_conv (Conv2  (None, 14, 14, 256)          262400    ['conv4_block2_out[0][0]']    
 D)                                                                                               
                                                                                                  
 conv4_block3_1_bn (BatchNo  (None, 14, 14, 256)          1024      ['conv4_block3_1_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv4_block3_1_relu (Activ  (None, 14, 14, 256)          0         ['conv4_block3_1_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv4_block3_2_conv (Conv2  (None, 14, 14, 256)          590080    ['conv4_block3_1_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv4_block3_2_bn (BatchNo  (None, 14, 14, 256)          1024      ['conv4_block3_2_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv4_block3_2_relu (Activ  (None, 14, 14, 256)          0         ['conv4_block3_2_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv4_block3_3_conv (Conv2  (None, 14, 14, 1024)         263168    ['conv4_block3_2_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv4_block3_3_bn (BatchNo  (None, 14, 14, 1024)         4096      ['conv4_block3_3_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv4_block3_add (Add)      (None, 14, 14, 1024)         0         ['conv4_block2_out[0][0]',    
                                                                     'conv4_block3_3_bn[0][0]']   
                                                                                                  
 conv4_block3_out (Activati  (None, 14, 14, 1024)         0         ['conv4_block3_add[0][0]']    
 on)                                                                                              
                                                                                                  
 conv4_block4_1_conv (Conv2  (None, 14, 14, 256)          262400    ['conv4_block3_out[0][0]']    
 D)                                                                                               
                                                                                                  
 conv4_block4_1_bn (BatchNo  (None, 14, 14, 256)          1024      ['conv4_block4_1_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv4_block4_1_relu (Activ  (None, 14, 14, 256)          0         ['conv4_block4_1_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv4_block4_2_conv (Conv2  (None, 14, 14, 256)          590080    ['conv4_block4_1_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv4_block4_2_bn (BatchNo  (None, 14, 14, 256)          1024      ['conv4_block4_2_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv4_block4_2_relu (Activ  (None, 14, 14, 256)          0         ['conv4_block4_2_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv4_block4_3_conv (Conv2  (None, 14, 14, 1024)         263168    ['conv4_block4_2_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv4_block4_3_bn (BatchNo  (None, 14, 14, 1024)         4096      ['conv4_block4_3_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv4_block4_add (Add)      (None, 14, 14, 1024)         0         ['conv4_block3_out[0][0]',    
                                                                     'conv4_block4_3_bn[0][0]']   
                                                                                                  
 conv4_block4_out (Activati  (None, 14, 14, 1024)         0         ['conv4_block4_add[0][0]']    
 on)                                                                                              
                                                                                                  
 conv4_block5_1_conv (Conv2  (None, 14, 14, 256)          262400    ['conv4_block4_out[0][0]']    
 D)                                                                                               
                                                                                                  
 conv4_block5_1_bn (BatchNo  (None, 14, 14, 256)          1024      ['conv4_block5_1_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv4_block5_1_relu (Activ  (None, 14, 14, 256)          0         ['conv4_block5_1_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv4_block5_2_conv (Conv2  (None, 14, 14, 256)          590080    ['conv4_block5_1_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv4_block5_2_bn (BatchNo  (None, 14, 14, 256)          1024      ['conv4_block5_2_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv4_block5_2_relu (Activ  (None, 14, 14, 256)          0         ['conv4_block5_2_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv4_block5_3_conv (Conv2  (None, 14, 14, 1024)         263168    ['conv4_block5_2_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv4_block5_3_bn (BatchNo  (None, 14, 14, 1024)         4096      ['conv4_block5_3_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv4_block5_add (Add)      (None, 14, 14, 1024)         0         ['conv4_block4_out[0][0]',    
                                                                     'conv4_block5_3_bn[0][0]']   
                                                                                                  
 conv4_block5_out (Activati  (None, 14, 14, 1024)         0         ['conv4_block5_add[0][0]']    
 on)                                                                                              
                                                                                                  
 conv4_block6_1_conv (Conv2  (None, 14, 14, 256)          262400    ['conv4_block5_out[0][0]']    
 D)                                                                                               
                                                                                                  
 conv4_block6_1_bn (BatchNo  (None, 14, 14, 256)          1024      ['conv4_block6_1_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv4_block6_1_relu (Activ  (None, 14, 14, 256)          0         ['conv4_block6_1_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv4_block6_2_conv (Conv2  (None, 14, 14, 256)          590080    ['conv4_block6_1_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv4_block6_2_bn (BatchNo  (None, 14, 14, 256)          1024      ['conv4_block6_2_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv4_block6_2_relu (Activ  (None, 14, 14, 256)          0         ['conv4_block6_2_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv4_block6_3_conv (Conv2  (None, 14, 14, 1024)         263168    ['conv4_block6_2_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv4_block6_3_bn (BatchNo  (None, 14, 14, 1024)         4096      ['conv4_block6_3_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv4_block6_add (Add)      (None, 14, 14, 1024)         0         ['conv4_block5_out[0][0]',    
                                                                     'conv4_block6_3_bn[0][0]']   
                                                                                                  
 conv4_block6_out (Activati  (None, 14, 14, 1024)         0         ['conv4_block6_add[0][0]']    
 on)                                                                                              
                                                                                                  
 conv5_block1_1_conv (Conv2  (None, 7, 7, 512)            524800    ['conv4_block6_out[0][0]']    
 D)                                                                                               
                                                                                                  
 conv5_block1_1_bn (BatchNo  (None, 7, 7, 512)            2048      ['conv5_block1_1_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv5_block1_1_relu (Activ  (None, 7, 7, 512)            0         ['conv5_block1_1_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv5_block1_2_conv (Conv2  (None, 7, 7, 512)            2359808   ['conv5_block1_1_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv5_block1_2_bn (BatchNo  (None, 7, 7, 512)            2048      ['conv5_block1_2_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv5_block1_2_relu (Activ  (None, 7, 7, 512)            0         ['conv5_block1_2_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv5_block1_0_conv (Conv2  (None, 7, 7, 2048)           2099200   ['conv4_block6_out[0][0]']    
 D)                                                                                               
                                                                                                  
 conv5_block1_3_conv (Conv2  (None, 7, 7, 2048)           1050624   ['conv5_block1_2_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv5_block1_0_bn (BatchNo  (None, 7, 7, 2048)           8192      ['conv5_block1_0_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv5_block1_3_bn (BatchNo  (None, 7, 7, 2048)           8192      ['conv5_block1_3_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv5_block1_add (Add)      (None, 7, 7, 2048)           0         ['conv5_block1_0_bn[0][0]',   
                                                                     'conv5_block1_3_bn[0][0]']   
                                                                                                  
 conv5_block1_out (Activati  (None, 7, 7, 2048)           0         ['conv5_block1_add[0][0]']    
 on)                                                                                              
                                                                                                  
 conv5_block2_1_conv (Conv2  (None, 7, 7, 512)            1049088   ['conv5_block1_out[0][0]']    
 D)                                                                                               
                                                                                                  
 conv5_block2_1_bn (BatchNo  (None, 7, 7, 512)            2048      ['conv5_block2_1_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv5_block2_1_relu (Activ  (None, 7, 7, 512)            0         ['conv5_block2_1_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv5_block2_2_conv (Conv2  (None, 7, 7, 512)            2359808   ['conv5_block2_1_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv5_block2_2_bn (BatchNo  (None, 7, 7, 512)            2048      ['conv5_block2_2_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv5_block2_2_relu (Activ  (None, 7, 7, 512)            0         ['conv5_block2_2_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv5_block2_3_conv (Conv2  (None, 7, 7, 2048)           1050624   ['conv5_block2_2_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv5_block2_3_bn (BatchNo  (None, 7, 7, 2048)           8192      ['conv5_block2_3_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv5_block2_add (Add)      (None, 7, 7, 2048)           0         ['conv5_block1_out[0][0]',    
                                                                     'conv5_block2_3_bn[0][0]']   
                                                                                                  
 conv5_block2_out (Activati  (None, 7, 7, 2048)           0         ['conv5_block2_add[0][0]']    
 on)                                                                                              
                                                                                                  
 conv5_block3_1_conv (Conv2  (None, 7, 7, 512)            1049088   ['conv5_block2_out[0][0]']    
 D)                                                                                               
                                                                                                  
 conv5_block3_1_bn (BatchNo  (None, 7, 7, 512)            2048      ['conv5_block3_1_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv5_block3_1_relu (Activ  (None, 7, 7, 512)            0         ['conv5_block3_1_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv5_block3_2_conv (Conv2  (None, 7, 7, 512)            2359808   ['conv5_block3_1_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv5_block3_2_bn (BatchNo  (None, 7, 7, 512)            2048      ['conv5_block3_2_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv5_block3_2_relu (Activ  (None, 7, 7, 512)            0         ['conv5_block3_2_bn[0][0]']   
 ation)                                                                                           
                                                                                                  
 conv5_block3_3_conv (Conv2  (None, 7, 7, 2048)           1050624   ['conv5_block3_2_relu[0][0]'] 
 D)                                                                                               
                                                                                                  
 conv5_block3_3_bn (BatchNo  (None, 7, 7, 2048)           8192      ['conv5_block3_3_conv[0][0]'] 
 rmalization)                                                                                     
                                                                                                  
 conv5_block3_add (Add)      (None, 7, 7, 2048)           0         ['conv5_block2_out[0][0]',    
                                                                     'conv5_block3_3_bn[0][0]']   
                                                                                                  
 conv5_block3_out (Activati  (None, 7, 7, 2048)           0         ['conv5_block3_add[0][0]']    
 on)                                                                                              
                                                                                                  
 avg_pool (GlobalAveragePoo  (None, 2048)                 0         ['conv5_block3_out[0][0]']    
 ling2D)                                                                                          
                                                                                                  
 predictions (Dense)         (None, 1000)                 2049000   ['avg_pool[0][0]']            
                                                                                                  
==================================================================================================
Total params: 25636712 (97.80 MB)
Trainable params: 25583592 (97.59 MB)
Non-trainable params: 53120 (207.50 KB)
__________________________________________________________________________________________________

Plot the model:

tf.keras.utils.plot_model(
    model,
    to_file = "model.png",
    show_shapes = True,
    show_dtype = False,
    show_layer_names = True,
    rankdir = "TB",
    expand_nested = False,
    dpi = 96,
    layer_range = None,
    show_layer_activations = False,
)
You must install pydot (`pip install pydot`) and install graphviz (see instructions at https://graphviz.gitlab.io/download/) for plot_model to work.

model <- application_resnet50(weights = "imagenet")
summary(model)
Model: "resnet50"
________________________________________________________________________________
 Layer (type)       Output Shape         Para   Connected to         Trainable  
                                         m #                                    
================================================================================
 input_2 (InputLay  [(None, 224, 224,    0      []                   Y          
 er)                3)]                                                         
 conv1_pad (ZeroPa  (None, 230, 230, 3   0      ['input_2[0][0]']    Y          
 dding2D)           )                                                           
 conv1_conv (Conv2  (None, 112, 112, 6   9472   ['conv1_pad[0][0]'   Y          
 D)                 4)                          ]                               
 conv1_bn (BatchNo  (None, 112, 112, 6   256    ['conv1_conv[0][0]   Y          
 rmalization)       4)                          ']                              
 conv1_relu (Activ  (None, 112, 112, 6   0      ['conv1_bn[0][0]']   Y          
 ation)             4)                                                          
 pool1_pad (ZeroPa  (None, 114, 114, 6   0      ['conv1_relu[0][0]   Y          
 dding2D)           4)                          ']                              
 pool1_pool (MaxPo  (None, 56, 56, 64)   0      ['pool1_pad[0][0]'   Y          
 oling2D)                                       ]                               
 conv2_block1_1_co  (None, 56, 56, 64)   4160   ['pool1_pool[0][0]   Y          
 nv (Conv2D)                                    ']                              
 conv2_block1_1_bn  (None, 56, 56, 64)   256    ['conv2_block1_1_c   Y          
  (BatchNormalizat                              onv[0][0]']                     
 ion)                                                                           
 conv2_block1_1_re  (None, 56, 56, 64)   0      ['conv2_block1_1_b   Y          
 lu (Activation)                                n[0][0]']                       
 conv2_block1_2_co  (None, 56, 56, 64)   3692   ['conv2_block1_1_r   Y          
 nv (Conv2D)                             8      elu[0][0]']                     
 conv2_block1_2_bn  (None, 56, 56, 64)   256    ['conv2_block1_2_c   Y          
  (BatchNormalizat                              onv[0][0]']                     
 ion)                                                                           
 conv2_block1_2_re  (None, 56, 56, 64)   0      ['conv2_block1_2_b   Y          
 lu (Activation)                                n[0][0]']                       
 conv2_block1_0_co  (None, 56, 56, 256   1664   ['pool1_pool[0][0]   Y          
 nv (Conv2D)        )                    0      ']                              
 conv2_block1_3_co  (None, 56, 56, 256   1664   ['conv2_block1_2_r   Y          
 nv (Conv2D)        )                    0      elu[0][0]']                     
 conv2_block1_0_bn  (None, 56, 56, 256   1024   ['conv2_block1_0_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv2_block1_3_bn  (None, 56, 56, 256   1024   ['conv2_block1_3_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv2_block1_add   (None, 56, 56, 256   0      ['conv2_block1_0_b   Y          
 (Add)              )                           n[0][0]',                       
                                                 'conv2_block1_3_b              
                                                n[0][0]']                       
 conv2_block1_out   (None, 56, 56, 256   0      ['conv2_block1_add   Y          
 (Activation)       )                           [0][0]']                        
 conv2_block2_1_co  (None, 56, 56, 64)   1644   ['conv2_block1_out   Y          
 nv (Conv2D)                             8      [0][0]']                        
 conv2_block2_1_bn  (None, 56, 56, 64)   256    ['conv2_block2_1_c   Y          
  (BatchNormalizat                              onv[0][0]']                     
 ion)                                                                           
 conv2_block2_1_re  (None, 56, 56, 64)   0      ['conv2_block2_1_b   Y          
 lu (Activation)                                n[0][0]']                       
 conv2_block2_2_co  (None, 56, 56, 64)   3692   ['conv2_block2_1_r   Y          
 nv (Conv2D)                             8      elu[0][0]']                     
 conv2_block2_2_bn  (None, 56, 56, 64)   256    ['conv2_block2_2_c   Y          
  (BatchNormalizat                              onv[0][0]']                     
 ion)                                                                           
 conv2_block2_2_re  (None, 56, 56, 64)   0      ['conv2_block2_2_b   Y          
 lu (Activation)                                n[0][0]']                       
 conv2_block2_3_co  (None, 56, 56, 256   1664   ['conv2_block2_2_r   Y          
 nv (Conv2D)        )                    0      elu[0][0]']                     
 conv2_block2_3_bn  (None, 56, 56, 256   1024   ['conv2_block2_3_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv2_block2_add   (None, 56, 56, 256   0      ['conv2_block1_out   Y          
 (Add)              )                           [0][0]',                        
                                                 'conv2_block2_3_b              
                                                n[0][0]']                       
 conv2_block2_out   (None, 56, 56, 256   0      ['conv2_block2_add   Y          
 (Activation)       )                           [0][0]']                        
 conv2_block3_1_co  (None, 56, 56, 64)   1644   ['conv2_block2_out   Y          
 nv (Conv2D)                             8      [0][0]']                        
 conv2_block3_1_bn  (None, 56, 56, 64)   256    ['conv2_block3_1_c   Y          
  (BatchNormalizat                              onv[0][0]']                     
 ion)                                                                           
 conv2_block3_1_re  (None, 56, 56, 64)   0      ['conv2_block3_1_b   Y          
 lu (Activation)                                n[0][0]']                       
 conv2_block3_2_co  (None, 56, 56, 64)   3692   ['conv2_block3_1_r   Y          
 nv (Conv2D)                             8      elu[0][0]']                     
 conv2_block3_2_bn  (None, 56, 56, 64)   256    ['conv2_block3_2_c   Y          
  (BatchNormalizat                              onv[0][0]']                     
 ion)                                                                           
 conv2_block3_2_re  (None, 56, 56, 64)   0      ['conv2_block3_2_b   Y          
 lu (Activation)                                n[0][0]']                       
 conv2_block3_3_co  (None, 56, 56, 256   1664   ['conv2_block3_2_r   Y          
 nv (Conv2D)        )                    0      elu[0][0]']                     
 conv2_block3_3_bn  (None, 56, 56, 256   1024   ['conv2_block3_3_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv2_block3_add   (None, 56, 56, 256   0      ['conv2_block2_out   Y          
 (Add)              )                           [0][0]',                        
                                                 'conv2_block3_3_b              
                                                n[0][0]']                       
 conv2_block3_out   (None, 56, 56, 256   0      ['conv2_block3_add   Y          
 (Activation)       )                           [0][0]']                        
 conv3_block1_1_co  (None, 28, 28, 128   3289   ['conv2_block3_out   Y          
 nv (Conv2D)        )                    6      [0][0]']                        
 conv3_block1_1_bn  (None, 28, 28, 128   512    ['conv3_block1_1_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv3_block1_1_re  (None, 28, 28, 128   0      ['conv3_block1_1_b   Y          
 lu (Activation)    )                           n[0][0]']                       
 conv3_block1_2_co  (None, 28, 28, 128   1475   ['conv3_block1_1_r   Y          
 nv (Conv2D)        )                    84     elu[0][0]']                     
 conv3_block1_2_bn  (None, 28, 28, 128   512    ['conv3_block1_2_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv3_block1_2_re  (None, 28, 28, 128   0      ['conv3_block1_2_b   Y          
 lu (Activation)    )                           n[0][0]']                       
 conv3_block1_0_co  (None, 28, 28, 512   1315   ['conv2_block3_out   Y          
 nv (Conv2D)        )                    84     [0][0]']                        
 conv3_block1_3_co  (None, 28, 28, 512   6604   ['conv3_block1_2_r   Y          
 nv (Conv2D)        )                    8      elu[0][0]']                     
 conv3_block1_0_bn  (None, 28, 28, 512   2048   ['conv3_block1_0_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv3_block1_3_bn  (None, 28, 28, 512   2048   ['conv3_block1_3_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv3_block1_add   (None, 28, 28, 512   0      ['conv3_block1_0_b   Y          
 (Add)              )                           n[0][0]',                       
                                                 'conv3_block1_3_b              
                                                n[0][0]']                       
 conv3_block1_out   (None, 28, 28, 512   0      ['conv3_block1_add   Y          
 (Activation)       )                           [0][0]']                        
 conv3_block2_1_co  (None, 28, 28, 128   6566   ['conv3_block1_out   Y          
 nv (Conv2D)        )                    4      [0][0]']                        
 conv3_block2_1_bn  (None, 28, 28, 128   512    ['conv3_block2_1_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv3_block2_1_re  (None, 28, 28, 128   0      ['conv3_block2_1_b   Y          
 lu (Activation)    )                           n[0][0]']                       
 conv3_block2_2_co  (None, 28, 28, 128   1475   ['conv3_block2_1_r   Y          
 nv (Conv2D)        )                    84     elu[0][0]']                     
 conv3_block2_2_bn  (None, 28, 28, 128   512    ['conv3_block2_2_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv3_block2_2_re  (None, 28, 28, 128   0      ['conv3_block2_2_b   Y          
 lu (Activation)    )                           n[0][0]']                       
 conv3_block2_3_co  (None, 28, 28, 512   6604   ['conv3_block2_2_r   Y          
 nv (Conv2D)        )                    8      elu[0][0]']                     
 conv3_block2_3_bn  (None, 28, 28, 512   2048   ['conv3_block2_3_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv3_block2_add   (None, 28, 28, 512   0      ['conv3_block1_out   Y          
 (Add)              )                           [0][0]',                        
                                                 'conv3_block2_3_b              
                                                n[0][0]']                       
 conv3_block2_out   (None, 28, 28, 512   0      ['conv3_block2_add   Y          
 (Activation)       )                           [0][0]']                        
 conv3_block3_1_co  (None, 28, 28, 128   6566   ['conv3_block2_out   Y          
 nv (Conv2D)        )                    4      [0][0]']                        
 conv3_block3_1_bn  (None, 28, 28, 128   512    ['conv3_block3_1_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv3_block3_1_re  (None, 28, 28, 128   0      ['conv3_block3_1_b   Y          
 lu (Activation)    )                           n[0][0]']                       
 conv3_block3_2_co  (None, 28, 28, 128   1475   ['conv3_block3_1_r   Y          
 nv (Conv2D)        )                    84     elu[0][0]']                     
 conv3_block3_2_bn  (None, 28, 28, 128   512    ['conv3_block3_2_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv3_block3_2_re  (None, 28, 28, 128   0      ['conv3_block3_2_b   Y          
 lu (Activation)    )                           n[0][0]']                       
 conv3_block3_3_co  (None, 28, 28, 512   6604   ['conv3_block3_2_r   Y          
 nv (Conv2D)        )                    8      elu[0][0]']                     
 conv3_block3_3_bn  (None, 28, 28, 512   2048   ['conv3_block3_3_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv3_block3_add   (None, 28, 28, 512   0      ['conv3_block2_out   Y          
 (Add)              )                           [0][0]',                        
                                                 'conv3_block3_3_b              
                                                n[0][0]']                       
 conv3_block3_out   (None, 28, 28, 512   0      ['conv3_block3_add   Y          
 (Activation)       )                           [0][0]']                        
 conv3_block4_1_co  (None, 28, 28, 128   6566   ['conv3_block3_out   Y          
 nv (Conv2D)        )                    4      [0][0]']                        
 conv3_block4_1_bn  (None, 28, 28, 128   512    ['conv3_block4_1_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv3_block4_1_re  (None, 28, 28, 128   0      ['conv3_block4_1_b   Y          
 lu (Activation)    )                           n[0][0]']                       
 conv3_block4_2_co  (None, 28, 28, 128   1475   ['conv3_block4_1_r   Y          
 nv (Conv2D)        )                    84     elu[0][0]']                     
 conv3_block4_2_bn  (None, 28, 28, 128   512    ['conv3_block4_2_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv3_block4_2_re  (None, 28, 28, 128   0      ['conv3_block4_2_b   Y          
 lu (Activation)    )                           n[0][0]']                       
 conv3_block4_3_co  (None, 28, 28, 512   6604   ['conv3_block4_2_r   Y          
 nv (Conv2D)        )                    8      elu[0][0]']                     
 conv3_block4_3_bn  (None, 28, 28, 512   2048   ['conv3_block4_3_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv3_block4_add   (None, 28, 28, 512   0      ['conv3_block3_out   Y          
 (Add)              )                           [0][0]',                        
                                                 'conv3_block4_3_b              
                                                n[0][0]']                       
 conv3_block4_out   (None, 28, 28, 512   0      ['conv3_block4_add   Y          
 (Activation)       )                           [0][0]']                        
 conv4_block1_1_co  (None, 14, 14, 256   1313   ['conv3_block4_out   Y          
 nv (Conv2D)        )                    28     [0][0]']                        
 conv4_block1_1_bn  (None, 14, 14, 256   1024   ['conv4_block1_1_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv4_block1_1_re  (None, 14, 14, 256   0      ['conv4_block1_1_b   Y          
 lu (Activation)    )                           n[0][0]']                       
 conv4_block1_2_co  (None, 14, 14, 256   5900   ['conv4_block1_1_r   Y          
 nv (Conv2D)        )                    80     elu[0][0]']                     
 conv4_block1_2_bn  (None, 14, 14, 256   1024   ['conv4_block1_2_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv4_block1_2_re  (None, 14, 14, 256   0      ['conv4_block1_2_b   Y          
 lu (Activation)    )                           n[0][0]']                       
 conv4_block1_0_co  (None, 14, 14, 102   5253   ['conv3_block4_out   Y          
 nv (Conv2D)        4)                   12     [0][0]']                        
 conv4_block1_3_co  (None, 14, 14, 102   2631   ['conv4_block1_2_r   Y          
 nv (Conv2D)        4)                   68     elu[0][0]']                     
 conv4_block1_0_bn  (None, 14, 14, 102   4096   ['conv4_block1_0_c   Y          
  (BatchNormalizat  4)                          onv[0][0]']                     
 ion)                                                                           
 conv4_block1_3_bn  (None, 14, 14, 102   4096   ['conv4_block1_3_c   Y          
  (BatchNormalizat  4)                          onv[0][0]']                     
 ion)                                                                           
 conv4_block1_add   (None, 14, 14, 102   0      ['conv4_block1_0_b   Y          
 (Add)              4)                          n[0][0]',                       
                                                 'conv4_block1_3_b              
                                                n[0][0]']                       
 conv4_block1_out   (None, 14, 14, 102   0      ['conv4_block1_add   Y          
 (Activation)       4)                          [0][0]']                        
 conv4_block2_1_co  (None, 14, 14, 256   2624   ['conv4_block1_out   Y          
 nv (Conv2D)        )                    00     [0][0]']                        
 conv4_block2_1_bn  (None, 14, 14, 256   1024   ['conv4_block2_1_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv4_block2_1_re  (None, 14, 14, 256   0      ['conv4_block2_1_b   Y          
 lu (Activation)    )                           n[0][0]']                       
 conv4_block2_2_co  (None, 14, 14, 256   5900   ['conv4_block2_1_r   Y          
 nv (Conv2D)        )                    80     elu[0][0]']                     
 conv4_block2_2_bn  (None, 14, 14, 256   1024   ['conv4_block2_2_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv4_block2_2_re  (None, 14, 14, 256   0      ['conv4_block2_2_b   Y          
 lu (Activation)    )                           n[0][0]']                       
 conv4_block2_3_co  (None, 14, 14, 102   2631   ['conv4_block2_2_r   Y          
 nv (Conv2D)        4)                   68     elu[0][0]']                     
 conv4_block2_3_bn  (None, 14, 14, 102   4096   ['conv4_block2_3_c   Y          
  (BatchNormalizat  4)                          onv[0][0]']                     
 ion)                                                                           
 conv4_block2_add   (None, 14, 14, 102   0      ['conv4_block1_out   Y          
 (Add)              4)                          [0][0]',                        
                                                 'conv4_block2_3_b              
                                                n[0][0]']                       
 conv4_block2_out   (None, 14, 14, 102   0      ['conv4_block2_add   Y          
 (Activation)       4)                          [0][0]']                        
 conv4_block3_1_co  (None, 14, 14, 256   2624   ['conv4_block2_out   Y          
 nv (Conv2D)        )                    00     [0][0]']                        
 conv4_block3_1_bn  (None, 14, 14, 256   1024   ['conv4_block3_1_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv4_block3_1_re  (None, 14, 14, 256   0      ['conv4_block3_1_b   Y          
 lu (Activation)    )                           n[0][0]']                       
 conv4_block3_2_co  (None, 14, 14, 256   5900   ['conv4_block3_1_r   Y          
 nv (Conv2D)        )                    80     elu[0][0]']                     
 conv4_block3_2_bn  (None, 14, 14, 256   1024   ['conv4_block3_2_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv4_block3_2_re  (None, 14, 14, 256   0      ['conv4_block3_2_b   Y          
 lu (Activation)    )                           n[0][0]']                       
 conv4_block3_3_co  (None, 14, 14, 102   2631   ['conv4_block3_2_r   Y          
 nv (Conv2D)        4)                   68     elu[0][0]']                     
 conv4_block3_3_bn  (None, 14, 14, 102   4096   ['conv4_block3_3_c   Y          
  (BatchNormalizat  4)                          onv[0][0]']                     
 ion)                                                                           
 conv4_block3_add   (None, 14, 14, 102   0      ['conv4_block2_out   Y          
 (Add)              4)                          [0][0]',                        
                                                 'conv4_block3_3_b              
                                                n[0][0]']                       
 conv4_block3_out   (None, 14, 14, 102   0      ['conv4_block3_add   Y          
 (Activation)       4)                          [0][0]']                        
 conv4_block4_1_co  (None, 14, 14, 256   2624   ['conv4_block3_out   Y          
 nv (Conv2D)        )                    00     [0][0]']                        
 conv4_block4_1_bn  (None, 14, 14, 256   1024   ['conv4_block4_1_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv4_block4_1_re  (None, 14, 14, 256   0      ['conv4_block4_1_b   Y          
 lu (Activation)    )                           n[0][0]']                       
 conv4_block4_2_co  (None, 14, 14, 256   5900   ['conv4_block4_1_r   Y          
 nv (Conv2D)        )                    80     elu[0][0]']                     
 conv4_block4_2_bn  (None, 14, 14, 256   1024   ['conv4_block4_2_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv4_block4_2_re  (None, 14, 14, 256   0      ['conv4_block4_2_b   Y          
 lu (Activation)    )                           n[0][0]']                       
 conv4_block4_3_co  (None, 14, 14, 102   2631   ['conv4_block4_2_r   Y          
 nv (Conv2D)        4)                   68     elu[0][0]']                     
 conv4_block4_3_bn  (None, 14, 14, 102   4096   ['conv4_block4_3_c   Y          
  (BatchNormalizat  4)                          onv[0][0]']                     
 ion)                                                                           
 conv4_block4_add   (None, 14, 14, 102   0      ['conv4_block3_out   Y          
 (Add)              4)                          [0][0]',                        
                                                 'conv4_block4_3_b              
                                                n[0][0]']                       
 conv4_block4_out   (None, 14, 14, 102   0      ['conv4_block4_add   Y          
 (Activation)       4)                          [0][0]']                        
 conv4_block5_1_co  (None, 14, 14, 256   2624   ['conv4_block4_out   Y          
 nv (Conv2D)        )                    00     [0][0]']                        
 conv4_block5_1_bn  (None, 14, 14, 256   1024   ['conv4_block5_1_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv4_block5_1_re  (None, 14, 14, 256   0      ['conv4_block5_1_b   Y          
 lu (Activation)    )                           n[0][0]']                       
 conv4_block5_2_co  (None, 14, 14, 256   5900   ['conv4_block5_1_r   Y          
 nv (Conv2D)        )                    80     elu[0][0]']                     
 conv4_block5_2_bn  (None, 14, 14, 256   1024   ['conv4_block5_2_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv4_block5_2_re  (None, 14, 14, 256   0      ['conv4_block5_2_b   Y          
 lu (Activation)    )                           n[0][0]']                       
 conv4_block5_3_co  (None, 14, 14, 102   2631   ['conv4_block5_2_r   Y          
 nv (Conv2D)        4)                   68     elu[0][0]']                     
 conv4_block5_3_bn  (None, 14, 14, 102   4096   ['conv4_block5_3_c   Y          
  (BatchNormalizat  4)                          onv[0][0]']                     
 ion)                                                                           
 conv4_block5_add   (None, 14, 14, 102   0      ['conv4_block4_out   Y          
 (Add)              4)                          [0][0]',                        
                                                 'conv4_block5_3_b              
                                                n[0][0]']                       
 conv4_block5_out   (None, 14, 14, 102   0      ['conv4_block5_add   Y          
 (Activation)       4)                          [0][0]']                        
 conv4_block6_1_co  (None, 14, 14, 256   2624   ['conv4_block5_out   Y          
 nv (Conv2D)        )                    00     [0][0]']                        
 conv4_block6_1_bn  (None, 14, 14, 256   1024   ['conv4_block6_1_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv4_block6_1_re  (None, 14, 14, 256   0      ['conv4_block6_1_b   Y          
 lu (Activation)    )                           n[0][0]']                       
 conv4_block6_2_co  (None, 14, 14, 256   5900   ['conv4_block6_1_r   Y          
 nv (Conv2D)        )                    80     elu[0][0]']                     
 conv4_block6_2_bn  (None, 14, 14, 256   1024   ['conv4_block6_2_c   Y          
  (BatchNormalizat  )                           onv[0][0]']                     
 ion)                                                                           
 conv4_block6_2_re  (None, 14, 14, 256   0      ['conv4_block6_2_b   Y          
 lu (Activation)    )                           n[0][0]']                       
 conv4_block6_3_co  (None, 14, 14, 102   2631   ['conv4_block6_2_r   Y          
 nv (Conv2D)        4)                   68     elu[0][0]']                     
 conv4_block6_3_bn  (None, 14, 14, 102   4096   ['conv4_block6_3_c   Y          
  (BatchNormalizat  4)                          onv[0][0]']                     
 ion)                                                                           
 conv4_block6_add   (None, 14, 14, 102   0      ['conv4_block5_out   Y          
 (Add)              4)                          [0][0]',                        
                                                 'conv4_block6_3_b              
                                                n[0][0]']                       
 conv4_block6_out   (None, 14, 14, 102   0      ['conv4_block6_add   Y          
 (Activation)       4)                          [0][0]']                        
 conv5_block1_1_co  (None, 7, 7, 512)    5248   ['conv4_block6_out   Y          
 nv (Conv2D)                             00     [0][0]']                        
 conv5_block1_1_bn  (None, 7, 7, 512)    2048   ['conv5_block1_1_c   Y          
  (BatchNormalizat                              onv[0][0]']                     
 ion)                                                                           
 conv5_block1_1_re  (None, 7, 7, 512)    0      ['conv5_block1_1_b   Y          
 lu (Activation)                                n[0][0]']                       
 conv5_block1_2_co  (None, 7, 7, 512)    2359   ['conv5_block1_1_r   Y          
 nv (Conv2D)                             808    elu[0][0]']                     
 conv5_block1_2_bn  (None, 7, 7, 512)    2048   ['conv5_block1_2_c   Y          
  (BatchNormalizat                              onv[0][0]']                     
 ion)                                                                           
 conv5_block1_2_re  (None, 7, 7, 512)    0      ['conv5_block1_2_b   Y          
 lu (Activation)                                n[0][0]']                       
 conv5_block1_0_co  (None, 7, 7, 2048)   2099   ['conv4_block6_out   Y          
 nv (Conv2D)                             200    [0][0]']                        
 conv5_block1_3_co  (None, 7, 7, 2048)   1050   ['conv5_block1_2_r   Y          
 nv (Conv2D)                             624    elu[0][0]']                     
 conv5_block1_0_bn  (None, 7, 7, 2048)   8192   ['conv5_block1_0_c   Y          
  (BatchNormalizat                              onv[0][0]']                     
 ion)                                                                           
 conv5_block1_3_bn  (None, 7, 7, 2048)   8192   ['conv5_block1_3_c   Y          
  (BatchNormalizat                              onv[0][0]']                     
 ion)                                                                           
 conv5_block1_add   (None, 7, 7, 2048)   0      ['conv5_block1_0_b   Y          
 (Add)                                          n[0][0]',                       
                                                 'conv5_block1_3_b              
                                                n[0][0]']                       
 conv5_block1_out   (None, 7, 7, 2048)   0      ['conv5_block1_add   Y          
 (Activation)                                   [0][0]']                        
 conv5_block2_1_co  (None, 7, 7, 512)    1049   ['conv5_block1_out   Y          
 nv (Conv2D)                             088    [0][0]']                        
 conv5_block2_1_bn  (None, 7, 7, 512)    2048   ['conv5_block2_1_c   Y          
  (BatchNormalizat                              onv[0][0]']                     
 ion)                                                                           
 conv5_block2_1_re  (None, 7, 7, 512)    0      ['conv5_block2_1_b   Y          
 lu (Activation)                                n[0][0]']                       
 conv5_block2_2_co  (None, 7, 7, 512)    2359   ['conv5_block2_1_r   Y          
 nv (Conv2D)                             808    elu[0][0]']                     
 conv5_block2_2_bn  (None, 7, 7, 512)    2048   ['conv5_block2_2_c   Y          
  (BatchNormalizat                              onv[0][0]']                     
 ion)                                                                           
 conv5_block2_2_re  (None, 7, 7, 512)    0      ['conv5_block2_2_b   Y          
 lu (Activation)                                n[0][0]']                       
 conv5_block2_3_co  (None, 7, 7, 2048)   1050   ['conv5_block2_2_r   Y          
 nv (Conv2D)                             624    elu[0][0]']                     
 conv5_block2_3_bn  (None, 7, 7, 2048)   8192   ['conv5_block2_3_c   Y          
  (BatchNormalizat                              onv[0][0]']                     
 ion)                                                                           
 conv5_block2_add   (None, 7, 7, 2048)   0      ['conv5_block1_out   Y          
 (Add)                                          [0][0]',                        
                                                 'conv5_block2_3_b              
                                                n[0][0]']                       
 conv5_block2_out   (None, 7, 7, 2048)   0      ['conv5_block2_add   Y          
 (Activation)                                   [0][0]']                        
 conv5_block3_1_co  (None, 7, 7, 512)    1049   ['conv5_block2_out   Y          
 nv (Conv2D)                             088    [0][0]']                        
 conv5_block3_1_bn  (None, 7, 7, 512)    2048   ['conv5_block3_1_c   Y          
  (BatchNormalizat                              onv[0][0]']                     
 ion)                                                                           
 conv5_block3_1_re  (None, 7, 7, 512)    0      ['conv5_block3_1_b   Y          
 lu (Activation)                                n[0][0]']                       
 conv5_block3_2_co  (None, 7, 7, 512)    2359   ['conv5_block3_1_r   Y          
 nv (Conv2D)                             808    elu[0][0]']                     
 conv5_block3_2_bn  (None, 7, 7, 512)    2048   ['conv5_block3_2_c   Y          
  (BatchNormalizat                              onv[0][0]']                     
 ion)                                                                           
 conv5_block3_2_re  (None, 7, 7, 512)    0      ['conv5_block3_2_b   Y          
 lu (Activation)                                n[0][0]']                       
 conv5_block3_3_co  (None, 7, 7, 2048)   1050   ['conv5_block3_2_r   Y          
 nv (Conv2D)                             624    elu[0][0]']                     
 conv5_block3_3_bn  (None, 7, 7, 2048)   8192   ['conv5_block3_3_c   Y          
  (BatchNormalizat                              onv[0][0]']                     
 ion)                                                                           
 conv5_block3_add   (None, 7, 7, 2048)   0      ['conv5_block2_out   Y          
 (Add)                                          [0][0]',                        
                                                 'conv5_block3_3_b              
                                                n[0][0]']                       
 conv5_block3_out   (None, 7, 7, 2048)   0      ['conv5_block3_add   Y          
 (Activation)                                   [0][0]']                        
 avg_pool (GlobalA  (None, 2048)         0      ['conv5_block3_out   Y          
 veragePooling2D)                               [0][0]']                        
 predictions (Dens  (None, 1000)         2049   ['avg_pool[0][0]']   Y          
 e)                                      000                                    
================================================================================
Total params: 25636712 (97.80 MB)
Trainable params: 25583592 (97.59 MB)
Non-trainable params: 53120 (207.50 KB)
________________________________________________________________________________

4 Classify images

Finally, we classify our six images, and return the top three class choices in terms of predicted probability for each.

pred6 = keras.applications.imagenet_utils.decode_predictions(
  model.predict(x), 
  top = 3
  )

1/1 [==============================] - ETA: 0s
1/1 [==============================] - 0s 415ms/step
for i in range(num_images):
  print(image_names[i])
  print(np.asarray(pred6[i]))
weaver.jpg
[['n01843065' 'jacamar' '0.49795353']
 ['n01818515' 'macaw' '0.22193344']
 ['n02494079' 'squirrel_monkey' '0.04287851']]
flamingo.jpg
[['n02007558' 'flamingo' '0.92635']
 ['n02006656' 'spoonbill' '0.071699165']
 ['n02002556' 'white_stork' '0.0012282135']]
huey.jpg
[['n02097474' 'Tibetan_terrier' '0.509297']
 ['n02098413' 'Lhasa' '0.42209885']
 ['n02098105' 'soft-coated_wheaten_terrier' '0.016958572']]
hawk_cropped.jpeg
[['n01608432' 'kite' '0.7227091']
 ['n01622779' 'great_grey_owl' '0.08182563']
 ['n01532829' 'house_finch' '0.04218885']]
hawk.jpg
[['n03388043' 'fountain' '0.27886552']
 ['n03532672' 'hook' '0.17855462']
 ['n03804744' 'nail' '0.10807269']]
kitty.jpg
[['n02105641' 'Old_English_sheepdog' '0.8326595']
 ['n02086240' 'Shih-Tzu' '0.04513897']
 ['n03223299' 'doormat' '0.0329979']]
pred6 <- model %>% 
  predict(x) %>%
  imagenet_decode_predictions(top = 3)
1/1 - 0s - 395ms/epoch - 395ms/step
names(pred6) <- image_names
pred6
$flamingo.jpg
  class_name class_description       score
1  n02007558          flamingo 0.926349998
2  n02006656         spoonbill 0.071699165
3  n02002556       white_stork 0.001228208

$hawk_cropped.jpeg
  class_name class_description      score
1  n01608432              kite 0.72270912
2  n01622779    great_grey_owl 0.08182571
3  n01532829       house_finch 0.04218881

$hawk.jpg
  class_name class_description     score
1  n03388043          fountain 0.2788656
2  n03532672              hook 0.1785545
3  n03804744              nail 0.1080726

$huey.jpg
  class_name           class_description      score
1  n02097474             Tibetan_terrier 0.50929749
2  n02098413                       Lhasa 0.42209846
3  n02098105 soft-coated_wheaten_terrier 0.01695856

$kitty.jpg
  class_name    class_description      score
1  n02105641 Old_English_sheepdog 0.83265990
2  n02086240             Shih-Tzu 0.04513899
3  n03223299              doormat 0.03299772

$weaver.jpg
  class_name class_description      score
1  n01843065           jacamar 0.49795401
2  n01818515             macaw 0.22193280
3  n02494079   squirrel_monkey 0.04287859