train_and_write Program

Uses

  • program~~train_and_write~~UsesGraph program~train_and_write train_and_write assert_m assert_m program~train_and_write->assert_m module~inference_engine_m inference_engine_m program~train_and_write->module~inference_engine_m sourcery_m sourcery_m program~train_and_write->sourcery_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~hyperparameters_m hyperparameters_m module~inference_engine_m->module~hyperparameters_m module~inference_engine_m_ inference_engine_m_ module~inference_engine_m->module~inference_engine_m_ module~input_output_pair_m input_output_pair_m module~inference_engine_m->module~input_output_pair_m module~kind_parameters_m kind_parameters_m module~inference_engine_m->module~kind_parameters_m module~mini_batch_m mini_batch_m module~inference_engine_m->module~mini_batch_m module~network_configuration_m network_configuration_m module~inference_engine_m->module~network_configuration_m module~relu_m relu_m module~inference_engine_m->module~relu_m module~sigmoid_m sigmoid_m module~inference_engine_m->module~sigmoid_m module~step_m step_m module~inference_engine_m->module~step_m module~swish_m swish_m module~inference_engine_m->module~swish_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 module~trainable_engine_m trainable_engine_m module~inference_engine_m->module~trainable_engine_m module~training_configuration_m training_configuration_m module~inference_engine_m->module~training_configuration_m module~ubounds_m ubounds_m module~inference_engine_m->module~ubounds_m module~activation_strategy_m->module~kind_parameters_m sourcery_string_m sourcery_string_m module~activation_strategy_m->sourcery_string_m module~differentiable_activation_strategy_m->module~activation_strategy_m module~hyperparameters_m->module~kind_parameters_m module~hyperparameters_m->sourcery_string_m module~inference_engine_m_->module~activation_strategy_m module~inference_engine_m_->module~differentiable_activation_strategy_m module~inference_engine_m_->module~kind_parameters_m module~inference_engine_m_->module~tensor_m module~inference_engine_m_->module~tensor_range_m sourcery_file_m sourcery_file_m module~inference_engine_m_->sourcery_file_m module~inference_engine_m_->sourcery_string_m module~input_output_pair_m->module~kind_parameters_m module~input_output_pair_m->module~tensor_m module~mini_batch_m->module~input_output_pair_m module~mini_batch_m->module~kind_parameters_m module~network_configuration_m->sourcery_string_m module~relu_m->module~differentiable_activation_strategy_m module~relu_m->module~kind_parameters_m module~relu_m->sourcery_string_m module~sigmoid_m->module~differentiable_activation_strategy_m module~sigmoid_m->module~kind_parameters_m module~sigmoid_m->sourcery_string_m module~step_m->module~activation_strategy_m module~step_m->module~kind_parameters_m module~step_m->sourcery_string_m module~swish_m->module~differentiable_activation_strategy_m module~swish_m->module~kind_parameters_m module~swish_m->sourcery_string_m module~tensor_m->module~kind_parameters_m module~tensor_range_m->sourcery_m module~tensor_range_m->module~tensor_m module~trainable_engine_m->module~differentiable_activation_strategy_m module~trainable_engine_m->module~inference_engine_m_ module~trainable_engine_m->module~kind_parameters_m module~trainable_engine_m->module~mini_batch_m module~trainable_engine_m->module~tensor_m module~trainable_engine_m->module~tensor_range_m module~trainable_engine_m->module~training_configuration_m module~trainable_engine_m->sourcery_string_m module~training_configuration_m->module~differentiable_activation_strategy_m module~training_configuration_m->module~hyperparameters_m module~training_configuration_m->module~kind_parameters_m module~training_configuration_m->module~network_configuration_m module~training_configuration_m->sourcery_file_m module~training_configuration_m->sourcery_string_m

This program demonstrates how to train a simple neural network starting from a randomized initial condition and how to write the initial network and the trained network to separate JSON files. The network has two hiden layers. The input, hidden, and output layers are all two nodes wide. The training data has outputs that identically match the corresponding inputs. Hence, the desired network represents an identity mapping. With RELU activation functions, the desired network therefore contains weights corresponding to identity matrices and biases that vanish everywhere. The initial condition corresponds to the desired network with all weights and biases perturbed by a random variable that is uniformly distributed on the range [0,0.1].


Calls

program~~train_and_write~~CallsGraph program~train_and_write train_and_write assert assert program~train_and_write->assert bin_t bin_t program~train_and_write->bin_t bins bins program~train_and_write->bins cost cost program~train_and_write->cost first first program~train_and_write->first flag_value flag_value program~train_and_write->flag_value infer infer program~train_and_write->infer input_output_pairs input_output_pairs program~train_and_write->input_output_pairs inputs inputs program~train_and_write->inputs interface~shuffle shuffle program~train_and_write->interface~shuffle intrinsic_array_t intrinsic_array_t program~train_and_write->intrinsic_array_t last last program~train_and_write->last mini_batches mini_batches program~train_and_write->mini_batches num_inputs num_inputs program~train_and_write->num_inputs num_outputs num_outputs program~train_and_write->num_outputs proc~output~6 output program~train_and_write->proc~output~6 proc~perturbed_identity_network~7 perturbed_identity_network program~train_and_write->proc~perturbed_identity_network~7 random_init random_init program~train_and_write->random_init random_numbers random_numbers program~train_and_write->random_numbers string string program~train_and_write->string string_t string_t program~train_and_write->string_t to_inference_engine to_inference_engine program~train_and_write->to_inference_engine train train program~train_and_write->train values values program~train_and_write->values interface~to_json~5 inference_engine_t%to_json proc~output~6->interface~to_json~5 write_lines write_lines proc~output~6->write_lines proc~perturbed_identity_network~7->string_t

Variables

Type Attributes Name Initial
type(command_line_t) :: command_line
type(string_t) :: final_network_file

Functions

function perturbed_identity_network(perturbation_magnitude) result(trainable_engine)

Arguments

Type IntentOptional Attributes Name
real, intent(in) :: perturbation_magnitude

Return Value type(trainable_engine_t)


Subroutines

subroutine output(inference_engine, file_name)

Arguments

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