Table 2 DPCNN model architecture.
From: Sign language recognition based on dual-path background erasure convolutional neural network
Layer (type) | Output shape | Param # | Connected to |
|---|---|---|---|
input_1 (InputLayer) | [(None, 50, 50, 3)] | 0 | Â |
input2_c1 (Conv2D) | (None, 50, 50, 16) | 448 | input_1[0][0] |
input1_c1 (Conv2D) | (None, 50, 50, 16) | 448 | input_1[0][0] |
tf.math.negative (TFOpLambda) | (None, 50, 50, 16) | 0 | input2_c1[0][0] |
add (Add) | (None, 50, 50, 16) | 0 | input1_c1[0][0] |
tf.math.negative[0][0] | |||
batch_normalization_1 (BatchNormalization) | (None, 50, 50, 16) | 64 | input2_c1[0][0] |
batch_normalization(BatchNormalization) | (None, 50, 50, 16) | 64 | add[0][0] |
max_pooling2d (MaxPooling2D) | (None, 25, 25, 16) | 0 | batch_normalization_1[0][0] |
average_pooling2d (AveragePooling2D) | (None, 25, 25, 16) | 0 | batch_normalization[0][0] |
input2_c2 (Conv2D) | (None, 25, 25, 32) | 4640 | max_pooling2d[0][0] |
input1_c2 (Conv2D) | (None, 25, 25, 32) | 4640 | average_pooling2d[0][0] |
tf.math.negative_1 (TFOpLambda) | (None, 25, 25, 32) | 0 | input2_c2[0][0] |
add_1 (Add) | (None, 25, 25, 32) | 0 | input1_c2[0][0] |
tf.math.negative_1[0][0] | |||
batch_normalization_3(BatchNormalization) | (None, 25, 25, 32) | 128 | input2_c2[0][0] |
batch_normalization_2(BatchNormalization) | (None, 25, 25, 32) | 128 | add_1[0][0] |
max_pooling2d_1 (MaxPooling2D) | (None, 12, 12, 32) | 0 | batch_normalization_3[0][0] |
average_pooling2d_1 (AveragePooling2D) | (None, 12, 12, 32) | 0 | batch_normalization_2[0][0] |
input2_c3 (Conv2D) | (None, 12, 12, 32) | 9248 | max_pooling2d_1[0][0] |
input1_c3 (Conv2D) | (None, 12, 12, 32) | 9248 | average_pooling2d_1[0][0] |
tf.math.negative_2 (TFOpLambda) | (None, 12, 12, 32) | 0 | input2_c3[0][0] |
add_2 (Add) | (None, 12, 12, 32) | 0 | input1_c3[0][0] |
tf.math.negative_2[0][0] | |||
batch_normalization_5(BatchNormalization) | (None, 12, 12, 32) | 128 | input2_c3[0][0] |
batch_normalization_4 (BatchNormalization) | (None, 12, 12, 32) | 128 | add_2[0][0] |
max_pooling2d_2 (MaxPooling2D) | (None, 6, 6, 32) | 0 | batch_normalization_5[0][0] |
average_pooling2d_2 (AveragePooling2D) | (None, 6, 6, 32) | 0 | batch_normalization_4[0][0] |
input2_c4 (Conv2D) | (None, 6, 6, 16) | 4624 | max_pooling2d_2[0][0] |
input1_c4 (Conv2D) | (None, 6, 6, 16) | 4624 | average_pooling2d_2[0][0] |
tf.math.negative_3 (TFOpLambda) | (None, 6, 6, 16) | 0 | input2_c4[0][0] |
add_3 (Add) | (None, 6, 6, 16) | 0 | input1_c4[0][0] |
tf.math.negative_3[0][0] | |||
batch_normalization_6(BatchNormalization) | (None, 6, 6, 16) | 64 | add_3[0][0] |
average_pooling2d_3 (AveragePooling2D) | (None, 3, 3, 16) | 0 | batch_normalization_6[0][0] |
flatten (Flatten) | (None, 144) | 0 | average_pooling2d_3[0][0] |
dense (Dense) | (None, 128) | 18560 | flatten[0][0] |
alpha_dropout (AlphaDropout) | (None, 128) | 0 | dense[0][0] |
dense_1 (Dense) | (None, 24) | 3096 | alpha_dropout[0][0] |
Total params: 60,280 | |||
Trainable params: 59,928 | |||
Non-trainable params: 352 | |||