Loading...
Searching...
No Matches
opennn::Layer Class Referenceabstract

#include <opennn/network/layers/layer.h>

Inheritance diagram for opennn::Layer:
opennn::Activation opennn::Addition opennn::C2PSA opennn::Clamping opennn::Concatenation opennn::Convolutional opennn::Dense opennn::Detection opennn::DetectionV8 opennn::Embedding opennn::Flatten opennn::GroupedQueryAttention opennn::LSTM opennn::MultiHeadAttention opennn::NonMaxSuppression opennn::Normalization3d opennn::Pooling opennn::Pooling3d opennn::Recurrent opennn::Scaling opennn::Tokenizer opennn::Upsampling

Classes

struct  TiedWeight
 

Public Member Functions

virtual ~Layer ()=default
 
const string & get_label () const noexcept
 
const string & get_name () const
 
LayerType get_type () const noexcept
 
virtual bool accepts_input_rank (Index) const
 
void set_input_shape (const Shape &new_input_shape)
 
virtual void set_output_shape (const Shape &)
 
void set_label (string new_label)
 
Index get_parameters_number () const
 
const vector< Operator * > & get_operators () const noexcept
 
virtual vector< TensorSpec > get_parameter_specs () const
 
virtual vector< TensorSpec > get_state_specs () const
 
virtual vector< TensorSpec > get_forward_specs (Index batch_size) const
 
virtual vector< TensorSpec > get_backward_specs (Index batch_size) const
 
virtual ForwardSlotKind get_forward_slot_kind (size_t) const
 
virtual bool is_forward_slot_inference_elidable (size_t, Device) const noexcept
 
virtual size_t get_recomputable_forward_slot () const noexcept
 
virtual void recompute_forward_slot (ForwardPropagation &, size_t)
 
virtual bool backward_uses_forward_output () const noexcept
 
virtual bool backward_uses_input (size_t) const noexcept
 
virtual bool preserves_output_delta_during_backward () const noexcept
 
virtual bool allows_input_delta_alias () const noexcept
 
virtual bool folds_input_delta_addend (size_t) const noexcept
 
virtual Shape get_input_shape () const noexcept
 
virtual Shape get_output_shape () const =0
 
virtual ActivationFunction get_output_activation () const
 
virtual Index get_sources_number () const noexcept
 
virtual bool allows_successors () const noexcept
 
virtual bool is_recurrent () const noexcept
 
virtual bool skip_for_pre_scaled_input () const noexcept
 
virtual bool uses_sequence_position () const noexcept
 
virtual bool allows_bf16_input_cast (size_t) const noexcept
 
Index get_inputs_number () const noexcept
 
Index get_outputs_number () const
 
virtual void forward_propagate (ForwardPropagation &forward_propagation, size_t layer, ForwardPropagationMode pass)
 
virtual void back_propagate (ForwardPropagation &forward_propagation, BackPropagation &back_propagation, size_t i) const
 
virtual void from_JSON (const JsonDocument &)
 
virtual void read_JSON_body (const Json *)
 
virtual void on_loaded ()
 
virtual void load_state_from_JSON (const JsonDocument &)
 
virtual void to_JSON (JsonWriter &) const
 
virtual void write_JSON_body (JsonWriter &) const
 
virtual string write_expression (const vector< string > &, const vector< string > &) const
 
bool get_is_trainable () const noexcept
 
void set_is_trainable (bool trainable)
 
Type get_compute_dtype () const noexcept
 
Device get_compute_device () const noexcept
 
void set_compute_dtype (Type new_compute_dtype)
 
void set_compute_device (Device new_compute_device)
 
virtual void on_compute_dtype_changed ()
 
virtual float * link_states (float *, Device)
 
float * link_gradients (float *, Device)
 
vector< TensorView > & get_parameter_views ()
 
const vector< TensorView > & get_parameter_views () const noexcept
 
vector< TensorView > & get_parameter_scales ()
 
const vector< TensorView > & get_parameter_scales () const noexcept
 
vector< Operator::SlotQuantization > get_parameter_quantization () const
 
virtual TiedWeight get_tied_weight () const
 
virtual void set_tied_weight (const TiedWeight &tied_weight)
 
void redistribute_parameters_to_operators ()
 

Protected Types

enum  Forward { Input , Output }
 

Protected Member Functions

virtual void apply_input_shape (const Shape &new_input_shape)
 
 Layer (LayerType type, Trainability trainability=Trainability::Trainable)
 
float * link_views_to_operators (vector< TensorView > &, float *, vector< TensorSpec >(Operator::*specs_fn)() const, void(Operator::*link_fn)(span< const TensorView >), Device)
 

Static Protected Member Functions

static bool refresh_feature_storage (Buffer &storage, bool &dirty, Device device, Index features, Index columns, const function< void(float *)> &fill)
 

Protected Attributes

string label = "my_layer"
 
bool is_trainable = true
 
Shape input_shape
 
Type compute_dtype = Type::FP32
 
Type weights_dtype = Type::FP32
 
Device compute_device = Device::CPU
 
vector< TensorView > parameters
 
vector< TensorView > parameter_scales
 
vector< TensorView > states
 
vector< Operator * > operators
 

Member Enumeration Documentation

◆ Forward

enum opennn::Layer::Forward
protected
Enumerator
Input 
Output 

Constructor & Destructor Documentation

◆ ~Layer()

virtual opennn::Layer::~Layer ( )
virtualdefault

◆ Layer()

opennn::Layer::Layer ( LayerType type,
Trainability trainability = Trainability::Trainable )
inlineprotected

Member Function Documentation

◆ accepts_input_rank()

◆ allows_bf16_input_cast()

virtual bool opennn::Layer::allows_bf16_input_cast ( size_t ) const
inlinevirtualnoexcept

Reimplemented in opennn::Embedding, and opennn::Tokenizer.

◆ allows_input_delta_alias()

virtual bool opennn::Layer::allows_input_delta_alias ( ) const
inlinevirtualnoexcept

Reimplemented in opennn::Normalization3d.

◆ allows_successors()

virtual bool opennn::Layer::allows_successors ( ) const
inlinevirtualnoexcept

Reimplemented in opennn::Clamping.

◆ apply_input_shape()

◆ back_propagate()

virtual void opennn::Layer::back_propagate ( ForwardPropagation & forward_propagation,
BackPropagation & back_propagation,
size_t i ) const
inlinevirtual

Reimplemented in opennn::Pooling.

◆ backward_uses_forward_output()

virtual bool opennn::Layer::backward_uses_forward_output ( ) const
inlinevirtualnoexcept

◆ backward_uses_input()

virtual bool opennn::Layer::backward_uses_input ( size_t ) const
inlinevirtualnoexcept

◆ folds_input_delta_addend()

virtual bool opennn::Layer::folds_input_delta_addend ( size_t ) const
inlinevirtualnoexcept

◆ forward_propagate()

virtual void opennn::Layer::forward_propagate ( ForwardPropagation & forward_propagation,
size_t layer,
ForwardPropagationMode pass )
inlinevirtual

◆ from_JSON()

virtual void opennn::Layer::from_JSON ( const JsonDocument & )
virtual

Reimplemented in opennn::Concatenation.

◆ get_backward_specs()

◆ get_compute_device()

Device opennn::Layer::get_compute_device ( ) const
inlinenoexcept

◆ get_compute_dtype()

Type opennn::Layer::get_compute_dtype ( ) const
inlinenoexcept

◆ get_forward_slot_kind()

◆ get_forward_specs()

◆ get_input_shape()

◆ get_inputs_number()

Index opennn::Layer::get_inputs_number ( ) const
inlinenoexcept

◆ get_is_trainable()

bool opennn::Layer::get_is_trainable ( ) const
inlinenoexcept

◆ get_label()

const string & opennn::Layer::get_label ( ) const
inlinenoexcept

◆ get_name()

const string & opennn::Layer::get_name ( ) const

◆ get_operators()

const vector< Operator * > & opennn::Layer::get_operators ( ) const
inlinenoexcept

◆ get_output_activation()

virtual ActivationFunction opennn::Layer::get_output_activation ( ) const
inlinevirtual

◆ get_output_shape()

◆ get_outputs_number()

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

◆ get_parameter_quantization()

vector< Operator::SlotQuantization > opennn::Layer::get_parameter_quantization ( ) const

◆ get_parameter_scales() [1/2]

vector< TensorView > & opennn::Layer::get_parameter_scales ( )
inline

◆ get_parameter_scales() [2/2]

const vector< TensorView > & opennn::Layer::get_parameter_scales ( ) const
inlinenoexcept

◆ get_parameter_specs()

virtual vector< TensorSpec > opennn::Layer::get_parameter_specs ( ) const
virtual

◆ get_parameter_views() [1/2]

vector< TensorView > & opennn::Layer::get_parameter_views ( )
inline

◆ get_parameter_views() [2/2]

const vector< TensorView > & opennn::Layer::get_parameter_views ( ) const
inlinenoexcept

◆ get_parameters_number()

Index opennn::Layer::get_parameters_number ( ) const

◆ get_recomputable_forward_slot()

virtual size_t opennn::Layer::get_recomputable_forward_slot ( ) const
inlinevirtualnoexcept

Reimplemented in opennn::Convolutional.

◆ get_sources_number()

virtual Index opennn::Layer::get_sources_number ( ) const
inlinevirtualnoexcept

◆ get_state_specs()

virtual vector< TensorSpec > opennn::Layer::get_state_specs ( ) const
virtual

◆ get_tied_weight()

virtual TiedWeight opennn::Layer::get_tied_weight ( ) const
inlinevirtual

Reimplemented in opennn::Dense.

◆ get_type()

LayerType opennn::Layer::get_type ( ) const
inlinenoexcept

◆ is_forward_slot_inference_elidable()

virtual bool opennn::Layer::is_forward_slot_inference_elidable ( size_t ,
Device  ) const
inlinevirtualnoexcept

◆ is_recurrent()

virtual bool opennn::Layer::is_recurrent ( ) const
inlinevirtualnoexcept

Reimplemented in opennn::LSTM, and opennn::Recurrent.

◆ link_gradients()

float * opennn::Layer::link_gradients ( float * ,
Device  )

◆ link_states()

virtual float * opennn::Layer::link_states ( float * ,
Device  )
virtual

Reimplemented in opennn::Clamping, and opennn::Scaling.

◆ link_views_to_operators()

float * opennn::Layer::link_views_to_operators ( vector< TensorView > & ,
float * ,
vector< TensorSpec >(Operator::* specs_fn )() const,
void(Operator::* link_fn )(span< const TensorView >),
Device  )
protected

◆ load_state_from_JSON()

virtual void opennn::Layer::load_state_from_JSON ( const JsonDocument & )
virtual

Reimplemented in opennn::Concatenation.

◆ on_compute_dtype_changed()

◆ on_loaded()

virtual void opennn::Layer::on_loaded ( )
inlinevirtual

Reimplemented in opennn::Convolutional, and opennn::Dense.

◆ preserves_output_delta_during_backward()

virtual bool opennn::Layer::preserves_output_delta_during_backward ( ) const
inlinevirtualnoexcept

Reimplemented in opennn::Dense, and opennn::MultiHeadAttention.

◆ read_JSON_body()

◆ recompute_forward_slot()

virtual void opennn::Layer::recompute_forward_slot ( ForwardPropagation & ,
size_t  )
inlinevirtual

Reimplemented in opennn::Convolutional.

◆ redistribute_parameters_to_operators()

void opennn::Layer::redistribute_parameters_to_operators ( )

◆ refresh_feature_storage()

static bool opennn::Layer::refresh_feature_storage ( Buffer & storage,
bool & dirty,
Device device,
Index features,
Index columns,
const function< void(float *)> & fill )
staticprotected

◆ set_compute_device()

void opennn::Layer::set_compute_device ( Device new_compute_device)
inline

◆ set_compute_dtype()

void opennn::Layer::set_compute_dtype ( Type new_compute_dtype)
inline

◆ set_input_shape()

void opennn::Layer::set_input_shape ( const Shape & new_input_shape)
inline

◆ set_is_trainable()

void opennn::Layer::set_is_trainable ( bool trainable)
inline

◆ set_label()

void opennn::Layer::set_label ( string new_label)
inline

◆ set_output_shape()

virtual void opennn::Layer::set_output_shape ( const Shape & )
inlinevirtual

◆ set_tied_weight()

virtual void opennn::Layer::set_tied_weight ( const TiedWeight & tied_weight)
inlinevirtual

Reimplemented in opennn::Dense.

◆ skip_for_pre_scaled_input()

virtual bool opennn::Layer::skip_for_pre_scaled_input ( ) const
inlinevirtualnoexcept

Reimplemented in opennn::Scaling.

◆ to_JSON()

virtual void opennn::Layer::to_JSON ( JsonWriter & ) const
virtual

◆ uses_sequence_position()

virtual bool opennn::Layer::uses_sequence_position ( ) const
inlinevirtualnoexcept

Reimplemented in opennn::GroupedQueryAttention.

◆ write_expression()

virtual string opennn::Layer::write_expression ( const vector< string > & ,
const vector< string > &  ) const
inlinevirtual

◆ write_JSON_body()

Member Data Documentation

◆ compute_device

Device opennn::Layer::compute_device = Device::CPU
protected

◆ compute_dtype

Type opennn::Layer::compute_dtype = Type::FP32
protected

◆ input_shape

Shape opennn::Layer::input_shape
protected

◆ is_trainable

bool opennn::Layer::is_trainable = true
protected

◆ label

string opennn::Layer::label = "my_layer"
protected

◆ operators

vector<Operator*> opennn::Layer::operators
protected

◆ parameter_scales

vector<TensorView> opennn::Layer::parameter_scales
protected

◆ parameters

vector<TensorView> opennn::Layer::parameters
protected

◆ states

vector<TensorView> opennn::Layer::states
protected

◆ weights_dtype

Type opennn::Layer::weights_dtype = Type::FP32
protected