--- Model loaded from: H5 file: /home/honormagicbook14/Projects/PyCharm/signxai-0.1.0/examples/data/models/tensorflow/VGG16/model.h5 ---
--- Model Summary (model.summary()) ---
Model: "vgg16"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 input_1 (InputLayer)        [(None, 224, 224, 3)]     0         
                                                                 
 block1_conv1 (Conv2D)       (None, 224, 224, 64)      1792      
                                                                 
 block1_conv2 (Conv2D)       (None, 224, 224, 64)      36928     
                                                                 
 block1_pool (MaxPooling2D)  (None, 112, 112, 64)      0         
                                                                 
 block2_conv1 (Conv2D)       (None, 112, 112, 128)     73856     
                                                                 
 block2_conv2 (Conv2D)       (None, 112, 112, 128)     147584    
                                                                 
 block2_pool (MaxPooling2D)  (None, 56, 56, 128)       0         
                                                                 
 block3_conv1 (Conv2D)       (None, 56, 56, 256)       295168    
                                                                 
 block3_conv2 (Conv2D)       (None, 56, 56, 256)       590080    
                                                                 
 block3_conv3 (Conv2D)       (None, 56, 56, 256)       590080    
                                                                 
 block3_pool (MaxPooling2D)  (None, 28, 28, 256)       0         
                                                                 
 block4_conv1 (Conv2D)       (None, 28, 28, 512)       1180160   
                                                                 
 block4_conv2 (Conv2D)       (None, 28, 28, 512)       2359808   
                                                                 
 block4_conv3 (Conv2D)       (None, 28, 28, 512)       2359808   
                                                                 
 block4_pool (MaxPooling2D)  (None, 14, 14, 512)       0         
                                                                 
 block5_conv1 (Conv2D)       (None, 14, 14, 512)       2359808   
                                                                 
 block5_conv2 (Conv2D)       (None, 14, 14, 512)       2359808   
                                                                 
 block5_conv3 (Conv2D)       (None, 14, 14, 512)       2359808   
                                                                 
 block5_pool (MaxPooling2D)  (None, 7, 7, 512)         0         
                                                                 
 flatten (Flatten)           (None, 25088)             0         
                                                                 
 fc1 (Dense)                 (None, 4096)              102764544 
                                                                 
 fc2 (Dense)                 (None, 4096)              16781312  
                                                                 
 predictions (Dense)         (None, 1000)              4097000   
                                                                 
=================================================================
Total params: 138,357,544
Trainable params: 138,357,544
Non-trainable params: 0
_________________________________________________________________

==================================================

--- Detailed Layer Information (model.layers) ---
Layer 0: input_1 (Type: InputLayer)
  Config: {'batch_input_shape': (None, 224, 224, 3), 'dtype': 'float32', 'sparse': False, 'ragged': False, 'name': 'input_1'}
  Input shape: [(None, 224, 224, 3)]
  Output shape: [(None, 224, 224, 3)]
------------------------------
Layer 1: block1_conv1 (Type: Conv2D)
  Config: {'name': 'block1_conv1', 'trainable': True, 'dtype': 'float32', 'filters': 64, 'kernel_size': (3, 3), 'strides': (1, 1), 'padding': 'same', 'data_format': 'channels_last', 'dilation_rate': (1, 1), 'groups': 1, 'activation': 'relu', 'use_bias': True, 'kernel_initializer': {'class_name': 'GlorotUniform', 'config': {'seed': None}}, 'bias_initializer': {'class_name': 'Zeros', 'config': {}}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}
  Input shape: (None, 224, 224, 3)
  Output shape: (None, 224, 224, 64)
