|
OpenNN
Open-source neural networks library
|
Elementwise tensor addition layer (residual / skip connections). More...
#include <addition_layer.h>
Public Member Functions | |
| Addition (const Shape &input_shape={}, const string &label="") | |
| Constructs an Addition layer. | |
| Shape | get_input_shape () const override |
| Returns the per-sample input shape. | |
| Shape | get_output_shape () const override |
| Returns the per-sample output shape (same as input). | |
| vector< pair< Shape, Type > > | get_backward_specs (Index batch_size) const override |
| Specifications of the backward intermediate buffers. | |
| vector< Operator * > | get_operators () override |
| Returns the single Add operator that implements this layer. | |
| void | set (const Shape &input_shape, const string &label) |
| Re-initializes the layer. | |
| void | set_input_shape (const Shape &shape) override |
| Updates the input shape and re-runs set() to keep label consistent. | |
| void | back_propagate (ForwardPropagation &fp, BackPropagation &bp, size_t layer) const noexcept override |
| Forwards the output gradient to both upstream input deltas. | |
Public Member Functions inherited from opennn::Layer | |
| virtual | ~Layer ()=default |
| Virtual destructor; subclasses are owned via unique_ptr<Layer>. | |
| const string & | get_label () const |
| Returns the user-assigned label of this layer. | |
| const string & | get_name () const |
| Returns the canonical type name of this layer. | |
| LayerType | get_type () const |
| Returns the LayerType enumerator for this layer. | |
| virtual void | set_output_shape (const Shape &) |
| Sets the per-sample output shape of this layer. | |
| void | set_label (string new_label) |
| Sets the human-readable label of this layer. | |
| Index | get_parameters_number () const |
| Total number of trainable parameters in this layer. | |
| virtual vector< pair< Shape, Type > > | get_parameter_specs () const |
| Specifications of the trainable parameter tensors owned by this layer. | |
| virtual vector< pair< Shape, Type > > | get_state_specs () const |
| Specifications of the persistent state tensors of this layer. | |
| virtual vector< pair< Shape, Type > > | get_forward_specs (Index batch_size) const |
| Specifications of the forward intermediate buffers for one batch. | |
| vector< Shape > | get_parameter_shapes () const |
| Shape-only view of get_parameter_specs(). | |
| vector< Shape > | get_state_shapes () const |
| Shape-only view of get_state_specs(). | |
| vector< Shape > | get_forward_shapes (Index b) const |
Shape-only view of get_forward_specs() for batch size b. | |
| vector< Shape > | get_backward_shapes (Index b) const |
Shape-only view of get_backward_specs() for batch size b. | |
| vector< Type > | get_parameter_dtypes () const |
| Dtype-only view of get_parameter_specs(). | |
| vector< Type > | get_forward_dtypes (Index b) const |
Dtype-only view of get_forward_specs() for batch size b. | |
| vector< Type > | get_backward_dtypes (Index b) const |
Dtype-only view of get_backward_specs() for batch size b. | |
| virtual Activation::Function | get_output_activation () const |
| Activation function fused at the end of this layer, if any. | |
| Index | get_inputs_number () const |
| Total number of scalar inputs per sample (product of input dims). | |
| Index | get_outputs_number () const |
| Total number of scalar outputs per sample (product of output dims). | |
| virtual void | forward_propagate (ForwardPropagation &fp, size_t layer, bool is_training) noexcept |
Forward pass: reads inputs from fp and writes outputs into fp. | |
| virtual void | from_JSON (const JsonDocument &document) |
| Loads the layer configuration (hyperparameters) from JSON. | |
| virtual void | read_JSON_body (const Json *) |
| Subclass hook for parsing the body of from_JSON(). | |
| virtual void | load_state_from_JSON (const JsonDocument &document) |
| Loads parameter and state tensors from a JSON document. | |
| virtual void | to_JSON (JsonWriter &writer) const |
| Writes the layer configuration to JSON. | |
| virtual void | write_JSON_body (JsonWriter &) const |
| Subclass hook for emitting the body of to_JSON(). | |
| virtual void | print () const |
| Prints a human-readable summary of the layer to stdout. | |
| bool | get_is_trainable () const |
| Whether this layer has trainable parameters. | |
| Type | get_compute_dtype () const |
| Numerical type used for forward/backward computation. | |
| void | set_compute_dtype (Type new_compute_dtype) |
| Sets the compute dtype and triggers on_compute_dtype_changed(). | |
| virtual void | on_compute_dtype_changed () |
| Hook invoked after set_compute_dtype() mutates the dtype. | |
| virtual float * | link_parameters (float *pointer) |
| Wires this layer's parameter TensorViews onto an external buffer. | |
| virtual float * | link_states (float *pointer) |
| Wires this layer's state TensorViews onto an external buffer. | |
| vector< TensorView > & | get_parameter_views () |
| Mutable access to this layer's parameter TensorViews. | |
| const vector< TensorView > & | get_parameter_views () const |
| Read-only access to this layer's parameter TensorViews. | |
| vector< TensorView > & | get_state_views () |
| Mutable access to this layer's state TensorViews. | |
| const vector< TensorView > & | get_state_views () const |
| Read-only access to this layer's state TensorViews. | |
| void | redistribute_parameters_to_operators () |
| Forwards the current parameter views down to each composing Operator. | |
| void | redistribute_parameter_gradients_to_operators (vector< TensorView > &gradient_views) |
| Forwards externally provided gradient views down to each Operator. | |
| void | redistribute_states_to_operators () |
| Forwards the current state views down to each composing Operator. | |
Additional Inherited Members | |
Protected Member Functions inherited from opennn::Layer | |
| Layer ()=default | |
| Default constructor; only invoked by subclasses. | |
| float * | link_views (float *pointer, const vector< Shape > &shapes, vector< TensorView > &views, const char *tag) const |
Builds views over a contiguous float buffer using shapes. | |
| void | distribute_to_operators (vector< TensorView > &views, void(Operator::*link)(const vector< TensorView > &), vector< pair< Shape, Type > >(Operator::*specs)() const) |
| Generic helper used by the redistribute_*_to_operators() routines. | |
Protected Attributes inherited from opennn::Layer | |
| string | label = "my_layer" |
| User-visible label for this layer instance (default "my_layer"). | |
| string | name = "layer" |
| Canonical type name set by the subclass (e.g. "dense"). | |
| LayerType | layer_type = LayerType::Dense |
| Layer type tag set by the subclass. | |
| bool | is_trainable = true |
| True if the layer has parameters that participate in training. | |
| bool | is_first_layer = false |
| True if this layer is the network's input layer. | |
| Type | compute_dtype = Type::FP32 |
| Numerical type used for forward and backward computation. | |
| vector< TensorView > | parameters |
| Parameter TensorViews bound to the network's parameter arena. | |
| vector< TensorView > | states |
| State TensorViews bound to the network's state arena. | |
| vector< unique_ptr< Layer > > | layers |
| Sub-layers, when this layer is itself a composite. | |
Elementwise tensor addition layer (residual / skip connections).
Receives two upstream inputs of identical shape and writes their sum into its output buffer. Used as the merge point in ResNet-style and Transformer-style architectures, where the layer's two inputs are wired via NeuralNetwork::layer_input_indices.
The layer has no trainable parameters; its backward pass simply forwards the output gradient to both inputs.
| opennn::Addition::Addition | ( | const Shape & | input_shape = {}, |
| const string & | label = "" ) |
Constructs an Addition layer.
| input_shape | Per-sample input (and output) shape. |
| label | Human-readable label assigned to this layer. |
|
overridevirtualnoexcept |
Forwards the output gradient to both upstream input deltas.
| fp | Forward intermediates from the matching forward pass. |
| bp | BackPropagation buffer in which to accumulate gradients. |
| layer | Index of this layer inside the network. |
Reimplemented from opennn::Layer.
|
overridevirtual |
Specifications of the backward intermediate buffers.
| batch_size | Batch size used for sizing. |
Reimplemented from opennn::Layer.
|
inlineoverridevirtual |
Returns the per-sample input shape.
Implements opennn::Layer.
|
inlineoverridevirtual |
Returns the single Add operator that implements this layer.
Reimplemented from opennn::Layer.
|
inlineoverridevirtual |
Returns the per-sample output shape (same as input).
Implements opennn::Layer.
| void opennn::Addition::set | ( | const Shape & | input_shape, |
| const string & | label ) |
Re-initializes the layer.
| input_shape | Per-sample input shape. |
| label | Human-readable label. |
|
inlineoverridevirtual |
Updates the input shape and re-runs set() to keep label consistent.
Reimplemented from opennn::Layer.