|
OpenNN
Open-source neural networks library
|
Abstract base class for all OpenNN layers; orchestrates operators and shape propagation. More...
#include <layer.h>
Public Member Functions | |
| virtual | ~Layer ()=default |
| const string & | get_label () const |
| const string & | get_name () const |
| LayerType | get_type () const |
| virtual void | set_input_shape (const Shape &) |
| Sets the input shape; subclasses override to derive dependent dimensions. | |
| virtual void | set_output_shape (const Shape &) |
| Sets the output shape; subclasses override when the output is user-configurable. | |
| void | set_label (string new_label) |
| Index | get_parameters_number () const |
| Returns the total number of trainable parameters owned by this layer. | |
| const vector< Operator * > & | get_operators () const |
| virtual vector< TensorSpec > | get_parameter_specs () const |
| Returns the tensor specs of trainable parameters; subclasses override. | |
| virtual vector< TensorSpec > | get_state_specs () const |
| Returns the tensor specs of persistent state (e.g. running mean/variance). | |
| virtual vector< TensorSpec > | get_forward_specs (Index batch_size) const |
| Returns the tensor specs of the forward workspace; defaults to a single output tensor. | |
| virtual vector< TensorSpec > | get_backward_specs (Index batch_size) const |
| Returns the tensor specs of the backward workspace; empty for non-trainable layers. | |
| virtual Shape | get_input_shape () const |
| Returns the input shape stored by the layer. | |
| virtual Shape | get_output_shape () const =0 |
| Returns the output shape; subclasses must implement this to expose their geometry. | |
| virtual ActivationOp::Function | get_output_activation () const |
| Returns the layer's output activation (Identity for most layers; overridden by Dense/Bounding). | |
| Index | get_inputs_number () const |
| Index | get_outputs_number () const |
| virtual void | forward_propagate (ForwardPropagation &fp, size_t layer, bool is_training) noexcept |
| Runs the forward pass by chaining the layer's operators in order. | |
| virtual void | back_propagate (ForwardPropagation &fp, BackPropagation &bp, size_t i) const noexcept |
| Runs the backward pass by chaining the layer's operators in reverse order. | |
| virtual void | from_JSON (const JsonDocument &document) |
| Restores layer configuration and parameters from a JSON document. | |
| virtual void | read_JSON_body (const Json *) |
| Subclass hook reading the body section of the layer's JSON node. | |
| virtual void | load_state_from_JSON (const JsonDocument &document) |
| Restores persistent state (e.g. running statistics) from a JSON document. | |
| virtual void | to_JSON (JsonWriter &writer) const |
| Serializes layer configuration and parameters to a JSON writer. | |
| virtual void | write_JSON_body (JsonWriter &) const |
| Subclass hook writing the body section of the layer's JSON node. | |
| virtual string | write_expression (const vector< string > &, const vector< string > &) const |
| Returns a human-readable mathematical expression for this layer (empty by default). | |
| virtual void | print () const |
| Prints a human-readable summary of the layer to standard output. | |
| bool | get_is_trainable () const |
| Type | get_compute_dtype () const |
| void | set_compute_dtype (Type new_compute_dtype) |
| Sets the compute dtype and notifies subclasses via on_compute_dtype_changed(). | |
| virtual void | on_compute_dtype_changed () |
| Subclass hook invoked when the compute dtype changes; default is no-op. | |
| virtual float * | link_states (float *pointer) |
| Binds the persistent-state region of the shared buffer to operator views. | |
| float * | link_gradients (float *pointer, vector< TensorView > &gradient_views) |
| Binds the gradient slice of the shared buffer to operator gradient views. | |
| vector< TensorView > & | get_parameter_views () |
| const vector< TensorView > & | get_parameter_views () const |
| void | redistribute_parameters_to_operators () |
| Re-binds operator parameter views after the parameter buffer has been resized or moved. | |
Protected Types | |
| enum | Forward { Input , Output } |
| enum | Backward { OutputDelta , InputDelta } |
Protected Member Functions | |
| Layer ()=default | |
| Layer (LayerType t, bool trainable=true) | |
| float * | link_views_to_operators (vector< TensorView > &views, float *pointer, vector< TensorSpec >(Operator::*specs_fn)() const, void(Operator::*link_fn)(span< const TensorView >)) |
Protected Attributes | |
| string | label = "my_layer" |
| LayerType | layer_type = LayerType::Dense |
| bool | is_trainable = true |
| Shape | input_shape |
| Type | compute_dtype = Type::FP32 |
| vector< TensorView > | parameters |
| vector< TensorView > | states |
| vector< Operator * > | operators |
Abstract base class for all OpenNN layers; orchestrates operators and shape propagation.
|
protected |
|
protected |
|
virtualdefault |
|
protecteddefault |
|
inlineprotected |
|
inlinevirtualnoexcept |
Runs the backward pass by chaining the layer's operators in reverse order.
| fp | Forward propagation workspace (read-only here). |
| bp | Back propagation workspace receiving gradients. |
| i | Index of this layer in the workspace. |
Reimplemented in opennn::Recurrent.
|
inlinevirtualnoexcept |
Runs the forward pass by chaining the layer's operators in order.
| fp | Forward propagation workspace. |
| layer | Index of this layer in the workspace. |
| is_training | If true, enables training-only behavior in child operators. |
Reimplemented in opennn::Recurrent.
|
virtual |
Restores layer configuration and parameters from a JSON document.
|
inlinenodiscardvirtual |
Returns the tensor specs of the backward workspace; empty for non-trainable layers.
| batch_size | Batch size used to size each tensor. |
Reimplemented in opennn::Addition, opennn::Embedding, opennn::MultiHeadAttention, and opennn::Recurrent.
|
inlinenodiscard |
|
inlinenodiscardvirtual |
Returns the tensor specs of the forward workspace; defaults to a single output tensor.
| batch_size | Batch size used to size each tensor. |
Reimplemented in opennn::Convolutional, opennn::Dense, opennn::MultiHeadAttention, opennn::Normalization3d, opennn::Pooling3d, opennn::Pooling, and opennn::Recurrent.
|
inlinenodiscardvirtual |
Returns the input shape stored by the layer.
Reimplemented in opennn::Bounding, opennn::Convolutional, opennn::ConvolutionalRelu, opennn::Embedding, opennn::MultiHeadAttention, opennn::Normalization3d, opennn::Pooling3d, opennn::Pooling, opennn::Recurrent, and opennn::Unscaling.
|
inlinenodiscard |
|
inlinenodiscard |
|
inlinenodiscard |
|
inlinenodiscard |
|
inlinenodiscard |
|
inlinenodiscardvirtual |
Returns the layer's output activation (Identity for most layers; overridden by Dense/Bounding).
Reimplemented in opennn::Convolutional, opennn::ConvolutionalRelu, opennn::Dense, and opennn::DenseRelu.
|
nodiscardpure virtual |
Returns the output shape; subclasses must implement this to expose their geometry.
Implemented in opennn::Addition, opennn::Bounding, opennn::Convolutional, opennn::ConvolutionalRelu, opennn::Dense, opennn::DenseRelu, opennn::Embedding, opennn::Flatten, opennn::MultiHeadAttention, opennn::Normalization3d, opennn::Pooling3d, opennn::Pooling, opennn::Recurrent, opennn::Scaling, and opennn::Unscaling.
|
inlinenodiscard |
|
nodiscardvirtual |
Returns the tensor specs of trainable parameters; subclasses override.
Reimplemented in opennn::Recurrent.
|
inline |
|
inline |
|
nodiscard |
Returns the total number of trainable parameters owned by this layer.
|
nodiscardvirtual |
Returns the tensor specs of persistent state (e.g. running mean/variance).
|
inlinenodiscard |
| float * opennn::Layer::link_gradients | ( | float * | pointer, |
| vector< TensorView > & | gradient_views ) |
Binds the gradient slice of the shared buffer to operator gradient views.
| pointer | Start of the layer's slice in the shared gradient buffer. |
| gradient_views | Output list of views the optimizer iterates over. |
|
virtual |
Binds the persistent-state region of the shared buffer to operator views.
| pointer | Start of the layer's slice in the shared state buffer. |
Reimplemented in opennn::Bounding, opennn::Scaling, and opennn::Unscaling.
|
protected |
|
virtual |
Restores persistent state (e.g. running statistics) from a JSON document.
|
inlinevirtual |
Subclass hook invoked when the compute dtype changes; default is no-op.
Reimplemented in opennn::Convolutional, opennn::ConvolutionalRelu, opennn::Dense, opennn::DenseRelu, and opennn::MultiHeadAttention.
|
inlinevirtual |
Prints a human-readable summary of the layer to standard output.
|
inlinevirtual |
Subclass hook reading the body section of the layer's JSON node.
Reimplemented in opennn::Bounding, opennn::Convolutional, opennn::ConvolutionalRelu, opennn::Dense, opennn::Embedding, opennn::MultiHeadAttention, opennn::Normalization3d, opennn::Pooling3d, opennn::Pooling, opennn::Recurrent, opennn::Scaling, and opennn::Unscaling.
| void opennn::Layer::redistribute_parameters_to_operators | ( | ) |
Re-binds operator parameter views after the parameter buffer has been resized or moved.
|
inline |
Sets the compute dtype and notifies subclasses via on_compute_dtype_changed().
|
virtual |
Sets the input shape; subclasses override to derive dependent dimensions.
Reimplemented in opennn::Addition, opennn::Bounding, opennn::Convolutional, opennn::ConvolutionalRelu, opennn::Dense, opennn::DenseRelu, opennn::Flatten, opennn::MultiHeadAttention, opennn::Normalization3d, opennn::Pooling3d, opennn::Pooling, opennn::Recurrent, opennn::Scaling, and opennn::Unscaling.
|
inline |
|
virtual |
Sets the output shape; subclasses override when the output is user-configurable.
Reimplemented in opennn::Dense, opennn::DenseRelu, opennn::Pooling3d, opennn::Recurrent, and opennn::Unscaling.
|
virtual |
Serializes layer configuration and parameters to a JSON writer.
|
inlinenodiscardvirtual |
Returns a human-readable mathematical expression for this layer (empty by default).
| input_names | Names assigned to the inputs. |
| output_names | Names assigned to the outputs. |
Reimplemented in opennn::Bounding, opennn::Dense, opennn::Recurrent, opennn::Scaling, and opennn::Unscaling.
|
inlinevirtual |
Subclass hook writing the body section of the layer's JSON node.
Reimplemented in opennn::Bounding, opennn::Convolutional, opennn::ConvolutionalRelu, opennn::Embedding, opennn::MultiHeadAttention, opennn::Pooling3d, opennn::Pooling, opennn::Recurrent, opennn::Scaling, and opennn::Unscaling.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |