inference_engine_m_ Module

Define an abstraction that supports inference operationsn on a neural network


Uses

  • module~~inference_engine_m_~~UsesGraph module~inference_engine_m_ inference_engine_m_ module~activation_strategy_m activation_strategy_m module~inference_engine_m_->module~activation_strategy_m module~differentiable_activation_strategy_m differentiable_activation_strategy_m module~inference_engine_m_->module~differentiable_activation_strategy_m module~kind_parameters_m kind_parameters_m module~inference_engine_m_->module~kind_parameters_m module~tensor_m tensor_m module~inference_engine_m_->module~tensor_m module~tensor_range_m tensor_range_m module~inference_engine_m_->module~tensor_range_m sourcery_file_m sourcery_file_m module~inference_engine_m_->sourcery_file_m sourcery_string_m sourcery_string_m module~inference_engine_m_->sourcery_string_m module~activation_strategy_m->module~kind_parameters_m module~activation_strategy_m->sourcery_string_m module~differentiable_activation_strategy_m->module~activation_strategy_m module~tensor_m->module~kind_parameters_m module~tensor_range_m->module~tensor_m sourcery_m sourcery_m module~tensor_range_m->sourcery_m

Used by

  • module~~inference_engine_m_~~UsedByGraph module~inference_engine_m_ inference_engine_m_ module~inference_engine_m inference_engine_m module~inference_engine_m->module~inference_engine_m_ module~trainable_engine_m trainable_engine_m module~inference_engine_m->module~trainable_engine_m module~inference_engine_s inference_engine_s module~inference_engine_s->module~inference_engine_m_ module~layer_m layer_m module~inference_engine_s->module~layer_m module~layer_m->module~inference_engine_m_ module~trainable_engine_m->module~inference_engine_m_ module~addition_m addition_m module~addition_m->module~inference_engine_m module~exponentiation_m exponentiation_m module~exponentiation_m->module~inference_engine_m module~layer_s layer_s module~layer_s->module~layer_m module~multiply_inputs multiply_inputs module~multiply_inputs->module~inference_engine_m module~power_series power_series module~power_series->module~inference_engine_m module~saturated_mixing_ratio_m saturated_mixing_ratio_m module~saturated_mixing_ratio_m->module~inference_engine_m module~thompson_tensors_m thompson_tensors_m module~thompson_tensors_m->module~inference_engine_m module~trainable_engine_s trainable_engine_s module~trainable_engine_s->module~trainable_engine_m module~training_configuration_s training_configuration_s module~training_configuration_s->module~inference_engine_m program~concurrent_inferences concurrent_inferences program~concurrent_inferences->module~inference_engine_m program~learn_addition learn_addition program~learn_addition->module~inference_engine_m program~learn_addition->module~addition_m program~learn_exponentiation learn_exponentiation program~learn_exponentiation->module~inference_engine_m program~learn_exponentiation->module~exponentiation_m program~learn_microphysics_procedures learn_microphysics_procedures program~learn_microphysics_procedures->module~inference_engine_m program~learn_microphysics_procedures->module~thompson_tensors_m program~learn_multiplication learn_multiplication program~learn_multiplication->module~inference_engine_m program~learn_multiplication->module~multiply_inputs program~learn_power_series learn_power_series program~learn_power_series->module~inference_engine_m program~learn_power_series->module~power_series program~print_training_configuration print_training_configuration program~print_training_configuration->module~inference_engine_m program~train_and_write train_and_write program~train_and_write->module~inference_engine_m program~train_saturated_mixture_ratio train_saturated_mixture_ratio program~train_saturated_mixture_ratio->module~inference_engine_m program~train_saturated_mixture_ratio->module~saturated_mixing_ratio_m program~write_read_infer write_read_infer program~write_read_infer->module~inference_engine_m

Variables

Type Visibility Attributes Name Initial
character(len=*), private, parameter :: key(*) = [character(len=len("usingSkipConnections"))::"modelName", "modelAuthor", "compilationDate", "activationFunction", "usingSkipConnections"]

Interfaces

interface

public interface inference_engine_t

  • private impure elemental module function construct_from_json(file_) result(inference_engine)

    Arguments

    Type IntentOptional Attributes Name
    type(file_t), intent(in) :: file_

    Return Value type(inference_engine_t)

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

    Arguments

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

    Return Value type(inference_engine_t)

interface

  • private elemental module function activation_function_name(self) result(activation_name)

    Arguments

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

    Return Value type(string_t)

interface

interface

  • private elemental module function map_from_output_range(self, normalized_tensor) result(tensor)

    The result contains the output tensor values unnormalized via the inverse of the mapping used in training

    Arguments

    Type IntentOptional Attributes Name
    class(inference_engine_t), intent(in) :: self
    type(tensor_t), intent(in) :: normalized_tensor

    Return Value type(tensor_t)

interface

  • private elemental module function map_to_input_range(self, tensor) result(normalized_tensor)

    The result contains the input tensor values normalized to fall on the range used during training

    Arguments

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

    Return Value type(tensor_t)

interface

  • private pure module function nodes_per_layer(self) result(node_count)

    Arguments

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

    Return Value integer, allocatable, (:)

interface

  • private elemental module function norm(self) result(norm_of_self)

    Arguments

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

    Return Value real(kind=rkind)

interface

  • private elemental module function num_inputs(self) result(input_count)

    Arguments

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

    Return Value integer

interface

  • private elemental module function num_outputs(self) result(output_count)

    Arguments

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

    Return Value integer

interface

  • private pure module function skip(self) result(use_skip_connections)

    Arguments

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

    Return Value logical

interface

interface

interface

  • private impure elemental module function to_json(self) result(json_file)

    Arguments

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

    Return Value type(file_t)


Derived Types

type, public ::  difference_t

Components

Type Visibility Attributes Name Initial
real(kind=rkind), private, allocatable :: biases_difference_(:,:)
integer, private, allocatable :: nodes_difference_(:)
real(kind=rkind), private, allocatable :: weights_difference_(:,:,:)

Type-Bound Procedures

procedure, public :: norm

type, public ::  exchange_t

Components

Type Visibility Attributes Name Initial
class(activation_strategy_t), public, allocatable :: activation_strategy_
real(kind=rkind), public, allocatable :: biases_(:,:)
type(tensor_range_t), public :: input_range_
type(string_t), public :: metadata_(size(key))
integer, public, allocatable :: nodes_(:)
type(tensor_range_t), public :: output_range_
real(kind=rkind), public, allocatable :: weights_(:,:,:)

type, public ::  inference_engine_t

Encapsulate the minimal information needed to perform inference

Components

Type Visibility Attributes Name Initial
class(activation_strategy_t), private, allocatable :: activation_strategy_
real(kind=rkind), private, allocatable :: biases_(:,:)
type(tensor_range_t), private :: input_range_
type(string_t), private :: metadata_(size(key))
integer, private, allocatable :: nodes_(:)
type(tensor_range_t), private :: output_range_
real(kind=rkind), private, allocatable :: weights_(:,:,:)

Constructor

private impure, elemental, module function construct_from_json (file_)
private pure, module function construct_from_padded_arrays (metadata, weights, biases, nodes, input_range, output_range)

Type-Bound Procedures

procedure, public :: activation_function_name
procedure, public :: assert_conformable_with
procedure, public :: infer
procedure, public :: map_from_output_range
procedure, public :: map_to_input_range
procedure, public :: nodes_per_layer
procedure, public :: num_inputs
procedure, public :: num_outputs
generic, public :: operator(-) => subtract
procedure, public :: skip
procedure, public :: to_exchange
procedure, public :: to_json
procedure, private :: subtract