0

I'm trying to implement manually the model VGG19 that you can find here: [Model][1]

The model i need is the one you get when calling tf.keras.applications.VGG19(include_top=True,weights=None, input_shape=(32, 32, 3),classes=100)

What i'm doing is:

    dropout_rate_layer1 = 64
dropout_rate_layer2 = 128
dropout_rate_layer3 = 256
dropout_rate_layer4 = 512
dropout_rate_layer5 = 4096

input_shape = (32, 32, 3)
data_format = 'channels_last'
max_pool = functools.partial(
    tf.keras.layers.MaxPooling2D,
    pool_size=(2, 2),
    padding='same',
    data_format=data_format,
    strides=(2, 2))
conv2d = functools.partial(
    tf.keras.layers.Conv2D,
    kernel_size=3,
    padding='same',
    data_format=data_format,
    activation=tf.nn.relu)
model = tf.keras.models.Sequential([
    tf.keras.layers.InputLayer(input_shape=input_shape),
    conv2d(filters=dropout_rate_layer1, input_shape=[32, 32, 3]),
    conv2d(filters=dropout_rate_layer1),
    max_pool(),
    conv2d(filters=dropout_rate_layer2),
    conv2d(filters=dropout_rate_layer2),
    max_pool(),
    conv2d(filters=dropout_rate_layer3),
    conv2d(filters=dropout_rate_layer3),
    conv2d(filters=dropout_rate_layer3),
    conv2d(filters=dropout_rate_layer3),
    max_pool(),
    conv2d(filters=dropout_rate_layer4),
    conv2d(filters=dropout_rate_layer4),
    conv2d(filters=dropout_rate_layer4),
    conv2d(filters=dropout_rate_layer4),
    max_pool(),
    conv2d(filters=dropout_rate_layer4),
    conv2d(filters=dropout_rate_layer4),
    conv2d(filters=dropout_rate_layer4),
    conv2d(filters=dropout_rate_layer4),
    max_pool(),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(dropout_rate_layer5, activation=tf.nn.relu),
    tf.keras.layers.Dense(dropout_rate_layer5, activation=tf.nn.relu),
    tf.keras.layers.Dense(100, activation=tf.nn.softmax),
])
return model

