Network Configuration
#Input Image SIze
IMG_H           = 224
IMG_W           = 224

##Layer Block-1
#2D Convolution-1
#Kernel Size
CV1_K_H         = 5
CV1_K_W         = 5
#Number of Channels
CV1_K_C         = 3
#Stride Factor
CV1_STRIDE      = 2
CV1_DILATION    = 1
CV1_BIAS        = True
#Output Size (No-Padding)
CV1_H           = Out_Size(kernel_size=CV1_K_H, in_size=IMG_H, padding_size=0, stride_factor=CV1_STRIDE, dilation_factor=CV1_DILATION)
CV1_W           = Out_Size(kernel_size=CV1_K_W, in_size=IMG_W, padding_size=0, stride_factor=CV1_STRIDE, dilation_factor=CV1_DILATION)

#2D Pooling-1
#Kernel Size
PL1_K_H         = 5
PL1_K_W         = 5
#Stride Factor
PL1_STRIDE      = 1
#Output Size (No-Padding)
PL1_H           = Out_Size(kernel_size=PL1_K_H, in_size=CV1_H, padding_size=0, stride_factor=PL1_STRIDE)
PL1_W           = Out_Size(kernel_size=PL1_K_W, in_size=CV1_W, padding_size=0, stride_factor=PL1_STRIDE)


##Layer Block-2
#2D Convolution-2
#Kernel Size
CV2_K_H         = 3
CV2_K_W         = 3
#Number of Channels
CV2_K_C         = 9
#Stride Factor
CV2_STRIDE      = 2
CV2_DILATION    = 1
CV2_BIAS        = True
#Output Size (No-Padding)
CV2_H           = Out_Size(kernel_size=CV2_K_H, in_size=PL1_H, padding_size=0, stride_factor=CV2_STRIDE, dilation_factor=CV2_DILATION)
CV2_W           = Out_Size(kernel_size=CV2_K_W, in_size=PL1_W, padding_size=0, stride_factor=CV2_STRIDE, dilation_factor=CV2_DILATION)

#2D Pooling-2
#Kernel Size
PL2_K_H         = 3
PL2_K_W         = 3
#Stride Factor
PL2_STRIDE      = 1
#Output Size (No-Padding)
PL2_H           = Out_Size(kernel_size=PL2_K_H, in_size=CV2_H, padding_size=0, stride_factor=PL2_STRIDE)
PL2_W           = Out_Size(kernel_size=PL2_K_W, in_size=CV2_W, padding_size=0, stride_factor=PL2_STRIDE)


##Layer Block-3
#2D Convolution-3
#Kernel Size
CV3_K_H         = 1
CV3_K_W         = 1
#Number of Channels
CV3_K_C         = 3
#Stride Factor
CV3_STRIDE      = 2
CV3_DILATION    = 1
CV3_BIAS        = True
#Output Size (No-Padding)
CV3_H           = Out_Size(kernel_size=CV3_K_H, in_size=PL2_H, padding_size=0, stride_factor=CV3_STRIDE, dilation_factor=CV3_DILATION)
CV3_W           = Out_Size(kernel_size=CV3_K_W, in_size=PL2_W, padding_size=0, stride_factor=CV3_STRIDE, dilation_factor=CV3_DILATION)

#2D Pooling-3
#Kernel Size
PL3_K_H         = 3
PL3_K_W         = 3
#Stride Factor
PL3_STRIDE      = 1
#Output Size (No-Padding)
PL3_H           = Out_Size(kernel_size=PL3_K_H, in_size=CV3_H, padding_size=0, stride_factor=PL3_STRIDE)
PL3_W           = Out_Size(kernel_size=PL3_K_W, in_size=CV3_W, padding_size=0, stride_factor=PL3_STRIDE)


##Layer Block-4
#Fully-Connection-1
#Input Size
FC1_SIZE_IN     = (PL3_H * PL3_W * CV3_K_C)
#Output Size
FC1_SIZE_OUT    = (PL3_H * PL3_W)
#Bias
FC1_BIAS        = True

#Fully-Connection-2
#Input Size
FC2_SIZE_IN     = (PL3_H * PL3_W)
#Output Size
FC2_SIZE_OUT    = int(np.ceil(PL3_H * PL3_W / (CV3_K_C * CV3_K_C)))
#Bias
FC2_BIAS        = True

#Fully-Connection-3
#Input Size
FC3_SIZE_IN     = FC2_SIZE_OUT
#Output Size
FC3_SIZE_OUT    = NUM_CLASS
#Bias
FC3_BIAS        = True