Loading...
Searching...
No Matches
opennn::Network Class Reference

#include <opennn/network/network.h>

Inheritance diagram for opennn::Network:
opennn::ApproximationNetwork opennn::Autoencoder opennn::Bert opennn::BertForSequenceClassification opennn::ClassificationNetwork opennn::ForecastingLstmNetwork opennn::ForecastingNetwork opennn::ImageClassificationNetwork opennn::Qwen3 opennn::ResNet opennn::TextClassificationNetwork opennn::TextGenerationNetwork opennn::Transformer opennn::Yolo

Classes

struct  DeviceResidency
 
struct  HostParametersGuard
 

Public Types

enum class  ParameterStorage { Host , DeviceMaster , DeviceMasterWithMirror , DeviceCompact }
 

Public Member Functions

 Network ()
 
virtual ~Network ()=default
 
 Network (const filesystem::path &)
 
NetworkTask get_task () const noexcept
 
void set_task (NetworkTask new_task) noexcept
 
Index add_layer (unique_ptr< Layer >, const vector< Index > &={})
 
const EffectiveConfig & get_config () const noexcept
 
Device get_device () const noexcept
 
bool is_gpu () const noexcept
 
Type get_training_type () const noexcept
 
const PrecisionPlan & get_precision () const noexcept
 
Type get_activation_type () const noexcept
 
void set_training_activation_recomputation (bool enabled) noexcept
 
bool get_training_activation_recomputation () const noexcept
 
void warn_if_stale_configuration () const
 
vector< vector< TensorSpec > > get_parameter_specs () const
 
vector< vector< TensorSpec > > get_state_specs () const
 
vector< vector< TensorSpec > > get_forward_specs (Index batch_size) const
 
vector< vector< TensorSpec > > get_backward_specs (Index batch_size) const
 
Index get_states_size () const
 
void compile ()
 
void compile (Device device)
 
void set_attention_sdpa_auto (bool)
 
void set_attention_sdpa_min_sequence_length (Index)
 
bool has (const string &) const
 
bool has (LayerType) const
 
bool has_recurrent_layers () const
 
bool is_empty () const noexcept
 
uint64_t get_parameters_version () const noexcept
 
void mark_parameters_changed () noexcept
 
float * get_parameters_data ()
 
const float * get_parameters_data () const
 
VectorMap get_parameters_map () &
 
ConstVectorMap get_parameters_map () const &
 
Index get_parameters_buffer_size () const noexcept
 
Device get_parameters_device () const noexcept
 
float * get_states_data ()
 
const float * get_states_data () const
 
Index get_states_buffer_size () const noexcept
 
const vector< Variable > & get_input_variables () const noexcept
 
vector< string > get_input_feature_names () const
 
const vector< Variable > & get_output_variables () const noexcept
 
vector< string > get_output_feature_names () const
 
const vector< unique_ptr< Layer > > & get_layers () const noexcept
 
const unique_ptr< Layer > & get_layer (const Index layer_index) const
 
const unique_ptr< Layer > & get_layer (const string &) const
 
Index get_layer_index (const string &) const
 
const vector< vector< Index > > & get_source_layers () const noexcept
 
vector< vector< pair< size_t, size_t > > > get_consumer_edges () const
 
Layer * get_first (const string &)
 
Layer * get_first (LayerType)
 
const Layer * get_first (const string &) const
 
const Layer * get_first (LayerType) const
 
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 > &)
 
void set_output_names (const vector< string > &)
 
void set_input_shape (const Shape &)
 
void clear ()
 
void steal_from (Network &src)
 
Index get_layers_number () const noexcept
 
Index get_layers_number (const string &) const
 
Index get_layers_number (LayerType) const
 
Index get_first_trainable_layer_index () const
 
Index get_last_trainable_layer_index () const
 
Index get_inputs_number () const
 
Index get_outputs_number () const
 
Shape get_input_shape () const
 
Shape get_output_shape () const
 
ActivationFunction get_output_activation () const
 
Index get_parameters_number () const
 
void set_parameters (const VectorR &)
 
void set_states (const VectorR &)
 
void set_parameters_random ()
 
void set_parameters_glorot ()
 
void set_parameters_pytorch ()
 
void link_parameters ()
 
ParameterStorage get_parameter_storage () const noexcept
 
bool fp32_master_released () const noexcept
 
bool low_precision_storage_ready () const noexcept
 
void link_gradients (const Buffer &) const
 
void link_gradients (span< const TensorView > layer_gradients) const
 
void link_states ()
 
void link_states (Device)
 
MatrixR calculate_outputs (const vector< TensorView > &)
 
void calculate_outputs (const vector< TensorView > &, MatrixR &outputs)
 
TensorView calculate_outputs_resident (const vector< TensorView > &, ForwardPropagation &, bool upload_parameters=true)
 
MatrixR calculate_outputs (const MatrixR &)
 
MatrixR calculate_outputs (const Tensor3 &)
 
MatrixR calculate_outputs (const Tensor4 &)
 
MatrixR calculate_text_outputs (const Tensor< string, 1 > &)
 
void set_tokenizer (unique_ptr< TokenizerOperator >, const string &label="tokenizer")
 
const TokenizerOperator * get_tokenizer (const string &label="tokenizer") const
 
void set_vocabulary (const vector< string > &, const string &label="tokenizer")
 
const vector< string > & get_vocabulary (const string &label="tokenizer") const
 
void calculate_outputs (const MatrixR &, MatrixR &outputs)
 
void calculate_outputs (const Tensor3 &, MatrixR &outputs)
 
void calculate_outputs (const Tensor4 &, MatrixR &outputs)
 
Tensor3 calculate_outputs (const Tensor3 &, const Tensor3 &)
 
void calculate_outputs (const Tensor3 &, const Tensor3 &, Tensor3 &outputs)
 
void from_JSON (const JsonDocument &)
 
void to_JSON (JsonWriter &) const
 
void save (const filesystem::path &) const
 
void save_parameters_binary (const filesystem::path &) const
 
void save_states_binary (const filesystem::path &) const
 
void load (const filesystem::path &)
 
void load_parameters_binary (const filesystem::path &)
 
void load_parameters_bf16_inference_binary (const filesystem::path &)
 
void load_states_binary (const filesystem::path &)
 
void forward_propagate (const vector< TensorView > &, ForwardPropagation &, ForwardPropagationMode=ForwardPropagationMode::Inference) const
 
void forward_propagate (const vector< TensorView > &, ForwardPropagation &, ForwardPropagationMode, Index, Index) const
 
void forward_propagate (const vector< TensorView > &, const VectorR &, ForwardPropagation &)
 
void cast_parameters_to_bf16 ()
 
void release_bf16_fp32_parameter_master_for_inference ()
 
void upload_parameters_bf16_inference ()
 
void upload_parameters_int8_inference ()
 
bfloat16 * get_parameters_bf16_mirror_data ()
 
void copy_parameters_device ()
 
void copy_parameters_host ()
 
void copy_states_device ()
 
void copy_states_host ()
 
vector< string > get_layer_labels () const
 

Protected Member Functions

 Network (NetworkTask)
 
 Network (const filesystem::path &, NetworkTask)
 
void finalize_build ()
 
void configure_layers (const function< void(Layer &)> &)
 
void set_attention_and_dense_dropout (float, initializer_list< string_view > dense_prefixes)
 
void compile_and_load_parameters_bf16_inference_binary (const filesystem::path &)
 
DeviceResidency get_device_residency () const noexcept
 

Protected Attributes

NetworkTask task = NetworkTask::Generic
 
vector< Variable > input_variables
 
vector< Variable > output_variables
 
vector< unique_ptr< Layer > > layers
 
vector< vector< Index > > source_layers
 
uint64_t parameters_version = 1
 
