|
OpenNN
Open-source neural networks library
|
Container of layers forming a feed-forward neural network, with parameter storage and I/O. More...
#include <neural_network.h>
Public Member Functions | |
| NeuralNetwork () | |
| Constructs an empty neural network. | |
| virtual | ~NeuralNetwork ()=default |
| NeuralNetwork (const filesystem::path &) | |
| Constructs a neural network and loads its definition from a JSON file. | |
| void | add_layer (unique_ptr< Layer >, const vector< Index > &={}) |
| Appends a layer to the network. | |
| const Configuration::Resolved & | get_config () const |
| bool | is_gpu () const |
| bool | is_cpu () const |
| Type | get_training_type () const |
| Type | get_inference_type () const |
| vector< vector< TensorSpec > > | get_parameter_specs () const |
| Returns the tensor specs of trainable parameters for every layer. | |
| vector< vector< TensorSpec > > | get_state_specs () const |
| Returns the tensor specs of persistent layer state (e.g. running statistics). | |
| vector< vector< TensorSpec > > | get_forward_specs (Index b) const |
| Returns the tensor specs of the forward-propagation workspace for each layer. | |
| vector< vector< TensorSpec > > | get_backward_specs (Index b) const |
| Returns the tensor specs of the back-propagation workspace for each layer. | |
| Index | get_states_size () const |
| Returns the total byte size required to hold all persistent layer states. | |
| void | compile () |
| Allocates buffers, resolves devices, and wires layer/operator views; call once after all layers are added. | |
| bool | has (const string &) const |
| Returns whether the network contains a layer with the given label. | |
| bool | has (LayerType) const |
| Returns whether the network contains at least one layer of the given type. | |
| bool | is_empty () const |
| float * | get_parameters_data () |
| const float * | get_parameters_data () const |
| Index | get_parameters_size () const |
| const vector< Variable > & | get_input_variables () const |
| vector< string > | get_input_feature_names () const |
| Returns the flat list of input feature names (expanding categorical variables). | |
| const vector< Variable > & | get_output_variables () const |
| vector< string > | get_output_feature_names () const |
| Returns the flat list of output feature names (expanding categorical variables). | |
| const vector< unique_ptr< Layer > > & | get_layers () const |
| const unique_ptr< Layer > & | get_layer (const Index i) const |
| const unique_ptr< Layer > & | get_layer (const string &) const |
| Returns the layer with the given label. | |
| Index | get_layer_index (const string &) const |
| Returns the index of the layer with the given label, or -1 if not found. | |
| const vector< vector< Index > > & | get_source_layers () const |
| vector< vector< Index > > | get_consumer_layers () const |
| Returns the inverse adjacency: for each layer, the indices of layers that consume its output. | |
| Layer * | get_first (const string &) |
| Returns the first layer matching the given label, or nullptr if not found. | |
| Layer * | get_first (LayerType) |
| Returns the first layer of the given type, or nullptr if not found. | |
| const Layer * | get_first (const string &) const |
| Returns the first layer matching the given label, or nullptr if not found. | |
| const Layer * | get_first (LayerType) const |
| Returns the first layer of the given type, or nullptr if not found. | |
| void | set_source_layers (const vector< vector< Index > > &new_source_layers) |
| Replaces the layer connectivity graph. | |
| void | set_source_layers (const Index layer_index, const vector< Index > &new_sources) |
| Replaces the source layers for one specific layer. | |
| void | set_source_layers (const string &, const vector< string > &) |
| Sets the source layers of a layer using labels for identification. | |
| void | set_source_layers (const string &, initializer_list< string >) |
| Sets the source layers of a layer using labels for identification. | |
| void | set_source_layers (const string &, const string &) |
| Convenience overload for a single source layer. | |
| void | set_input_variables (const vector< Variable > &new_input_variables) |
| void | set_output_variables (const vector< Variable > &new_output_variables) |
| void | set_input_names (const vector< string > &) |
| Sets the names of every input feature. | |
| void | set_output_names (const vector< string > &) |
| Sets the names of every output feature. | |
| void | set_input_shape (const Shape &) |
| Sets the shape of the input of the first layer and propagates it through the graph. | |
| void | clear () |
| Removes all layers and resets the network to an empty state. | |
| Index | get_layers_number () const |
| Index | get_layers_number (const string &) const |
| Returns the number of layers whose label contains the given substring. | |
| Index | get_layers_number (LayerType) const |
| Returns the number of layers of the given type. | |
| Index | get_first_trainable_layer_index () const |
| Returns the index of the first trainable layer (cached). | |
| Index | get_last_trainable_layer_index () const |
| Returns the index of the last trainable layer (cached). | |
| Index | get_inputs_number () const |
| Returns the number of input features expected by the first layer. | |
| Index | get_outputs_number () const |
| Returns the number of output features produced by the last layer. | |
| Shape | get_input_shape () const |
| Returns the shape of the input of the first layer. | |
| Shape | get_output_shape () const |
| Returns the shape of the output of the last layer. | |
| ActivationOp::Function | get_output_activation () const |
| Returns the activation function of the output layer. | |
| Index | get_parameters_number () const |
| Returns the total number of trainable parameters across all layers. | |
| void | set_parameters (const VectorR &new_parameters) |
Copies the contents of new_parameters into the network's parameter buffer. | |
| void | set_parameters_random () |
| Initializes every parameter with random values. | |
| void | set_parameters_glorot () |
| Initializes every parameter using Glorot (Xavier) initialization. | |
| void | link_parameters () |
| Wires the contiguous parameter buffer to per-layer / per-operator views. | |
| void | link_states () |
| Wires the contiguous state buffer to per-layer / per-operator views. | |
| MatrixR | calculate_outputs (const vector< TensorView > &) |
| Computes outputs for the given input tensor views. | |
| MatrixR | calculate_outputs (const MatrixR &) |
| Computes outputs for a 2D input matrix. | |
| MatrixR | calculate_outputs (const Tensor3 &) |
| Computes outputs for a 3D input tensor. | |
| MatrixR | calculate_outputs (const Tensor4 &) |
| Computes outputs for a 4D input tensor. | |
| MatrixR | calculate_directional_inputs (const Index, const VectorR &, float, float, Index=101) const |
| Generates samples by sweeping one input dimension across a range while keeping the others fixed. | |
| Tensor3 | calculate_outputs (const Tensor3 &, const Tensor3 &) |
| Computes outputs for an encoder/decoder model. | |
| Index | calculate_image_output (const filesystem::path &) |
| Reads an image file and returns the predicted class index. | |
| MatrixR | calculate_text_outputs (const Tensor< string, 1 > &) |
| Tokenizes the given strings and returns the network's outputs. | |
| void | from_JSON (const JsonDocument &) |
| Restores the network architecture and parameters from a JSON document. | |
| void | to_JSON (JsonWriter &) const |
| Serializes the network architecture and parameters to a JSON writer. | |
| void | save (const filesystem::path &) const |
| Saves the full network (architecture + parameters) to a JSON file. | |
| void | save_parameters (const filesystem::path &) const |
| Saves only the parameter values to a JSON file. | |
| void | save_parameters_binary (const filesystem::path &) const |
| Saves only the parameter values to a binary file. | |
| void | load (const filesystem::path &) |
| Loads the full network (architecture + parameters) from a JSON file. | |
| void | load_parameters_binary (const filesystem::path &) |
| Loads parameter values from a binary file produced by save_parameters_binary(). | |
| vector< string > | get_names_string () const |
| Returns the labels of all layers as a vector of strings. | |
| void | save_outputs (MatrixR &, const filesystem::path &) |
| Writes the output matrix to a CSV file. | |
| void | save_outputs (Tensor3 &, const filesystem::path &) |
| Writes the 3D output tensor to a CSV file. | |
| void | forward_propagate (const vector< TensorView > &, ForwardPropagation &, bool=false) const |
| Runs a forward pass over all layers. | |
| void | forward_propagate (const vector< TensorView > &, ForwardPropagation &, bool is_training, Index first_layer_index, Index last_layer_index) const |
| Runs a forward pass over a contiguous sub-range of layers. | |
| void | forward_propagate (const vector< TensorView > &, const VectorR &, ForwardPropagation &) |
| Runs a forward pass after temporarily overwriting the parameter buffer. | |
| vector< string > | get_layer_labels () const |
| Returns the labels of all layers in order. | |
Protected Attributes | |
| vector< Variable > | input_variables |
| vector< Variable > | output_variables |
| vector< unique_ptr< Layer > > | layers |
| vector< vector< Index > > | source_layers |
| Buffer | parameters |
| Buffer | parameters_bf16 {Device::CUDA} |
| Buffer | states |
| Configuration::Resolved | config |
| Index | first_trainable_cache_ = -1 |
| Index | last_trainable_cache_ = -1 |
Container of layers forming a feed-forward neural network, with parameter storage and I/O.
| opennn::NeuralNetwork::NeuralNetwork | ( | ) |
Constructs an empty neural network.
|
virtualdefault |
| opennn::NeuralNetwork::NeuralNetwork | ( | const filesystem::path & | ) |
Constructs a neural network and loads its definition from a JSON file.
| path | Path to the JSON file describing the network. |
| void opennn::NeuralNetwork::add_layer | ( | unique_ptr< Layer > | , |
| const vector< Index > & | = {} ) |
Appends a layer to the network.
| layer | Owning pointer to the layer; the network takes ownership. |
| source_indices | Indices of layers feeding into this one (empty means the previous layer). |
|
nodiscard |
Generates samples by sweeping one input dimension across a range while keeping the others fixed.
| direction | Index of the input to vary. |
| point | Baseline values for the remaining inputs. |
| minimum | Lower bound of the sweep range. |
| maximum | Upper bound of the sweep range. |
| points_number | Number of points sampled in the range. |
|
nodiscard |
Reads an image file and returns the predicted class index.
Computes outputs for a 2D input matrix.
Computes outputs for a 3D input tensor.
Computes outputs for an encoder/decoder model.
| encoder_input | Encoder side input tensor. |
| decoder_input | Decoder side input tensor. |
Computes outputs for a 4D input tensor.
|
nodiscard |
Computes outputs for the given input tensor views.
| inputs | Tensor views of the inputs (one per input variable). |
|
nodiscard |
Tokenizes the given strings and returns the network's outputs.
| void opennn::NeuralNetwork::clear | ( | ) |
Removes all layers and resets the network to an empty state.
| void opennn::NeuralNetwork::compile | ( | ) |
Allocates buffers, resolves devices, and wires layer/operator views; call once after all layers are added.
| void opennn::NeuralNetwork::forward_propagate | ( | const vector< TensorView > & | , |
| const VectorR & | , | ||
| ForwardPropagation & | ) |
Runs a forward pass after temporarily overwriting the parameter buffer.
| inputs | Tensor views of the inputs. |
| parameters | Replacement parameter values used for this pass. |
| forward_propagation | Workspace receiving per-layer activations. |
| void opennn::NeuralNetwork::forward_propagate | ( | const vector< TensorView > & | , |
| ForwardPropagation & | , | ||
| bool | is_training, | ||
| Index | first_layer_index, | ||
| Index | last_layer_index ) const |
Runs a forward pass over a contiguous sub-range of layers.
| inputs | Tensor views of the inputs. |
| forward_propagation | Workspace receiving per-layer activations. |
| is_training | Enables training-only behavior. |
| first_layer_index | First layer index (inclusive) to evaluate. |
| last_layer_index | Last layer index (inclusive) to evaluate. |
| void opennn::NeuralNetwork::forward_propagate | ( | const vector< TensorView > & | , |
| ForwardPropagation & | , | ||
| bool | = false ) const |
Runs a forward pass over all layers.
| inputs | Tensor views of the inputs (one per input variable). |
| forward_propagation | Workspace receiving per-layer activations. |
| is_training | If true, enables training-only behavior (dropout, batch-norm stats). |
| void opennn::NeuralNetwork::from_JSON | ( | const JsonDocument & | ) |
Restores the network architecture and parameters from a JSON document.
|
inlinenodiscard |
Returns the tensor specs of the back-propagation workspace for each layer.
| b | Batch size used to size the per-layer gradient buffers. |
|
inlinenodiscard |
|
nodiscard |
Returns the inverse adjacency: for each layer, the indices of layers that consume its output.
|
nodiscard |
Returns the first layer matching the given label, or nullptr if not found.
|
nodiscard |
Returns the first layer matching the given label, or nullptr if not found.
Returns the first layer of the given type, or nullptr if not found.
Returns the first layer of the given type, or nullptr if not found.
|
nodiscard |
Returns the index of the first trainable layer (cached).
|
inlinenodiscard |
Returns the tensor specs of the forward-propagation workspace for each layer.
| b | Batch size used to size the per-layer activations. |
|
inlinenodiscard |
|
nodiscard |
Returns the flat list of input feature names (expanding categorical variables).
|
nodiscard |
Returns the shape of the input of the first layer.
|
inlinenodiscard |
|
nodiscard |
Returns the number of input features expected by the first layer.
|
nodiscard |
Returns the index of the last trainable layer (cached).
|
inlinenodiscard |
|
nodiscard |
Returns the layer with the given label.
| label | Label assigned to the layer (e.g. via Layer::set_label). |
|
nodiscard |
Returns the index of the layer with the given label, or -1 if not found.
|
nodiscard |
Returns the labels of all layers in order.
|
inlinenodiscard |
|
inlinenodiscard |
|
nodiscard |
Returns the number of layers whose label contains the given substring.
|
nodiscard |
Returns the number of layers of the given type.
|
nodiscard |
Returns the labels of all layers as a vector of strings.
|
nodiscard |
Returns the activation function of the output layer.
|
nodiscard |
Returns the flat list of output feature names (expanding categorical variables).
|
nodiscard |
Returns the shape of the output of the last layer.
|
inlinenodiscard |
|
nodiscard |
Returns the number of output features produced by the last layer.
|
inlinenodiscard |
Returns the tensor specs of trainable parameters for every layer.
|
inlinenodiscard |
|
inlinenodiscard |
|
nodiscard |
Returns the total number of trainable parameters across all layers.
|
inlinenodiscard |
|
inlinenodiscard |
|
inlinenodiscard |
Returns the tensor specs of persistent layer state (e.g. running statistics).
|
inlinenodiscard |
Returns the total byte size required to hold all persistent layer states.
|
inlinenodiscard |
|
nodiscard |
Returns whether the network contains a layer with the given label.
|
nodiscard |
Returns whether the network contains at least one layer of the given type.
|
inlinenodiscard |
|
inlinenodiscard |
|
inlinenodiscard |
| void opennn::NeuralNetwork::link_parameters | ( | ) |
Wires the contiguous parameter buffer to per-layer / per-operator views.
| void opennn::NeuralNetwork::link_states | ( | ) |
Wires the contiguous state buffer to per-layer / per-operator views.
| void opennn::NeuralNetwork::load | ( | const filesystem::path & | ) |
Loads the full network (architecture + parameters) from a JSON file.
| void opennn::NeuralNetwork::load_parameters_binary | ( | const filesystem::path & | ) |
Loads parameter values from a binary file produced by save_parameters_binary().
| void opennn::NeuralNetwork::save | ( | const filesystem::path & | ) | const |
Saves the full network (architecture + parameters) to a JSON file.
| void opennn::NeuralNetwork::save_outputs | ( | MatrixR & | , |
| const filesystem::path & | ) |
Writes the output matrix to a CSV file.
| void opennn::NeuralNetwork::save_outputs | ( | Tensor3 & | , |
| const filesystem::path & | ) |
Writes the 3D output tensor to a CSV file.
| void opennn::NeuralNetwork::save_parameters | ( | const filesystem::path & | ) | const |
Saves only the parameter values to a JSON file.
| void opennn::NeuralNetwork::save_parameters_binary | ( | const filesystem::path & | ) | const |
Saves only the parameter values to a binary file.
| void opennn::NeuralNetwork::set_input_names | ( | const vector< string > & | ) |
Sets the names of every input feature.
| void opennn::NeuralNetwork::set_input_shape | ( | const Shape & | ) |
Sets the shape of the input of the first layer and propagates it through the graph.
|
inline |
| void opennn::NeuralNetwork::set_output_names | ( | const vector< string > & | ) |
Sets the names of every output feature.
|
inline |
| void opennn::NeuralNetwork::set_parameters | ( | const VectorR & | new_parameters | ) |
Copies the contents of new_parameters into the network's parameter buffer.
| void opennn::NeuralNetwork::set_parameters_glorot | ( | ) |
Initializes every parameter using Glorot (Xavier) initialization.
| void opennn::NeuralNetwork::set_parameters_random | ( | ) |
Initializes every parameter with random values.
|
inline |
Replaces the source layers for one specific layer.
| void opennn::NeuralNetwork::set_source_layers | ( | const string & | , |
| const string & | ) |
Convenience overload for a single source layer.
| target | Label of the destination layer. |
| source | Label of the source layer feeding into the target. |
| void opennn::NeuralNetwork::set_source_layers | ( | const string & | , |
| const vector< string > & | ) |
Sets the source layers of a layer using labels for identification.
| target | Label of the destination layer. |
| sources | Labels of the source layers feeding into the target. |
| void opennn::NeuralNetwork::set_source_layers | ( | const string & | , |
| initializer_list< string > | ) |
Sets the source layers of a layer using labels for identification.
| target | Label of the destination layer. |
| sources | Labels of the source layers feeding into the target. |
|
inline |
Replaces the layer connectivity graph.
| new_source_layers | For each layer index, the indices of its source layers. |
| void opennn::NeuralNetwork::to_JSON | ( | JsonWriter & | ) | const |
Serializes the network architecture and parameters to a JSON writer.
|
protected |
|
mutableprotected |
|
protected |
|
mutableprotected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |