activation_setup Function

public function activation_setup(input, error) result(activation)

Setup the desired activation function

Arguments

Type IntentOptional Attributes Name
class(*), intent(in) :: input

Name of the activation function or activation object

integer, intent(out), optional :: error

Error code

Return Value class(base_actv_type), allocatable

Activation function object


Source Code

  function activation_setup(input, error) result(activation)
    !! Setup the desired activation function
    implicit none

    ! Arguments
    class(*), intent(in) :: input
    !! Name of the activation function or activation object
    class(base_actv_type), allocatable :: activation
    !! Activation function object
    integer, optional, intent(out) :: error
    !! Error code

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


    !---------------------------------------------------------------------------
    ! select desired activation function
    !---------------------------------------------------------------------------
    select type(input)
    class is(base_actv_type)
       activation = input
    type is(character(*))
       select case(trim(to_lower(input)))
       case("gaussian")
          activation = gaussian_actv_type()
       case ("linear")
          activation = linear_actv_type()
       case ("piecewise")
          activation = piecewise_actv_type()
       case ("relu")
          activation = relu_actv_type()
       case ("leaky_relu")
          activation = leaky_relu_actv_type()
       case ("sigmoid")
          activation = sigmoid_actv_type()
       case ("softmax")
          activation = softmax_actv_type()
       case("swish")
          activation = swish_actv_type()
       case ("tanh")
          activation = tanh_actv_type()
       case ("none")
          activation = none_actv_type()
       case ("selu")
          activation = selu_actv_type()
       case ("silu")
          activation = swish_actv_type()
       case default
          if(present(error))then
             error = -1
             return
          else
             write(err_msg,'("Incorrect activation name given ''",A,"''")') &
                  trim(to_lower(input))
             call stop_program(trim(err_msg))
             write(*,*) "BB"
             return
          end if
       end select
    class default
       if(present(error))then
          error = -1
          return
       else
          write(err_msg,'("Unknown input type given for activation setup")')
          call stop_program(trim(err_msg))
          return
       end if
    end select

  end function activation_setup