Set the hyperparameters for fully connected layer
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(recurrent_layer_type), | intent(inout) | :: | this |
Instance of the recurrent layer |
||
| integer, | intent(in) | :: | hidden_size |
Number of hidden units |
||
| logical, | intent(in) | :: | use_bias |
Whether to 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_recurrent( & this, hidden_size, & use_bias, & activation, & kernel_initialiser, bias_initialiser, & verbose & ) !! Set the hyperparameters for fully connected layer use athena__activation, only: activation_setup use athena__initialiser, only: get_default_initialiser, initialiser_setup implicit none ! Arguments class(recurrent_layer_type), intent(inout) :: this !! Instance of the recurrent layer integer, intent(in) :: hidden_size !! Number of hidden units logical, intent(in) :: use_bias !! Whether to 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=256) :: buffer this%name = "recu" this%type = "recurrent" this%input_rank = 1 this%output_rank = 1 this%use_bias = use_bias this%hidden_size = hidden_size 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(*,'("RECU activation function: ",A)') & trim(this%activation%name) write(*,'("RECU kernel initialiser: ",A)') & trim(this%kernel_init%name) write(*,'("RECU bias initialiser: ",A)') & trim(this%bias_init%name) end if end if end subroutine set_hyperparams_recurrent