initialiser_setup Function

public function initialiser_setup(input, error) result(initialiser)

Set up the initialiser function

Arguments

Type IntentOptional Attributes Name
class(*) :: input

Name of initialiser or initialiser object

integer, intent(out), optional :: error

Error code

Return Value class(base_init_type), allocatable

Initialiser function


Source Code

  function initialiser_setup(input, error) result(initialiser)
    !! Set up the initialiser function
    implicit none

    ! Arguments
    class(base_init_type), allocatable :: initialiser
    !! Initialiser function
    class(*) :: input
    !! Name of initialiser or initialiser object
    integer, optional, intent(out) :: error
    !! Error code

    ! Local variables
    character(256) :: err_msg
    !! Error message


    !---------------------------------------------------------------------------
    ! Set initialiser function
    !---------------------------------------------------------------------------
    select type(input)
    class is(base_init_type)
       initialiser = input
    type is(character(*))
       select case(trim(to_lower(input)))
       case("glorot_uniform")
          initialiser = glorot_uniform_init_type()
       case("glorot_normal")
          initialiser = glorot_normal_init_type()
       case("he_uniform")
          initialiser = he_uniform_init_type()
       case("he_normal")
          initialiser = he_normal_init_type()
       case("lecun_uniform")
          initialiser = lecun_uniform_init_type()
       case("lecun_normal")
          initialiser = lecun_normal_init_type()
       case("ones")
          initialiser = ones_init_type()
       case("zeros")
          initialiser = zeros_init_type()
       case("ident")
          initialiser = ident_init_type()
       case("gaussian")
          initialiser = gaussian_init_type()
       case("normal")
          initialiser = gaussian_init_type(name="normal")
       case default
          if(present(error))then
             error = -1
             return
          else
             write(err_msg,'("Incorrect initialiser name given ''",A,"''")') &
                  trim(to_lower(input))
             call stop_program(trim(err_msg))
             return
          end if
       end select
    class default
       if(present(error))then
          error = -1
          return
       else
          write(err_msg,'("Unknown input type given for initialiser setup")')
          call stop_program(trim(err_msg))
          return
       end if
    end select

  end function initialiser_setup