set_hyperparams_gno Subroutine

private subroutine set_hyperparams_gno(this, num_outputs, coord_dim, kernel_hidden, use_bias, activation, kernel_initialiser, bias_initialiser, verbose)

Type Bound

graph_nop_layer_type

Arguments

Type IntentOptional Attributes Name
class(graph_nop_layer_type), intent(inout) :: this

Layer instance to configure

integer, intent(in) :: num_outputs

Number of output node features

integer, intent(in) :: coord_dim

Dimension of edge coordinate features

integer, intent(in) :: kernel_hidden

Hidden width of the kernel MLP

logical, intent(in) :: use_bias

Whether to use a bias term

class(base_actv_type), intent(in), allocatable :: activation

Activation function object

class(base_init_type), intent(in), allocatable :: kernel_initialiser

Kernel and bias initialiser objects

class(base_init_type), intent(in), allocatable :: bias_initialiser

Kernel and bias initialiser objects

integer, intent(in), optional :: verbose

Verbosity level


Source Code

  subroutine set_hyperparams_gno( &
       this, num_outputs, coord_dim, kernel_hidden, &
       use_bias, &
       activation, &
       kernel_initialiser, bias_initialiser, &
       verbose &
  )
    use athena__activation, only: activation_setup
    use athena__initialiser, only: get_default_initialiser, initialiser_setup
    implicit none

    ! Arguments
    class(graph_nop_layer_type), intent(inout) :: this
    !! Layer instance to configure
    integer, intent(in) :: num_outputs
    !! Number of output node features
    integer, intent(in) :: coord_dim
    !! Dimension of edge coordinate features
    integer, intent(in) :: kernel_hidden
    !! Hidden width of the kernel MLP
    logical, intent(in) :: use_bias
    !! Whether to use a bias term
    class(base_actv_type), allocatable, intent(in) :: activation
    !! Activation function object
    class(base_init_type), allocatable, intent(in) :: &
         kernel_initialiser, bias_initialiser
    !! Kernel and bias initialiser objects
    integer, optional, intent(in) :: verbose
    !! Verbosity level

    ! Local variables
    character(len=256) :: buffer
    !! Buffer for default initialiser lookup

    this%name = "graph_nop"
    this%type = "gnop"
    this%input_rank = 2
    this%output_rank = 2
    this%use_graph_input = .true.
    this%use_graph_output = .true.
    this%use_bias = use_bias
    this%num_outputs = num_outputs
    this%coord_dim = coord_dim
    this%kernel_hidden = kernel_hidden
    this%num_time_steps = 1

    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(*,'("GRAPH_NOP activation: ",A)') &
               trim(this%activation%name)
       end if
    end if

  end subroutine set_hyperparams_gno