------------------------------
Layer 2: block1_conv2 (Type: Conv2D)
  Config: {'name': 'block1_conv2', 'trainable': True, 'dtype': 'float32', 'filters': 64, 'kernel_size': (3, 3), 'strides': (1, 1), 'padding': 'same', 'data_format': 'channels_last', 'dilation_rate': (1, 1), 'groups': 1, 'activation': 'relu', 'use_bias': True, 'kernel_initializer': {'class_name': 'GlorotUniform', 'config': {'seed': None}}, 'bias_initializer': {'class_name': 'Zeros', 'config': {}}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}
  Input shape: (None, 224, 224, 64)
  Output shape: (None, 224, 224, 64)
  --- Weights for layer: block1_conv2 ---
    Kernel shape: (3, 3, 64, 64)
    Kernel mean: 0.004912, std: 0.042478
    Kernel min: -0.215613, max: 0.289171
    Kernel (first 10 flattened values): [ 0.16621928  0.14270182 -0.00402113  0.04951802 -0.0304937   0.04339976
 -0.06351361  0.0177111   0.00093653  0.07446413]
    Kernel saved to: /home/honormagicbook14/Projects/PyCharm/signxai-0.1.0/utils/output/block1_conv2_tf_kernel.npy
    Bias shape: (64,)
    Bias mean: 0.058556, std: 0.334784
    Bias min: -1.027151, max: 0.905218
    Bias (first 10 values): [-0.30912212  0.36397225  0.13737613  0.07717966  0.9052184   0.08885256
  0.10789118 -0.23106739 -0.6318097   0.18161367]
    Bias saved to: /home/honormagicbook14/Projects/PyCharm/signxai-0.1.0/utils/output/block1_conv2_tf_bias.npy
  --- End Weights for layer: block1_conv2 ---
------------------------------
Layer 3: block1_pool (Type: MaxPooling2D)
  Config: {'name': 'block1_pool', 'trainable': True, 'dtype': 'float32', 'pool_size': (2, 2), 'padding': 'valid', 'strides': (2, 2), 'data_format': 'channels_last'}
  Input shape: (None, 224, 224, 64)
  Output shape: (None, 112, 112, 64)
------------------------------
Layer 4: block2_conv1 (Type: Conv2D)
  Config: {'name': 'block2_conv1', 'trainable': True, 'dtype': 'float32', 'filters': 128, 'kernel_size': (3, 3), 'strides': (1, 1), 'padding': 'same', 'data_format': 'channels_last', 'dilation_rate': (1, 1), 'groups': 1, 'activation': 'relu', 'use_bias': True, 'kernel_initializer': {'class_name': 'GlorotUniform', 'config': {'seed': None}}, 'bias_initializer': {'class_name': 'Zeros', 'config': {}}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}
  Input shape: (None, 112, 112, 64)
  Output shape: (None, 112, 112, 128)
------------------------------
Layer 5: block2_conv2 (Type: Conv2D)
  Config: {'name': 'block2_conv2', 'trainable': True, 'dtype': 'float32', 'filters': 128, 'kernel_size': (3, 3), 'strides': (1, 1), 'padding': 'same', 'data_format': 'channels_last', 'dilation_rate': (1, 1), 'groups': 1, 'activation': 'relu', 'use_bias': True, 'kernel_initializer': {'class_name': 'GlorotUniform', 'config': {'seed': None}}, 'bias_initializer': {'class_name': 'Zeros', 'config': {}}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}
  Input shape: (None, 112, 112, 128)
  Output shape: (None, 112, 112, 128)
------------------------------
Layer 6: block2_pool (Type: MaxPooling2D)
  Config: {'name': 'block2_pool', 'trainable': True, 'dtype': 'float32', 'pool_size': (2, 2), 'padding': 'valid', 'strides': (2, 2), 'data_format': 'channels_last'}
  Input shape: (None, 112, 112, 128)
  Output shape: (None, 56, 56, 128)
------------------------------
Layer 7: block3_conv1 (Type: Conv2D)
  Config: {'name': 'block3_conv1', 'trainable': True, 'dtype': 'float32', 'filters': 256, 'kernel_size': (3, 3), 'strides': (1, 1), 'padding': 'same', 'data_format': 'channels_last', 'dilation_rate': (1, 1), 'groups': 1, 'activation': 'relu', 'use_bias': True, 'kernel_initializer': {'class_name': 'GlorotUniform', 'config': {'seed': None}}, 'bias_initializer': {'class_name': 'Zeros', 'config': {}}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}
  Input shape: (None, 56, 56, 128)
  Output shape: (None, 56, 56, 256)
------------------------------
Layer 8: block3_conv2 (Type: Conv2D)
  Config: {'name': 'block3_conv2', 'trainable': True, 'dtype': 'float32', 'filters': 256, 'kernel_size': (3, 3), 'strides': (1, 1), 'padding': 'same', 'data_format': 'channels_last', 'dilation_rate': (1, 1), 'groups': 1, 'activation': 'relu', 'use_bias': True, 'kernel_initializer': {'class_name': 'GlorotUniform', 'config': {'seed': None}}, 'bias_initializer': {'class_name': 'Zeros', 'config': {}}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}
  Input shape: (None, 56, 56, 256)
  Output shape: (None, 56, 56, 256)
------------------------------
Layer 9: block3_conv3 (Type: Conv2D)
  Config: {'name': 'block3_conv3', 'trainable': True, 'dtype': 'float32', 'filters': 256, 'kernel_size': (3, 3), 'strides': (1, 1), 'padding': 'same', 'data_format': 'channels_last', 'dilation_rate': (1, 1), 'groups': 1, 'activation': 'relu', 'use_bias': True, 'kernel_initializer': {'class_name': 'GlorotUniform', 'config': {'seed': None}}, 'bias_initializer': {'class_name': 'Zeros', 'config': {}}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}
  Input shape: (None, 56, 56, 256)
  Output shape: (None, 56, 56, 256)
------------------------------
Layer 10: block3_pool (Type: MaxPooling2D)
  Config: {'name': 'block3_pool', 'trainable': True, 'dtype': 'float32', 'pool_size': (2, 2), 'padding': 'valid', 'strides': (2, 2), 'data_format': 'channels_last'}
  Input shape: (None, 56, 56, 256)
  Output shape: (None, 28, 28, 256)
------------------------------
Layer 11: block4_conv1 (Type: Conv2D)
  Config: {'name': 'block4_conv1', 'trainable': True, 'dtype': 'float32', 'filters': 512, 'kernel_size': (3, 3), 'strides': (1, 1), 'padding': 'same', 'data_format': 'channels_last', 'dilation_rate': (1, 1), 'groups': 1, 'activation': 'relu', 'use_bias': True, 'kernel_initializer': {'class_name': 'GlorotUniform', 'config': {'seed': None}}, 'bias_initializer': {'class_name': 'Zeros', 'config': {}}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}
  Input shape: (None, 28, 28, 256)
  Output shape: (None, 28, 28, 512)
------------------------------
Layer 12: block4_conv2 (Type: Conv2D)
  Config: {'name': 'block4_conv2', 'trainable': True, 'dtype': 'float32', 'filters': 512, 'kernel_size': (3, 3), 'strides': (1, 1), 'padding': 'same', 'data_format': 'channels_last', 'dilation_rate': (1, 1), 'groups': 1, 'activation': 'relu', 'use_bias': True, 'kernel_initializer': {'class_name': 'GlorotUniform', 'config': {'seed': None}}, 'bias_initializer': {'class_name': 'Zeros', 'config': {}}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}
  Input shape: (None, 28, 28, 512)
  Output shape: (None, 28, 28, 512)
------------------------------
Layer 13: block4_conv3 (Type: Conv2D)
  Config: {'name': 'block4_conv3', 'trainable': True, 'dtype': 'float32', 'filters': 512, 'kernel_size': (3, 3), 'strides': (1, 1), 'padding': 'same', 'data_format': 'channels_last', 'dilation_rate': (1, 1), 'groups': 1, 'activation': 'relu', 'use_bias': True, 'kernel_initializer': {'class_name': 'GlorotUniform', 'config': {'seed': None}}, 'bias_initializer': {'class_name': 'Zeros', 'config': {}}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}
  Input shape: (None, 28, 28, 512)
  Output shape: (None, 28, 28, 512)
------------------------------
Layer 14: block4_pool (Type: MaxPooling2D)
  Config: {'name': 'block4_pool', 'trainable': True, 'dtype': 'float32', 'pool_size': (2, 2), 'padding': 'valid', 'strides': (2, 2), 'data_format': 'channels_last'}
  Input shape: (None, 28, 28, 512)
  Output shape: (None, 14, 14, 512)
------------------------------
Layer 15: block5_conv1 (Type: Conv2D)
  Config: {'name': 'block5_conv1', 'trainable': True, 'dtype': 'float32', 'filters': 512, 'kernel_size': (3, 3), 'strides': (1, 1), 'padding': 'same', 'data_format': 'channels_last', 'dilation_rate': (1, 1), 'groups': 1, 'activation': 'relu', 'use_bias': True, 'kernel_initializer': {'class_name': 'GlorotUniform', 'config': {'seed': None}}, 'bias_initializer': {'class_name': 'Zeros', 'config': {}}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}
  Input shape: (None, 14, 14, 512)
  Output shape: (None, 14, 14, 512)
------------------------------
Layer 16: block5_conv2 (Type: Conv2D)
  Config: {'name': 'block5_conv2', 'trainable': True, 'dtype': 'float32', 'filters': 512, 'kernel_size': (3, 3), 'strides': (1, 1), 'padding': 'same', 'data_format': 'channels_last', 'dilation_rate': (1, 1), 'groups': 1, 'activation': 'relu', 'use_bias': True, 'kernel_initializer': {'class_name': 'GlorotUniform', 'config': {'seed': None}}, 'bias_initializer': {'class_name': 'Zeros', 'config': {}}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}
  Input shape: (None, 14, 14, 512)
  Output shape: (None, 14, 14, 512)
------------------------------
Layer 17: block5_conv3 (Type: Conv2D)
  Config: {'name': 'block5_conv3', 'trainable': True, 'dtype': 'float32', 'filters': 512, 'kernel_size': (3, 3), 'strides': (1, 1), 'padding': 'same', 'data_format': 'channels_last', 'dilation_rate': (1, 1), 'groups': 1, 'activation': 'relu', 'use_bias': True, 'kernel_initializer': {'class_name': 'GlorotUniform', 'config': {'seed': None}}, 'bias_initializer': {'class_name': 'Zeros', 'config': {}}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}
  Input shape: (None, 14, 14, 512)
  Output shape: (None, 14, 14, 512)
------------------------------
Layer 18: block5_pool (Type: MaxPooling2D)
  Config: {'name': 'block5_pool', 'trainable': True, 'dtype': 'float32', 'pool_size': (2, 2), 'padding': 'valid', 'strides': (2, 2), 'data_format': 'channels_last'}
  Input shape: (None, 14, 14, 512)
  Output shape: (None, 7, 7, 512)
------------------------------
Layer 19: flatten (Type: Flatten)
  Config: {'name': 'flatten', 'trainable': True, 'dtype': 'float32', 'data_format': 'channels_last'}
  Input shape: (None, 7, 7, 512)
  Output shape: (None, 25088)
------------------------------
Layer 20: fc1 (Type: Dense)
  Config: {'name': 'fc1', 'trainable': True, 'dtype': 'float32', 'units': 4096, 'activation': 'relu', 'use_bias': True, 'kernel_initializer': {'class_name': 'GlorotUniform', 'config': {'seed': None}}, 'bias_initializer': {'class_name': 'Zeros', 'config': {}}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}
  Input shape: (None, 25088)
  Output shape: (None, 4096)
------------------------------
Layer 21: fc2 (Type: Dense)
  Config: {'name': 'fc2', 'trainable': True, 'dtype': 'float32', 'units': 4096, 'activation': 'relu', 'use_bias': True, 'kernel_initializer': {'class_name': 'GlorotUniform', 'config': {'seed': None}}, 'bias_initializer': {'class_name': 'Zeros', 'config': {}}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}
  Input shape: (None, 4096)
  Output shape: (None, 4096)
------------------------------
Layer 22: predictions (Type: Dense)
  Config: {'name': 'predictions', 'trainable': True, 'dtype': 'float32', 'units': 1000, 'activation': 'linear', 'use_bias': True, 'kernel_initializer': {'class_name': 'GlorotUniform', 'config': {'seed': None}}, 'bias_initializer': {'class_name': 'Zeros', 'config': {}}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}
  Input shape: (None, 4096)
  Output shape: (None, 1000)
------------------------------

==================================================

--- Overall Model Input/Output ---
Model Inputs: [<KerasTensor: shape=(None, 224, 224, 3) dtype=float32 (created by layer 'input_1')>]
Model Outputs: [<KerasTensor: shape=(None, 1000) dtype=float32 (created by layer 'predictions')>]
