write_read_query_infer Subroutine

subroutine write_read_query_infer(output_file_name)

Arguments

Type IntentOptional Attributes Name
type(string_t), intent(in) :: output_file_name

Calls

proc~~write_read_query_infer~~CallsGraph proc~write_read_query_infer write_read_query_infer file_t file_t proc~write_read_query_infer->file_t none~activation_function_name neural_network_t%activation_function_name proc~write_read_query_infer->none~activation_function_name none~infer neural_network_t%infer proc~write_read_query_infer->none~infer none~nodes_per_layer~2 neural_network_t%nodes_per_layer proc~write_read_query_infer->none~nodes_per_layer~2 none~num_inputs~6 neural_network_t%num_inputs proc~write_read_query_infer->none~num_inputs~6 none~num_outputs neural_network_t%num_outputs proc~write_read_query_infer->none~num_outputs none~to_json~6 neural_network_t%to_json proc~write_read_query_infer->none~to_json~6 none~values tensor_t%values proc~write_read_query_infer->none~values proc~identity_network identity_network proc~write_read_query_infer->proc~identity_network string string proc~write_read_query_infer->string write_lines write_lines proc~write_read_query_infer->write_lines interface~default_real_activation_name neural_network_t%default_real_activation_name none~activation_function_name->interface~default_real_activation_name interface~double_precision_activation_name neural_network_t%double_precision_activation_name none~activation_function_name->interface~double_precision_activation_name interface~default_real_infer neural_network_t%default_real_infer none~infer->interface~default_real_infer interface~double_precision_infer neural_network_t%double_precision_infer none~infer->interface~double_precision_infer interface~default_real_nodes_per_layer~2 neural_network_t%default_real_nodes_per_layer none~nodes_per_layer~2->interface~default_real_nodes_per_layer~2 interface~double_precision_nodes_per_layer~2 neural_network_t%double_precision_nodes_per_layer none~nodes_per_layer~2->interface~double_precision_nodes_per_layer~2 interface~default_real_num_inputs~2 neural_network_t%default_real_num_inputs none~num_inputs~6->interface~default_real_num_inputs~2 interface~double_precision_num_inputs~2 neural_network_t%double_precision_num_inputs none~num_inputs~6->interface~double_precision_num_inputs~2 interface~default_real_num_outputs neural_network_t%default_real_num_outputs none~num_outputs->interface~default_real_num_outputs interface~double_precision_num_outputs neural_network_t%double_precision_num_outputs none~num_outputs->interface~double_precision_num_outputs interface~default_real_to_json~5 neural_network_t%default_real_to_json none~to_json~6->interface~default_real_to_json~5 interface~double_precision_to_json~5 neural_network_t%double_precision_to_json none~to_json~6->interface~double_precision_to_json~5 interface~default_real_values tensor_t%default_real_values none~values->interface~default_real_values interface~double_precision_values tensor_t%double_precision_values none~values->interface~double_precision_values string_t string_t proc~identity_network->string_t

Called by

proc~~write_read_query_infer~~CalledByGraph proc~write_read_query_infer write_read_query_infer program~write_read_infer write_read_infer program~write_read_infer->proc~write_read_query_infer

Source Code

  subroutine write_read_query_infer(output_file_name)
    type(string_t), intent(in) :: output_file_name
    type(string_t) activation_name
    integer i, j
    integer, parameter :: num_neurons = 3, num_hidden_layers = 2
    type(neural_network_t) network, neural_network
    type(file_t) json_output_file, json_input_file
    type(tensor_t) inputs, outputs 

    print *, "Constructing a neural_network_t neural-network object from scratch."
    network = identity_network()

    print *, "Converting a neural_network_t object to a file_t object."
    json_output_file = network%to_json()

    print *, "Writing a neural_network_t object to the file '"//output_file_name%string()//"' in JSON format."
    call json_output_file%write_lines(output_file_name)

    print *, "Reading a neural_network_t object from the same JSON file '"//output_file_name%string()//"'."
    json_input_file = file_t(output_file_name)

    print *, "Constructing a new neural_network_t object from the parameters read."
    neural_network = neural_network_t(json_input_file)

    print *, "Querying the new neural_network_t object for several properties:"
    print *, "Number of outputs:", neural_network%num_outputs()
    print *, "Number of inputs:", neural_network%num_inputs()
    print *, "Nodes per layer:", neural_network%nodes_per_layer()
    activation_name = neural_network%activation_function_name()
    print *, "Activation function: ", activation_name%string()
    print *, "Performing inference:"
    inputs = tensor_t([2.,3.])
    print *, "Inputs: ", inputs%values()
    outputs = neural_network%infer(inputs)
    print *, "Actual outputs: ", outputs%values()
    print *, "Correct outputs:  ", inputs%values()
  end subroutine write_read_query_infer