OpenNN
Open-source neural networks library
Loading...
Searching...
No Matches
opennn::Pooling3d Class Referencefinal

Sequence-pooling layer for rank-2 inputs (sequence_length, features). More...

#include <pooling_layer_3d.h>

Inheritance diagram for opennn::Pooling3d:
[legend]

Public Member Functions

 Pooling3d (const Shape &input_shape={0, 0}, const PoolingMethod &pooling_method=PoolingMethod::MaxPooling, const string &label="sequence_pooling_layer")
 Constructs a Pooling3d layer.
 
Shape get_input_shape () const override
 Returns the per-sample input shape (sequence_length, features).
 
Shape get_output_shape () const override
 Returns the per-sample output shape.
 
Index get_sequence_length () const
 Sequence (time) length of the input.
 
Index get_input_features () const
 Number of features per time step.
 
PoolingMethod get_pooling_method () const
 Configured pooling reduction method.
 
string write_pooling_method () const
 Returns the canonical string name of the pooling method.
 
vector< Operator * > get_operators () override
 Returns the single Pool3d operator that implements this layer.
 
vector< pair< Shape, Type > > get_forward_specs (Index batch_size) const override
 Specifications of the forward intermediate buffers.
 
void set (const Shape &input_shape, const PoolingMethod &pooling_method, const string &label)
 Re-initializes the layer.
 
void set_input_shape (const Shape &new_input_shape) override
 Updates the input shape (sequence_length, features).
 
void set_pooling_method (const PoolingMethod &new_pooling_method)
 Sets the pooling method directly.
 
void set_pooling_method (const string &)
 Sets the pooling method by name.
 
void back_propagate (ForwardPropagation &, BackPropagation &, size_t) const noexcept override
 Routes output gradients back to the corresponding sequence positions in InputDelta.
 
void read_JSON_body (const Json *) override
 Reads the layer-specific JSON body (input shape and method).
 
void write_JSON_body (JsonWriter &) const override
 Writes the layer-specific JSON body (input shape and method).
 
- 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_backward_specs (Index batch_size) const
 Specifications of the backward intermediate buffers for one batch.
 
vector< Shapeget_parameter_shapes () const
 Shape-only view of get_parameter_specs().
 
vector< Shapeget_state_shapes () const
 Shape-only view of get_state_specs().
 
vector< Shapeget_forward_shapes (Index b) const
 Shape-only view of get_forward_specs() for batch size b.
 
vector< Shapeget_backward_shapes (Index b) const
 Shape-only view of get_backward_specs() for batch size b.
 
vector< Typeget_parameter_dtypes () const
 Dtype-only view of get_parameter_specs().
 
vector< Typeget_forward_dtypes (Index b) const
 Dtype-only view of get_forward_specs() for batch size b.
 
vector< Typeget_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 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 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< TensorViewparameters
 Parameter TensorViews bound to the network's parameter arena.
 
vector< TensorViewstates
 State TensorViews bound to the network's state arena.
 
vector< unique_ptr< Layer > > layers
 Sub-layers, when this layer is itself a composite.
 

Detailed Description

Sequence-pooling layer for rank-2 inputs (sequence_length, features).

Reduces along the sequence axis using either max or average pooling and outputs a single feature vector per sample. Reuses PoolingMethod from pooling_layer.h.

Constructor & Destructor Documentation

◆ Pooling3d()

opennn::Pooling3d::Pooling3d ( const Shape & input_shape = {0, 0},
const PoolingMethod & pooling_method = PoolingMethod::MaxPooling,
const string & label = "sequence_pooling_layer" )

Constructs a Pooling3d layer.

Parameters
input_shapePer-sample input shape (sequence_length, features).
pooling_methodReduction method applied along the sequence axis.
labelHuman-readable label assigned to this layer.

Member Function Documentation

◆ back_propagate()

void opennn::Pooling3d::back_propagate ( ForwardPropagation & ,
BackPropagation & ,
size_t  ) const
overridevirtualnoexcept

Routes output gradients back to the corresponding sequence positions in InputDelta.

Receives the forward intermediates, the BackPropagation buffer and this layer's index inside the network.

Reimplemented from opennn::Layer.

◆ get_forward_specs()

vector< pair< Shape, Type > > opennn::Pooling3d::get_forward_specs ( Index batch_size) const
overridevirtual

Specifications of the forward intermediate buffers.

Parameters
batch_sizeBatch size used for sizing.
Returns
Specs for Input, MaximalIndices and Output slots.

Reimplemented from opennn::Layer.

◆ get_input_features()

Index opennn::Pooling3d::get_input_features ( ) const
inline

Number of features per time step.

◆ get_input_shape()

Shape opennn::Pooling3d::get_input_shape ( ) const
inlineoverridevirtual

Returns the per-sample input shape (sequence_length, features).

Implements opennn::Layer.

◆ get_operators()

vector< Operator * > opennn::Pooling3d::get_operators ( )
inlineoverridevirtual

Returns the single Pool3d operator that implements this layer.

Reimplemented from opennn::Layer.

◆ get_output_shape()

Shape opennn::Pooling3d::get_output_shape ( ) const
overridevirtual

Returns the per-sample output shape.

Returns
Shape with a single feature axis (sequence reduced away).

Implements opennn::Layer.

◆ get_pooling_method()

PoolingMethod opennn::Pooling3d::get_pooling_method ( ) const
inline

Configured pooling reduction method.

◆ get_sequence_length()

Index opennn::Pooling3d::get_sequence_length ( ) const
inline

Sequence (time) length of the input.

◆ read_JSON_body()

void opennn::Pooling3d::read_JSON_body ( const Json * )
overridevirtual

Reads the layer-specific JSON body (input shape and method).

Reimplemented from opennn::Layer.

◆ set()

void opennn::Pooling3d::set ( const Shape & input_shape,
const PoolingMethod & pooling_method,
const string & label )

Re-initializes the layer.

Parameters
input_shapePer-sample input shape (sequence_length, features).
pooling_methodReduction method.
labelHuman-readable label.

◆ set_input_shape()

void opennn::Pooling3d::set_input_shape ( const Shape & new_input_shape)
inlineoverridevirtual

Updates the input shape (sequence_length, features).

Parameters
new_input_shapeNew per-sample input shape.

Reimplemented from opennn::Layer.

◆ set_pooling_method() [1/2]

void opennn::Pooling3d::set_pooling_method ( const PoolingMethod & new_pooling_method)
inline

Sets the pooling method directly.

Parameters
new_pooling_methodNew reduction method enum.

◆ set_pooling_method() [2/2]

void opennn::Pooling3d::set_pooling_method ( const string & )

Sets the pooling method by name.

Receives "MaxPooling" or "AveragePooling".

◆ write_JSON_body()

void opennn::Pooling3d::write_JSON_body ( JsonWriter & ) const
overridevirtual

Writes the layer-specific JSON body (input shape and method).

Reimplemented from opennn::Layer.

◆ write_pooling_method()

string opennn::Pooling3d::write_pooling_method ( ) const

Returns the canonical string name of the pooling method.

Returns
"MaxPooling" or "AveragePooling".