generate_dropout_mask Subroutine

private subroutine generate_dropout_mask(this)

Generate dropout mask

Type Bound

dropout_layer_type

Arguments

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

Instance of the dropout layer


Source Code

  subroutine generate_dropout_mask(this)
    !! Generate dropout mask
    implicit none

    ! Arguments
    class(dropout_layer_type), intent(inout) :: this
    !! Instance of the dropout layer

    ! Local variables
    real(real32), allocatable, dimension(:,:) :: mask_real
    !! Real mask

    ! Generate masks
    !---------------------------------------------------------------------------
    allocate(mask_real(size(this%mask,1), size(this%mask,2)))
    call random_number(mask_real)  !  Generate random values in [0..1]
    this%mask = mask_real .gt. this%rate

    this%idx = 0

  end subroutine generate_dropout_mask