But the summary is:

Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d (Conv2D)              (None, 32, 32, 64)        1792      
_________________________________________________________________
conv2d_1 (Conv2D)            (None, 32, 32, 64)        36928     
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 16, 16, 64)        0         
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 16, 16, 128)       73856     
_________________________________________________________________
conv2d_3 (Conv2D)            (None, 16, 16, 128)       147584    
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 8, 8, 128)         0         
_________________________________________________________________
conv2d_4 (Conv2D)            (None, 8, 8, 256)         295168    
_________________________________________________________________
conv2d_5 (Conv2D)            (None, 8, 8, 256)         590080    
_________________________________________________________________
conv2d_6 (Conv2D)            (None, 8, 8, 256)         590080    
_________________________________________________________________
conv2d_7 (Conv2D)            (None, 8, 8, 256)         590080    
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 4, 4, 256)         0         
_________________________________________________________________
conv2d_8 (Conv2D)            (None, 4, 4, 512)         1180160   
_________________________________________________________________
conv2d_9 (Conv2D)            (None, 4, 4, 512)         2359808   
_________________________________________________________________
conv2d_10 (Conv2D)           (None, 4, 4, 512)         2359808   
_________________________________________________________________
conv2d_11 (Conv2D)           (None, 4, 4, 512)         2359808   
_________________________________________________________________
max_pooling2d_3 (MaxPooling2 (None, 2, 2, 512)         0         
_________________________________________________________________
conv2d_12 (Conv2D)           (None, 2, 2, 512)         2359808   
_________________________________________________________________
conv2d_13 (Conv2D)           (None, 2, 2, 512)         2359808   
_________________________________________________________________
conv2d_14 (Conv2D)           (None, 2, 2, 512)         2359808   
_________________________________________________________________
conv2d_15 (Conv2D)           (None, 2, 2, 512)         2359808   
_________________________________________________________________
max_pooling2d_4 (MaxPooling2 (None, 1, 1, 512)         0         
_________________________________________________________________
flatten (Flatten)            (None, 512)               0         
_________________________________________________________________
dense (Dense)                (None, 4096)              2101248   
_________________________________________________________________
dense_1 (Dense)              (None, 4096)              16781312  
_________________________________________________________________
dense_2 (Dense)              (None, 100)               409700    
=================================================================
Total params: 39,316,644
Trainable params: 39,316,644
Non-trainable params: 0
_________________________________________________________________

while for the model tf.keras.applications.VGG19(include_top=True,weights=None, input_shape=(32, 32, 3),classes=100)'

the summary is:

_________________________________________________________________
Model: "vgg19"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_2 (InputLayer)         [(None, 32, 32, 3)]       0         
_________________________________________________________________
block1_conv1 (Conv2D)        (None, 32, 32, 64)        1792      
_________________________________________________________________
block1_conv2 (Conv2D)        (None, 32, 32, 64)        36928     
_________________________________________________________________
block1_pool (MaxPooling2D)   (None, 16, 16, 64)        0         
_________________________________________________________________
block2_conv1 (Conv2D)        (None, 16, 16, 128)       73856     
_________________________________________________________________
block2_conv2 (Conv2D)        (None, 16, 16, 128)       147584    
_________________________________________________________________
block2_pool (MaxPooling2D)   (None, 8, 8, 128)         0         
_________________________________________________________________
block3_conv1 (Conv2D)        (None, 8, 8, 256)         295168    
_________________________________________________________________
block3_conv2 (Conv2D)        (None, 8, 8, 256)         590080    
_________________________________________________________________
block3_conv3 (Conv2D)        (None, 8, 8, 256)         590080    
_________________________________________________________________
block3_conv4 (Conv2D)        (None, 8, 8, 256)         590080    
_________________________________________________________________
block3_pool (MaxPooling2D)   (None, 4, 4, 256)         0         
_________________________________________________________________
block4_conv1 (Conv2D)        (None, 4, 4, 512)         1180160   
_________________________________________________________________
block4_conv2 (Conv2D)        (None, 4, 4, 512)         2359808   
_________________________________________________________________
block4_conv3 (Conv2D)        (None, 4, 4, 512)         2359808   
_________________________________________________________________
block4_conv4 (Conv2D)        (None, 4, 4, 512)         2359808   
_________________________________________________________________
block4_pool (MaxPooling2D)   (None, 2, 2, 512)         0         
_________________________________________________________________
block5_conv1 (Conv2D)        (None, 2, 2, 512)         2359808   
_________________________________________________________________
block5_conv2 (Conv2D)        (None, 2, 2, 512)         2359808   
_________________________________________________________________
block5_conv3 (Conv2D)        (None, 2, 2, 512)         2359808   
_________________________________________________________________
block5_conv4 (Conv2D)        (None, 2, 2, 512)         2359808   
_________________________________________________________________
block5_pool (MaxPooling2D)   (None, 1, 1, 512)         0         
_________________________________________________________________
flatten (Flatten)            (None, 512)               0         
_________________________________________________________________
fc1 (Dense)                  (None, 4096)              2101248   
_________________________________________________________________
fc2 (Dense)                  (None, 4096)              16781312  
_________________________________________________________________
predictions (Dense)          (None, 100)               409700    
=================================================================
Total params: 39,316,644
Trainable params: 39,316,644
Non-trainable params: 0
_________________________________________________________________

How can i add the layer

=================================================================
input_2 (InputLayer)         [(None, 32, 32, 3)]       0         

To get the same exact model? To me seems the only difference between the 2

Fanto
  • 339
  • 2
  • 11
  • 2
    Does this answer your question? [The input layer disappears from the structure of a deep learning model](https://stackoverflow.com/questions/54497422/the-input-layer-disappears-from-the-structure-of-a-deep-learning-model) – RoseGod Dec 02 '21 at 17:47

0 Answers0