detail::ParameterStore parameter_store
 
Buffer states
 
EffectiveConfig config
 
PrecisionPlan precision
 
bool training_activation_recomputation = false
 
bool stale_configuration_warned = false
 
const void * linked_gradient_base = nullptr
 

Member Enumeration Documentation

◆ ParameterStorage

Enumerator
Host 
DeviceMaster 
DeviceMasterWithMirror 
DeviceCompact 

Constructor & Destructor Documentation

◆ Network() [1/4]

opennn::Network::Network ( )

◆ ~Network()

virtual opennn::Network::~Network ( )
virtualdefault

◆ Network() [2/4]

opennn::Network::Network ( const filesystem::path & )

◆ Network() [3/4]

opennn::Network::Network ( NetworkTask )
explicitprotected

◆ Network() [4/4]

opennn::Network::Network ( const filesystem::path & ,
NetworkTask  )
protected

Member Function Documentation

◆ add_layer()

Index opennn::Network::add_layer ( unique_ptr< Layer > ,
const vector< Index > & = {} )

◆ calculate_outputs() [1/10]

MatrixR opennn::Network::calculate_outputs ( const MatrixR & )

◆ calculate_outputs() [2/10]

void opennn::Network::calculate_outputs ( const MatrixR & ,
MatrixR & outputs )

◆ calculate_outputs() [3/10]

MatrixR opennn::Network::calculate_outputs ( const Tensor3 & )

◆ calculate_outputs() [4/10]

Tensor3 opennn::Network::calculate_outputs ( const Tensor3 & ,
const Tensor3 &  )

◆ calculate_outputs() [5/10]

void opennn::Network::calculate_outputs ( const Tensor3 & ,
const Tensor3 & ,
Tensor3 & outputs )

◆ calculate_outputs() [6/10]

void opennn::Network::calculate_outputs ( const Tensor3 & ,
MatrixR & outputs )

◆ calculate_outputs() [7/10]

MatrixR opennn::Network::calculate_outputs ( const Tensor4 & )

◆ calculate_outputs() [8/10]

void opennn::Network::calculate_outputs ( const Tensor4 & ,
MatrixR & outputs )

◆ calculate_outputs() [9/10]

MatrixR opennn::Network::calculate_outputs ( const vector< TensorView > & )

◆ calculate_outputs() [10/10]

void opennn::Network::calculate_outputs ( const vector< TensorView > & ,
MatrixR & outputs )

◆ calculate_outputs_resident()

TensorView opennn::Network::calculate_outputs_resident ( const vector< TensorView > & ,
ForwardPropagation & ,
bool upload_parameters = true )

◆ calculate_text_outputs()

MatrixR opennn::Network::calculate_text_outputs ( const Tensor< string, 1 > & )

◆ cast_parameters_to_bf16()

void opennn::Network::cast_parameters_to_bf16 ( )

◆ clear()

void opennn::Network::clear ( )

◆ compile() [1/2]

void opennn::Network::compile ( )

◆ compile() [2/2]

void opennn::Network::compile ( Device device)

◆ compile_and_load_parameters_bf16_inference_binary()

void opennn::Network::compile_and_load_parameters_bf16_inference_binary ( const filesystem::path & )
protected

◆ configure_layers()

void opennn::Network::configure_layers ( const function< void(Layer &)> & )
protected

◆ copy_parameters_device()

void opennn::Network::copy_parameters_device ( )

◆ copy_parameters_host()

void opennn::Network::copy_parameters_host ( )

◆ copy_states_device()

void opennn::Network::copy_states_device ( )

◆ copy_states_host()

void opennn::Network::copy_states_host ( )

◆ finalize_build()

void opennn::Network::finalize_build ( )
protected

◆ forward_propagate() [1/3]

void opennn::Network::forward_propagate ( const vector< TensorView > & ,
const VectorR & ,
ForwardPropagation &  )

◆ forward_propagate() [2/3]

