Set up the initialiser function
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(*) | :: | input |
Name of initialiser or initialiser object |
|||
| integer, | intent(out), | optional | :: | error |
Error code |
Initialiser function
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