Source code for pytagi.nn.slinear

import cutagi

from pytagi.nn.base_layer import BaseLayer


[docs] class SLinear(BaseLayer): """Smoother Linear layer for the SLSTM architecture. This layer performs a linear transformation (:math:`y = xW^T + b'), specifically designed to be used within SLSTM where a hidden- and cell-state smoothing through time is applied. It wraps the C++/CUDA backend `cutagi.SLinear`. """ def __init__( self, input_size: int, output_size: int, bias: bool = True, gain_weight: float = 1.0, gain_bias: float = 1.0, init_method: str = "He", ): """Initializes the SLinear layer. :param input_size: The number of input features. :type input_size: int :param output_size: The number of output features. :type output_size: int :param bias: If ``True``, adds a learnable bias to the output. :type bias: bool :param gain_weight: A scaling factor applied to the initialized weights. :type gain_weight: float :param gain_bias: A scaling factor applied to the initialized bias terms. :type gain_bias: float :param init_method: The method used for initializing weights and biases (e.g., 'He', 'Xavier'). :type init_method: str """ super().__init__() self.input_size = input_size self.output_size = output_size self.bias = bias self.gain_weight = gain_weight self.gain_bias = gain_bias self.init_method = init_method self._cpp_backend = cutagi.SLinear( input_size, output_size, bias, gain_weight, gain_bias, init_method )
[docs] def get_layer_info(self) -> str: """Returns a string containing information about the layer's configuration (sizes, bias, etc.).""" return self._cpp_backend.get_layer_info()
[docs] def get_layer_name(self) -> str: """Returns the name of the layer (e.g., 'SLinear').""" return self._cpp_backend.get_layer_name()
[docs] def init_weight_bias(self): """Initializes the layer's weight matrix and bias vector based on the configured method.""" self._cpp_backend.init_weight_bias()