void opennn::Network::forward_propagate ( const vector< TensorView > & ,
ForwardPropagation & ,
ForwardPropagationMode ,
Index ,
Index  ) const

◆ forward_propagate() [3/3]

void opennn::Network::forward_propagate ( const vector< TensorView > & ,
ForwardPropagation & ,
ForwardPropagationMode = ForwardPropagationMode::Inference ) const

◆ fp32_master_released()

bool opennn::Network::fp32_master_released ( ) const
inlinenoexcept

◆ from_JSON()

void opennn::Network::from_JSON ( const JsonDocument & )

◆ get_activation_type()

Type opennn::Network::get_activation_type ( ) const
inlinenoexcept

◆ get_backward_specs()

vector< vector< TensorSpec > > opennn::Network::get_backward_specs ( Index batch_size) const
inline

◆ get_config()

const EffectiveConfig & opennn::Network::get_config ( ) const
inlinenoexcept

◆ get_consumer_edges()

vector< vector< pair< size_t, size_t > > > opennn::Network::get_consumer_edges ( ) const

◆ get_device()

Device opennn::Network::get_device ( ) const
inlinenoexcept

◆ get_device_residency()

DeviceResidency opennn::Network::get_device_residency ( ) const
protectednoexcept

◆ get_first() [1/4]

Layer * opennn::Network::get_first ( const string & )

◆ get_first() [2/4]

const Layer * opennn::Network::get_first ( const string & ) const

◆ get_first() [3/4]

Layer * opennn::Network::get_first ( LayerType )

◆ get_first() [4/4]

const Layer * opennn::Network::get_first ( LayerType ) const

◆ get_first_trainable_layer_index()

Index opennn::Network::get_first_trainable_layer_index ( ) const

◆ get_forward_specs()

vector< vector< TensorSpec > > opennn::Network::get_forward_specs ( Index batch_size) const
inline

◆ get_input_feature_names()

vector< string > opennn::Network::get_input_feature_names ( ) const
inline

◆ get_input_shape()

Shape opennn::Network::get_input_shape ( ) const

◆ get_input_variables()

const vector< Variable > & opennn::Network::get_input_variables ( ) const
inlinenoexcept

◆ get_inputs_number()

Index opennn::Network::get_inputs_number ( ) const
inline

◆ get_last_trainable_layer_index()

Index opennn::Network::get_last_trainable_layer_index ( ) const

◆ get_layer() [1/2]

const unique_ptr< Layer > & opennn::Network::get_layer ( const Index layer_index) const
inline

◆ get_layer() [2/2]

const unique_ptr< Layer > & opennn::Network::get_layer ( const string & ) const

◆ get_layer_index()

Index opennn::Network::get_layer_index ( const string & ) const

◆ get_layer_labels()

vector< string > opennn::Network::get_layer_labels ( ) const

◆ get_layers()

const vector< unique_ptr< Layer > > & opennn::Network::get_layers ( ) const
inlinenoexcept

◆ get_layers_number() [1/3]

Index opennn::Network::get_layers_number ( ) const
inlinenoexcept

◆ get_layers_number() [2/3]

Index opennn::Network::get_layers_number ( const string & ) const

◆ get_layers_number() [3/3]

Index opennn::Network::get_layers_number ( LayerType ) const

◆ get_output_activation()

ActivationFunction opennn::Network::get_output_activation ( ) const

◆ get_output_feature_names()

vector< string > opennn::Network::get_output_feature_names ( ) const
inline

◆ get_output_shape()

Shape opennn::Network::get_output_shape ( ) const

◆ get_output_variables()

const vector< Variable > & opennn::Network::get_output_variables ( ) const
inlinenoexcept

◆ get_outputs_number()

Index opennn::Network::get_outputs_number ( ) const
inline

◆ get_parameter_specs()

vector< vector< TensorSpec > > opennn::Network::get_parameter_specs ( ) const
inline

◆ get_parameter_storage()

ParameterStorage opennn::Network::get_parameter_storage ( ) const
inlinenoexcept

◆ get_parameters_bf16_mirror_data()

bfloat16 * opennn::Network::get_parameters_bf16_mirror_data ( )
inline

◆ get_parameters_buffer_size()

Index opennn::Network::get_parameters_buffer_size ( ) const
inlinenoexcept

◆ get_parameters_data() [1/2]

float * opennn::Network::get_parameters_data ( )
inline

◆ get_parameters_data() [2/2]

const float * opennn::Network::get_parameters_data ( ) const
inline

◆ get_parameters_device()

Device opennn::Network::get_parameters_device ( ) const
inlinenoexcept

◆ get_parameters_map() [1/2]

VectorMap opennn::Network::get_parameters_map ( ) &
inline

◆ get_parameters_map() [2/2]

ConstVectorMap opennn::Network::get_parameters_map ( ) const &
inline

◆ get_parameters_number()

Index opennn::Network::get_parameters_number ( ) const

◆ get_parameters_version()

uint64_t opennn::Network::get_parameters_version ( ) const
inlinenoexcept

◆ get_precision()

const PrecisionPlan & opennn::Network::get_precision ( ) const
inlinenoexcept

◆ get_source_layers()

const vector< vector< Index > > & opennn::Network::get_source_layers ( ) const
inlinenoexcept

◆ get_state_specs()

vector< vector< TensorSpec > > opennn::Network::get_state_specs ( ) const
inline

◆ get_states_buffer_size()

Index opennn::Network::get_states_buffer_size ( ) const
inlinenoexcept

◆ get_states_data() [1/2]

float * opennn::Network::get_states_data ( )
inline

◆ get_states_data() [2/2]

const float * opennn::Network::get_states_data ( ) const
inline

◆ get_states_size()

Index opennn::Network::get_states_size ( ) const
inline

◆ get_task()

NetworkTask opennn::Network::get_task ( ) const
inlinenoexcept

◆ get_tokenizer()

const TokenizerOperator * opennn::Network::get_tokenizer ( const string & label = "tokenizer") const

◆ get_training_activation_recomputation()

bool opennn::Network::get_training_activation_recomputation ( ) const
inlinenoexcept

◆ get_training_type()

Type opennn::Network::get_training_type ( ) const
inlinenoexcept

◆ get_vocabulary()

const vector< string > & opennn::Network::get_vocabulary ( const string & label = "tokenizer") const

◆ has() [1/2]

bool opennn::Network::has ( const string & ) const

◆ has() [2/2]

bool opennn::Network::has ( LayerType ) const

◆ has_recurrent_layers()

bool opennn::Network::has_recurrent_layers ( ) const

◆ is_empty()

bool opennn::Network::is_empty ( ) const
inlinenoexcept

◆ is_gpu()

bool opennn::Network::is_gpu ( ) const
inlinenoexcept

◆ link_gradients() [1/2]

void opennn::Network::link_gradients ( const Buffer & ) const

◆ link_gradients() [2/2]

void opennn::Network::link_gradients ( span< const TensorView > layer_gradients) const

◆ link_parameters()

void opennn::Network::link_parameters ( )

◆ link_states() [1/2]

void opennn::Network::link_states ( )

◆ link_states() [2/2]

void opennn::Network::link_states ( Device )

◆ load()

void opennn::Network::load ( const filesystem::path & )

◆ load_parameters_bf16_inference_binary()

void opennn::Network::load_parameters_bf16_inference_binary ( const filesystem::path & )

◆ load_parameters_binary()

void opennn::Network::load_parameters_binary ( const filesystem::path & )

◆ load_states_binary()

void opennn::Network::load_states_binary ( const filesystem::path & )

◆ low_precision_storage_ready()

bool opennn::Network::low_precision_storage_ready ( ) const
inlinenoexcept

◆ mark_parameters_changed()

void opennn::Network::mark_parameters_changed ( )
inlinenoexcept

◆ release_bf16_fp32_parameter_master_for_inference()

void opennn::Network::release_bf16_fp32_parameter_master_for_inference ( )

◆ save()

void opennn::Network::save ( const filesystem::path & ) const

◆ save_parameters_binary()

void opennn::Network::save_parameters_binary ( const filesystem::path & ) const

◆ save_states_binary()

void opennn::Network::save_states_binary ( const filesystem::path & ) const

◆ set_attention_and_dense_dropout()

void opennn::Network::set_attention_and_dense_dropout ( float ,
initializer_list< string_view > dense_prefixes )
protected

◆ set_attention_sdpa_auto()

void opennn::Network::set_attention_sdpa_auto ( bool )

◆ set_attention_sdpa_min_sequence_length()

void opennn::Network::set_attention_sdpa_min_sequence_length ( Index )

◆ set_input_names()

void opennn::Network::set_input_names ( const vector< string > & )

◆ set_input_shape()

void opennn::Network::set_input_shape ( const Shape & )

◆ set_input_variables()

void opennn::Network::set_input_variables ( const vector< Variable > & new_input_variables)
inline

◆ set_output_names()

void opennn::Network::set_output_names ( const vector< string > & )

◆ set_output_variables()

void opennn::Network::set_output_variables ( const vector< Variable > & new_output_variables)
inline

◆ set_parameters()

void opennn::Network::set_parameters ( const VectorR & )

◆ set_parameters_glorot()

void opennn::Network::set_parameters_glorot ( )
inline

◆ set_parameters_pytorch()

void opennn::Network::set_parameters_pytorch ( )
inline

◆ set_parameters_random()

void opennn::Network::set_parameters_random ( )
inline

◆ set_states()

void opennn::Network::set_states ( const VectorR & )

◆ set_task()

void opennn::Network::set_task ( NetworkTask new_task)
inlinenoexcept

◆ set_tokenizer()

void opennn::Network::set_tokenizer ( unique_ptr< TokenizerOperator > ,
const string & label = "tokenizer" )

◆ set_training_activation_recomputation()

void opennn::Network::set_training_activation_recomputation ( bool enabled)
inlinenoexcept

◆ set_vocabulary()

void opennn::Network::set_vocabulary ( const vector< string > & ,
const string & label = "tokenizer" )

◆ steal_from()

void opennn::Network::steal_from ( Network & src)

◆ to_JSON()

void opennn::Network::to_JSON ( JsonWriter & ) const

◆ upload_parameters_bf16_inference()

void opennn::Network::upload_parameters_bf16_inference ( )

◆ upload_parameters_int8_inference()

void opennn::Network::upload_parameters_int8_inference ( )

◆ warn_if_stale_configuration()

void opennn::Network::warn_if_stale_configuration ( ) const

Member Data Documentation

◆ config

EffectiveConfig opennn::Network::config
protected

◆ input_variables

vector<Variable> opennn::Network::input_variables
protected

◆ layers

vector<unique_ptr<Layer> > opennn::Network::layers
protected

◆ linked_gradient_base

const void* opennn::Network::linked_gradient_base = nullptr
mutableprotected

◆ output_variables

vector<Variable> opennn::Network::output_variables
protected

◆ parameter_store

detail::ParameterStore opennn::Network::parameter_store
protected

◆ parameters_version

uint64_t opennn::Network::parameters_version = 1
protected

◆ precision

PrecisionPlan opennn::Network::precision
protected

◆ source_layers

vector<vector<Index> > opennn::Network::source_layers
protected

◆ stale_configuration_warned

bool opennn::Network::stale_configuration_warned = false
mutableprotected

◆ states

Buffer opennn::Network::states
protected

◆ task

NetworkTask opennn::Network::task = NetworkTask::Generic
protected

◆ training_activation_recomputation

bool opennn::Network::training_activation_recomputation = false
protected