OpenNN
Open-source neural networks library
Loading...
Searching...
No Matches
opennn::Operator Struct Reference

Base class for compute building blocks composed by layers (matmul, activation, dropout, etc.). More...

#include <operators.h>

Inheritance diagram for opennn::Operator:
[legend]

Public Member Functions

virtual ~Operator ()=default
 
virtual vector< TensorSpecparameter_specs () const
 Returns the tensor specs of trainable parameters owned by this operator.
 
virtual vector< TensorSpecstate_specs () const
 Returns the tensor specs of persistent state owned by this operator.
 
virtual void link_parameters (span< const TensorView >)
 Binds parameter views provided by the hosting layer.
 
virtual void link_gradients (span< const TensorView >)
 Binds gradient views provided by the hosting layer.
 
virtual void link_states (span< const TensorView >)
 Binds state views provided by the hosting layer.
 
virtual void set_parameters_random ()
 Initializes parameters with random values.
 
virtual void set_parameters_glorot ()
 Initializes parameters using Glorot (Xavier) initialization.
 
virtual void forward_propagate (ForwardPropagation &, size_t, bool) noexcept
 Runs the operator's forward computation.
 
virtual void back_propagate (ForwardPropagation &, BackPropagation &, size_t) const noexcept
 Runs the operator's backward computation, accumulating into gradient/delta buffers.
 
virtual void to_JSON (JsonWriter &) const
 Serializes the operator configuration to a JSON writer.
 
virtual void from_JSON (const Json *)
 Restores the operator configuration from a JSON node.
 
virtual void load_state_from_JSON (const Json *)
 Restores persistent state (e.g. running statistics) from a JSON node.
 
virtual void destroy_cuda ()
 Releases CUDA resources owned by the operator; called from destructors.
 
TensorViewget_input (ForwardPropagation &fp, size_t layer, size_t i=0) const noexcept
 
vector< TensorView > & get_inputs (ForwardPropagation &fp, size_t layer, size_t i=0) const noexcept
 
TensorViewget_output (ForwardPropagation &fp, size_t layer, size_t i=0) const noexcept
 
TensorViewget_output_delta (BackPropagation &bp, size_t layer, size_t i=0) const noexcept
 
TensorViewget_input_delta (BackPropagation &bp, size_t layer, size_t i=0) const noexcept
 

Public Attributes

vector< size_t > input_slots = {0}
 
vector< size_t > output_slots = {1}
 
vector< size_t > input_delta_slots = {1}
 
vector< size_t > output_delta_slots = {0}
 

Detailed Description

Base class for compute building blocks composed by layers (matmul, activation, dropout, etc.).

Constructor & Destructor Documentation

◆ ~Operator()

virtual opennn::Operator::~Operator ( )
virtualdefault

Member Function Documentation

◆ back_propagate()

virtual void opennn::Operator::back_propagate ( ForwardPropagation & ,
BackPropagation & ,
size_t  ) const
inlinevirtualnoexcept

Runs the operator's backward computation, accumulating into gradient/delta buffers.

Parameters
fpForward propagation workspace (read-only).
bpBack propagation workspace receiving gradients and deltas.
layerIndex of the hosting layer in the workspace.

Reimplemented in opennn::ActivationOp, opennn::AddOp, opennn::AttentionOp, opennn::BatchNormOp, opennn::CombinationOp, opennn::CombinationReluOp, opennn::ConvolutionOp, opennn::ConvolutionReluOp, opennn::DropoutOp, opennn::EmbeddingLookupOp, opennn::FlatOp, opennn::LayerNormOp, opennn::MergeOp, opennn::MultiHeadProjectionOp, opennn::Pool3dOp, and opennn::PoolOp.

◆ destroy_cuda()

virtual void opennn::Operator::destroy_cuda ( )
inlinevirtual

Releases CUDA resources owned by the operator; called from destructors.

Reimplemented in opennn::ActivationOp, opennn::AttentionOp, opennn::ConvolutionOp, opennn::ConvolutionReluOp, opennn::DropoutOp, and opennn::PoolOp.

◆ forward_propagate()

virtual void opennn::Operator::forward_propagate ( ForwardPropagation & ,
size_t ,
bool  )
inlinevirtualnoexcept

Runs the operator's forward computation.

Parameters
fpForward propagation workspace.
layerIndex of the hosting layer in the workspace.
is_trainingIf true, enables training-only behavior (e.g. dropout sampling).

Reimplemented in opennn::ActivationOp, opennn::AddOp, opennn::AttentionOp, opennn::BatchNormOp, opennn::BoundOp, opennn::CombinationOp, opennn::CombinationReluOp, opennn::ConvolutionOp, opennn::ConvolutionReluOp, opennn::DropoutOp, opennn::EmbeddingLookupOp, opennn::FlatOp, opennn::LayerNormOp, opennn::MergeOp, opennn::MultiHeadProjectionOp, opennn::Pool3dOp, opennn::PoolOp, opennn::ScaleOp, and opennn::UnscaleOp.

◆ from_JSON()

virtual void opennn::Operator::from_JSON ( const Json * )
inlinevirtual

Restores the operator configuration from a JSON node.

Reimplemented in opennn::ActivationOp, opennn::AttentionOp, opennn::BatchNormOp, and opennn::DropoutOp.

◆ get_input()

TensorView & opennn::Operator::get_input ( ForwardPropagation & fp,
size_t layer,
size_t i = 0 ) const
inlinenoexcept

◆ get_input_delta()

TensorView & opennn::Operator::get_input_delta ( BackPropagation & bp,
size_t layer,
size_t i = 0 ) const
inlinenoexcept

◆ get_inputs()

vector< TensorView > & opennn::Operator::get_inputs ( ForwardPropagation & fp,
size_t layer,
size_t i = 0 ) const
inlinenoexcept

◆ get_output()

TensorView & opennn::Operator::get_output ( ForwardPropagation & fp,
size_t layer,
size_t i = 0 ) const
inlinenoexcept

◆ get_output_delta()

TensorView & opennn::Operator::get_output_delta ( BackPropagation & bp,
size_t layer,
size_t i = 0 ) const
inlinenoexcept

◆ link_gradients()

virtual void opennn::Operator::link_gradients ( span< const TensorView > )
inlinevirtual

◆ link_parameters()

virtual void opennn::Operator::link_parameters ( span< const TensorView > )
inlinevirtual

◆ link_states()

virtual void opennn::Operator::link_states ( span< const TensorView > )
inlinevirtual

Binds state views provided by the hosting layer.

Reimplemented in opennn::BatchNormOp, and opennn::EmbeddingLookupOp.

◆ load_state_from_JSON()

virtual void opennn::Operator::load_state_from_JSON ( const Json * )
inlinevirtual

Restores persistent state (e.g. running statistics) from a JSON node.

Reimplemented in opennn::BatchNormOp.

◆ parameter_specs()

virtual vector< TensorSpec > opennn::Operator::parameter_specs ( ) const
inlinevirtual

◆ set_parameters_glorot()

virtual void opennn::Operator::set_parameters_glorot ( )
inlinevirtual

◆ set_parameters_random()

virtual void opennn::Operator::set_parameters_random ( )
inlinevirtual

◆ state_specs()

virtual vector< TensorSpec > opennn::Operator::state_specs ( ) const
inlinevirtual

Returns the tensor specs of persistent state owned by this operator.

Reimplemented in opennn::BatchNormOp, and opennn::EmbeddingLookupOp.

◆ to_JSON()

virtual void opennn::Operator::to_JSON ( JsonWriter & ) const
inlinevirtual

Serializes the operator configuration to a JSON writer.

Reimplemented in opennn::ActivationOp, opennn::AttentionOp, opennn::BatchNormOp, and opennn::DropoutOp.

Member Data Documentation

◆ input_delta_slots

vector<size_t> opennn::Operator::input_delta_slots = {1}

◆ input_slots

vector<size_t> opennn::Operator::input_slots = {0}

◆ output_delta_slots

vector<size_t> opennn::Operator::output_delta_slots = {0}

◆ output_slots

vector<size_t> opennn::Operator::output_slots = {1}