trainable_engine_t Derived Type

type, public :: trainable_engine_t

Encapsulate the information needed to perform training


Inherits

type~~trainable_engine_t~~InheritsGraph type~trainable_engine_t trainable_engine_t string_t string_t type~trainable_engine_t->string_t metadata_ type~differentiable_activation_strategy_t differentiable_activation_strategy_t type~trainable_engine_t->type~differentiable_activation_strategy_t differentiable_activation_strategy_ type~tensor_range_t tensor_range_t type~trainable_engine_t->type~tensor_range_t input_range_, output_range_ type~activation_strategy_t activation_strategy_t type~differentiable_activation_strategy_t->type~activation_strategy_t

Components

Type Visibility Attributes Name Initial
real(kind=rkind), private, allocatable :: b(:,:)
class(differentiable_activation_strategy_t), private, allocatable :: differentiable_activation_strategy_
type(tensor_range_t), private :: input_range_
type(string_t), private, allocatable :: metadata_(:)
integer, private, allocatable :: n(:)
type(tensor_range_t), private :: output_range_
real(kind=rkind), private, allocatable :: w(:,:,:)

Constructor

public interface trainable_engine_t

  • private pure module function construct_from_inference_engine(inference_engine) result(trainable_engine)

    Arguments

    Type IntentOptional Attributes Name
    type(inference_engine_t), intent(in) :: inference_engine

    Return Value type(trainable_engine_t)

  • private pure module function construct_from_padded_arrays(nodes, weights, biases, differentiable_activation_strategy, metadata, input_range, output_range) result(trainable_engine)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: nodes(input_layer:)
    real(kind=rkind), intent(in) :: weights(:,:,:)
    real(kind=rkind), intent(in) :: biases(:,:)
    class(differentiable_activation_strategy_t), intent(in) :: differentiable_activation_strategy
    type(string_t), intent(in) :: metadata(:)
    type(tensor_range_t), intent(in), optional :: input_range
    type(tensor_range_t), intent(in), optional :: output_range

    Return Value type(trainable_engine_t)

  • private module function perturbed_identity_network(training_configuration, perturbation_magnitude, metadata, input_range, output_range) result(trainable_engine)

    Arguments

    Type IntentOptional Attributes Name
    type(training_configuration_t), intent(in) :: training_configuration
    real(kind=rkind), intent(in) :: perturbation_magnitude
    type(string_t), intent(in) :: metadata(:)
    type(tensor_range_t) :: input_range
    type(tensor_range_t) :: output_range

    Return Value type(trainable_engine_t)


Type-Bound Procedures

procedure, public :: assert_consistent

procedure, public :: infer

procedure, public :: map_from_input_training_range

  • interface

    private elemental module function map_from_input_training_range(self, tensor) result(unnormalized_tensor)

    Arguments

    Type IntentOptional Attributes Name
    class(trainable_engine_t), intent(in) :: self
    type(tensor_t), intent(in) :: tensor

    Return Value type(tensor_t)

procedure, public :: map_from_output_training_range

  • interface

    private elemental module function map_from_output_training_range(self, tensor) result(unnormalized_tensor)

    Arguments

    Type IntentOptional Attributes Name
    class(trainable_engine_t), intent(in) :: self
    type(tensor_t), intent(in) :: tensor

    Return Value type(tensor_t)

procedure, public :: map_to_input_training_range

  • interface

    private elemental module function map_to_input_training_range(self, tensor) result(normalized_tensor)

    Arguments

    Type IntentOptional Attributes Name
    class(trainable_engine_t), intent(in) :: self
    type(tensor_t), intent(in) :: tensor

    Return Value type(tensor_t)

procedure, public :: map_to_output_training_range

  • interface

    private elemental module function map_to_output_training_range(self, tensor) result(normalized_tensor)

    Arguments

    Type IntentOptional Attributes Name
    class(trainable_engine_t), intent(in) :: self
    type(tensor_t), intent(in) :: tensor

    Return Value type(tensor_t)

procedure, public :: num_inputs

  • interface

    private elemental module function num_inputs(self) result(n_in)

    Arguments

    Type IntentOptional Attributes Name
    class(trainable_engine_t), intent(in) :: self

    Return Value integer

procedure, public :: num_layers

  • interface

    private elemental module function num_layers(self) result(n_layers)

    Arguments

    Type IntentOptional Attributes Name
    class(trainable_engine_t), intent(in) :: self

    Return Value integer

procedure, public :: num_outputs

  • interface

    private elemental module function num_outputs(self) result(n_out)

    Arguments

    Type IntentOptional Attributes Name
    class(trainable_engine_t), intent(in) :: self

    Return Value integer

procedure, public :: to_inference_engine

procedure, public :: train

  • interface

    private pure module subroutine train(self, mini_batches_arr, cost, adam, learning_rate)

    Arguments

    Type IntentOptional Attributes Name
    class(trainable_engine_t), intent(inout) :: self
    type(mini_batch_t), intent(in) :: mini_batches_arr(:)
    real(kind=rkind), intent(out), optional, allocatable :: cost(:)
    logical, intent(in) :: adam
    real(kind=rkind), intent(in) :: learning_rate