set_hyperparams_avgpool2d Subroutine

private subroutine set_hyperparams_avgpool2d(this, pool_size, stride, padding, verbose)

Uses

    • coreutils

Set hyperparameters for 2D average pooling layer

Type Bound

avgpool2d_layer_type

Arguments

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

Instance of the 2D average pooling layer

integer, intent(in), dimension(2) :: pool_size

Pool size

integer, intent(in), dimension(2) :: stride

Stride

character(len=*), intent(in), optional :: padding

Padding

integer, intent(in), optional :: verbose

Verbosity level


Source Code

  subroutine set_hyperparams_avgpool2d( &
       this, pool_size, stride, padding, verbose &
  )
    !! Set hyperparameters for 2D average pooling layer
    use coreutils, only: to_lower
    implicit none

    ! Arguments
    class(avgpool2d_layer_type), intent(inout) :: this
    !! Instance of the 2D average pooling layer
    integer, dimension(2), intent(in) :: pool_size
    !! Pool size
    integer, dimension(2), intent(in) :: stride
    !! Stride
    character(*), optional, intent(in) :: padding
    !! Padding
    integer, optional, intent(in) :: verbose
    !! Verbosity level

    ! Local variables
    character(len=20) :: padding_

    this%name = "avgpool2d"
    this%type = "pool"
    this%subtype = "avg"
    this%input_rank = 3
    this%output_rank = 3
    if(allocated(this%pool)) deallocate(this%pool)
    if(allocated(this%strd)) deallocate(this%strd)
    allocate( &
         this%pool(this%input_rank-1), &
         this%strd(this%input_rank-1) &
    )
    this%pool = pool_size
    this%strd = stride

    ! Handle padding
    if(present(padding))then
       padding_ = trim(adjustl(padding))
    else
       padding_ = "valid"
    end if

    select case(trim(adjustl(to_lower(padding_))))
    case("valid", "none", "")
    case default
       this%pad_layer = pad2d_layer_type( &
            padding = [ (this%pool-1)/2 ], &
            method = padding_ &
       )
    end select

  end subroutine set_hyperparams_avgpool2d