Skip to main content
. 2023 Aug 16;23(16):7204. doi: 10.3390/s23167204
Algorithm 1: Our Modified Residual-Dense CNN Network Architecture
Step 1: Input: Training dataset, X; Corresponding labels, Y; Number of residual blocks, num_res_blocks
Number of dense blocks, num_dense_blocks; Number of layers within each residual block, num_res_layers; Number of layers within each dense block, num_dense_layers
Step 2: Output: Trained Residual-Dense Network model
Step 3: [Initialization]:
a. Define the input layer: Input layer: XInput, shape determined by dataset
b. Add an initial convolutional layer: Initial Convolutional Layer: Xconv=Conv1D(XInput, filters=63, kernel=3)
c. Add residual-dense blocks: Initialize Xcurrent=Xconv
Step 4: [Define Inner Residual Block]:
Repeat For k = 1 to num_res_blocks do:
a. Initialize a new Block: Block input: Xblock_input=Xcurrent
b. Repeat For I = 1 to num_res_layers do
Convolutional layer: Convolutional Layer:   XConv_i=Conv1D(blockInput, filters=63, kernel=3)
Batch normalization:  Bn_i=BatchNormalization(XConv_i)
Activation:  acti=ReLU(Bni)
c. Residual connection: Residual output: Xresidual=Xact_num_res_layers+XCurrent
d. Update Xcurrent=Xresidual
Step 5: [Define the Dense Block]:
Repeat For k =1 to num_dense_blocks do:
a. Initialize a new Block: Block input: Xblock_input=Xcurrent
b. Repeat For I= 1 to num_dense_layers do
Convolutional layer: Convolutional Layer: XConv_i=Conv1D(blockInput, filters=63, kernel=3)
Batch normalization:  Bn_i=BatchNormalization(XConv_i)
Activation:  acti=ReLU(Bni)
c. Concatenate with block input: output: Xconcat=Concatenate (Xblockinput,Xnum_dense_layers) 
d. Update Xcurrent=Xconcat
Step 6: Global Average Pooling and Fully Connected Layers:
Global average pooling: avg_pool=GlobalAvgPooling(Xcurrent)
Flatten layer: flt_layer=Flatten(avg_pool )
Fully-connected layers: dense=Dense(flt_layer, units=64, activation=ReLU)
Step 7: [Return Trained Residual-Dense Network model]