FlexNN 1
Fully connected neural network built from scratch with flexible n-layer design and multiple activations.
Loading...
Searching...
No Matches
FlexNN::Layers::BatchNorm1D Class Reference

#include <BatchNorm1D.hpp>

Public Member Functions

 BatchNorm1D (BatchNormParams p, Activations::Activation act=Activations::Activation::None)
 
 BatchNorm1D (int numFeatures, float epsilon=1e-5f, Activations::Activation act=Activations::Activation::None)
 
LayerType type () const noexcept
 
Activations::Activation activation () const noexcept
 
const BatchNormParams & params () const noexcept
 
const Eigen::VectorXd & gamma () const noexcept
 
const Eigen::VectorXd & beta () const noexcept
 
const Eigen::VectorXd & runningMean () const noexcept
 
const Eigen::VectorXd & runningVar () const noexcept
 
void setGamma (const Eigen::VectorXd &g)
 
void setBeta (const Eigen::VectorXd &b)
 
void setRunningMean (const Eigen::VectorXd &m)
 
void setRunningVar (const Eigen::VectorXd &v)
 
std::pair< Eigen::MatrixXd, Eigen::MatrixXd > forward (const Eigen::MatrixXd &input) const
 Forward with batch stats (training) — updates running stats.
 
std::pair< Eigen::MatrixXd, Eigen::MatrixXd > forward (const Eigen::MatrixXd &input, bool training) const
 Forward with explicit training flag.
 
Eigen::MatrixXd backward (const Eigen::MatrixXd &upstream, const Eigen::MatrixXd &currZ) const
 
Eigen::MatrixXd backward (const Eigen::MatrixXd &nextW, const Eigen::MatrixXd &nextdZ, const Eigen::MatrixXd &currZ) const
 
Eigen::MatrixXd propagate (const Eigen::MatrixXd &dZ) const
 
std::pair< Eigen::MatrixXd, Eigen::VectorXd > grad (const Eigen::MatrixXd &dZ, const Eigen::MatrixXd &input) const
 
void update (const Eigen::MatrixXd &dW, const Eigen::VectorXd &db, double lr) noexcept
 
void updateWeights (const Eigen::MatrixXd &dW, const Eigen::VectorXd &db, double lr) noexcept
 

Constructor & Destructor Documentation

◆ BatchNorm1D() [1/2]

FlexNN::Layers::BatchNorm1D::BatchNorm1D ( BatchNormParams  p,
Activations::Activation  act = Activations::Activation::None 
)
explicit

◆ BatchNorm1D() [2/2]

FlexNN::Layers::BatchNorm1D::BatchNorm1D ( int  numFeatures,
float  epsilon = 1e-5f,
Activations::Activation  act = Activations::Activation::None 
)
explicit

Member Function Documentation

◆ activation()

Activations::Activation FlexNN::Layers::BatchNorm1D::activation ( ) const
inlinenoexcept

◆ backward() [1/2]

Eigen::MatrixXd FlexNN::Layers::BatchNorm1D::backward ( const Eigen::MatrixXd &  nextW,
const Eigen::MatrixXd &  nextdZ,
const Eigen::MatrixXd &  currZ 
) const

◆ backward() [2/2]

Eigen::MatrixXd FlexNN::Layers::BatchNorm1D::backward ( const Eigen::MatrixXd &  upstream,
const Eigen::MatrixXd &  currZ 
) const

◆ beta()

const Eigen::VectorXd & FlexNN::Layers::BatchNorm1D::beta ( ) const
inlinenoexcept

◆ forward() [1/2]

std::pair< Eigen::MatrixXd, Eigen::MatrixXd > FlexNN::Layers::BatchNorm1D::forward ( const Eigen::MatrixXd &  input) const

Forward with batch stats (training) — updates running stats.

Uses batch mean/var per feature (row) across batch*L_out? For 1D case with flattened [F*L × batch] input, we treat each row as a feature and compute mean/var over cols (batch). This matches the flattened Dense/BatchNorm stack where each feature is a separate row.

Parameters
input[F × batch] or [F*L × batch] (each row is a feature)
Returns
Pair (Z, A) where Z is normalized y and A = act(Z) (None)

◆ forward() [2/2]

std::pair< Eigen::MatrixXd, Eigen::MatrixXd > FlexNN::Layers::BatchNorm1D::forward ( const Eigen::MatrixXd &  input,
bool  training 
) const

Forward with explicit training flag.

When training==false, uses runningMean/Var (for predict).

◆ gamma()

const Eigen::VectorXd & FlexNN::Layers::BatchNorm1D::gamma ( ) const
inlinenoexcept

◆ grad()

std::pair< Eigen::MatrixXd, Eigen::VectorXd > FlexNN::Layers::BatchNorm1D::grad ( const Eigen::MatrixXd &  dZ,
const Eigen::MatrixXd &  input 
) const

◆ params()

const BatchNormParams & FlexNN::Layers::BatchNorm1D::params ( ) const
inlinenoexcept

◆ propagate()

Eigen::MatrixXd FlexNN::Layers::BatchNorm1D::propagate ( const Eigen::MatrixXd &  dZ) const

◆ runningMean()

const Eigen::VectorXd & FlexNN::Layers::BatchNorm1D::runningMean ( ) const
inlinenoexcept

◆ runningVar()

const Eigen::VectorXd & FlexNN::Layers::BatchNorm1D::runningVar ( ) const
inlinenoexcept

◆ setBeta()

void FlexNN::Layers::BatchNorm1D::setBeta ( const Eigen::VectorXd &  b)
inline

◆ setGamma()

void FlexNN::Layers::BatchNorm1D::setGamma ( const Eigen::VectorXd &  g)
inline

◆ setRunningMean()

void FlexNN::Layers::BatchNorm1D::setRunningMean ( const Eigen::VectorXd &  m)
inline

◆ setRunningVar()

void FlexNN::Layers::BatchNorm1D::setRunningVar ( const Eigen::VectorXd &  v)
inline

◆ type()

LayerType FlexNN::Layers::BatchNorm1D::type ( ) const
inlinenoexcept

◆ update()

void FlexNN::Layers::BatchNorm1D::update ( const Eigen::MatrixXd &  dW,
const Eigen::VectorXd &  db,
double  lr 
)
noexcept

◆ updateWeights()

void FlexNN::Layers::BatchNorm1D::updateWeights ( const Eigen::MatrixXd &  dW,
const Eigen::VectorXd &  db,
double  lr 
)
inlinenoexcept

The documentation for this class was generated from the following files: