Set hyperparameters for 2D batch normalisation layer
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(batchnorm2d_layer_type), | intent(inout) | :: | this |
Instance of the 2D batch normalisation layer |
||
| real(kind=real32), | intent(in) | :: | momentum |
Momentum and epsilon |
||
| real(kind=real32), | intent(in) | :: | epsilon |
Momentum and epsilon |
||
| real(kind=real32), | intent(in) | :: | gamma_init_mean |
Gamma initialisation mean and standard deviation |
||
| real(kind=real32), | intent(in) | :: | gamma_init_std |
Gamma initialisation mean and standard deviation |
||
| real(kind=real32), | intent(in) | :: | beta_init_mean |
Beta initialisation mean and standard deviation |
||
| real(kind=real32), | intent(in) | :: | beta_init_std |
Beta initialisation mean and standard deviation |
||
| class(base_init_type), | intent(in), | allocatable | :: | gamma_initialiser |
Gamma and beta initialisers |
|
| class(base_init_type), | intent(in), | allocatable | :: | beta_initialiser |
Gamma and beta initialisers |
|
| class(base_init_type), | intent(in), | allocatable | :: | moving_mean_initialiser |
Moving mean and variance initialisers |
|
| class(base_init_type), | intent(in), | allocatable | :: | moving_variance_initialiser |
Moving mean and variance initialisers |
|
| integer, | intent(in), | optional | :: | verbose |
Verbosity level |
subroutine set_hyperparams_batchnorm2d( & this, & momentum, epsilon, & gamma_init_mean, gamma_init_std, & beta_init_mean, beta_init_std, & gamma_initialiser, beta_initialiser, & moving_mean_initialiser, moving_variance_initialiser, & verbose ) !! Set hyperparameters for 2D batch normalisation layer use athena__initialiser, only: initialiser_setup implicit none ! Arguments class(batchnorm2d_layer_type), intent(inout) :: this !! Instance of the 2D batch normalisation layer real(real32), intent(in) :: momentum, epsilon !! Momentum and epsilon real(real32), intent(in) :: gamma_init_mean, gamma_init_std !! Gamma initialisation mean and standard deviation real(real32), intent(in) :: beta_init_mean, beta_init_std !! Beta initialisation mean and standard deviation class(base_init_type), allocatable, intent(in) :: & gamma_initialiser, beta_initialiser !! Gamma and beta initialisers class(base_init_type), allocatable, intent(in) :: & moving_mean_initialiser, moving_variance_initialiser !! Moving mean and variance initialisers integer, optional, intent(in) :: verbose !! Verbosity level this%name = "batchnorm2d" this%type = "batc" this%input_rank = 3 this%output_rank = 3 this%use_bias = .true. this%momentum = momentum this%epsilon = epsilon if(allocated(this%kernel_init)) deallocate(this%kernel_init) if(.not.allocated(gamma_initialiser))then this%kernel_init = initialiser_setup('ones') else allocate(this%kernel_init, source=gamma_initialiser) end if if(allocated(this%bias_init)) deallocate(this%bias_init) if(.not.allocated(beta_initialiser))then this%bias_init = initialiser_setup('zeros') else allocate(this%bias_init, source=beta_initialiser) end if if(.not.allocated(moving_mean_initialiser))then this%moving_mean_init = initialiser_setup('zeros') else this%moving_mean_init = moving_mean_initialiser end if if(.not.allocated(moving_variance_initialiser))then this%moving_variance_init = initialiser_setup('ones') else this%moving_variance_init = moving_variance_initialiser end if this%gamma_init_mean = gamma_init_mean this%gamma_init_std = gamma_init_std this%beta_init_mean = beta_init_mean this%beta_init_std = beta_init_std this%kernel_init%mean = this%gamma_init_mean this%kernel_init%std = this%gamma_init_std this%bias_init%mean = this%beta_init_mean this%bias_init%std = this%beta_init_std if(present(verbose))then if(abs(verbose).gt.0)then write(*,'("BATCHNORM2D gamma (kernel) initialiser: ",A)') & trim(this%kernel_init%name) write(*,'("BATCHNORM2D beta (bias) initialiser: ",A)') & trim(this%bias_init%name) write(*,'("BATCHNORM2D moving mean initialiser: ",A)') & trim(this%moving_mean_init%name) write(*,'("BATCHNORM2D moving variance initialiser: ",A)') & trim(this%moving_variance_init%name) end if end if end subroutine set_hyperparams_batchnorm2d