Set hyperparameters for 1D convolutional layer
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(conv1d_layer_type), | intent(inout) | :: | this |
Instance of the 1D convolutional layer |
||
| integer, | intent(in) | :: | num_filters |
Number of filters |
||
| integer, | intent(in), | dimension(1) | :: | kernel_size |
Kernel size, stride, dilation |
|
| integer, | intent(in), | dimension(1) | :: | stride |
Kernel size, stride, dilation |
|
| integer, | intent(in), | dimension(1) | :: | dilation |
Kernel size, stride, dilation |
|
| character(len=*), | intent(in) | :: | padding |
Padding |
||
| logical, | intent(in) | :: | use_bias |
Use bias |
||
| class(base_actv_type), | intent(in), | allocatable | :: | activation |
Activation function |
|
| class(base_init_type), | intent(in), | allocatable | :: | kernel_initialiser |
Kernel and bias initialisers |
|
| class(base_init_type), | intent(in), | allocatable | :: | bias_initialiser |
Kernel and bias initialisers |
|
| integer, | intent(in), | optional | :: | verbose |
Verbosity level |
subroutine set_hyperparams_conv1d( & this, & num_filters, & kernel_size, stride, dilation, & padding, & use_bias, & activation, & kernel_initialiser, bias_initialiser, & verbose & ) !! Set hyperparameters for 1D convolutional layer use athena__activation, only: activation_setup use athena__initialiser, only: get_default_initialiser, initialiser_setup use coreutils, only: to_lower implicit none ! Arguments class(conv1d_layer_type), intent(inout) :: this !! Instance of the 1D convolutional layer integer, intent(in) :: num_filters !! Number of filters integer, dimension(1), intent(in) :: kernel_size, stride, dilation !! Kernel size, stride, dilation character(*), intent(in) :: padding !! Padding logical, intent(in) :: use_bias !! Use bias class(base_actv_type), allocatable, intent(in) :: activation !! Activation function class(base_init_type), allocatable, intent(in) :: & kernel_initialiser, bias_initialiser !! Kernel and bias initialisers integer, optional, intent(in) :: verbose !! Verbosity level ! Local variables character(len=20) :: padding_ character(len=256) :: buffer this%name = "conv1d" this%type = "conv" this%input_rank = 2 this%output_rank = 2 this%use_bias = use_bias if(allocated(this%dil)) deallocate(this%dil) if(allocated(this%knl)) deallocate(this%knl) if(allocated(this%stp)) deallocate(this%stp) allocate( & this%dil(this%input_rank-1), & this%knl(this%input_rank-1), & this%stp(this%input_rank-1) & ) this%dil = dilation this%knl = kernel_size this%stp = stride this%num_filters = num_filters padding_ = trim(adjustl(padding)) select case(trim(adjustl(to_lower(padding_)))) case("valid", "none", "") case default this%pad_layer = pad1d_layer_type( & padding = [ (this%knl-1)/2 ], & method = padding_ & ) end select if(allocated(this%activation)) deallocate(this%activation) if(.not.allocated(activation))then this%activation = activation_setup("none") else allocate(this%activation, source=activation) end if if(allocated(this%kernel_init)) deallocate(this%kernel_init) if(.not.allocated(kernel_initialiser))then buffer = get_default_initialiser(this%activation%name) this%kernel_init = initialiser_setup(buffer) else allocate(this%kernel_init, source=kernel_initialiser) end if if(allocated(this%bias_init)) deallocate(this%bias_init) if(.not.allocated(bias_initialiser))then buffer = get_default_initialiser( & this%activation%name, & is_bias=.true. & ) this%bias_init = initialiser_setup(buffer) else allocate(this%bias_init, source=bias_initialiser) end if if(present(verbose))then if(abs(verbose).gt.0)then write(*,'("CONV1D activation function: ",A)') & trim(this%activation%name) write(*,'("CONV1D kernel initialiser: ",A)') & trim(this%kernel_init%name) write(*,'("CONV1D bias initialiser: ",A)') & trim(this%bias_init%name) end if end if end subroutine set_hyperparams_conv1d