22#include "../activations/Activation.hpp"
30 explicit BatchNorm1D(
int numFeatures,
float epsilon = 1e-5f,
38 const Eigen::VectorXd&
gamma() const noexcept {
return gamma_; }
39 const Eigen::VectorXd&
beta() const noexcept {
return beta_; }
40 const Eigen::VectorXd&
runningMean() const noexcept {
return runningMean_; }
41 const Eigen::VectorXd&
runningVar() const noexcept {
return runningVar_; }
42 void setGamma(
const Eigen::VectorXd& g) { gamma_ = g; }
43 void setBeta(
const Eigen::VectorXd& b) { beta_ = b; }
58 std::pair<Eigen::MatrixXd, Eigen::MatrixXd>
forward(
59 const Eigen::MatrixXd& input)
const;
66 std::pair<Eigen::MatrixXd, Eigen::MatrixXd>
forward(
67 const Eigen::MatrixXd& input,
bool training)
const;
70 Eigen::MatrixXd
backward(
const Eigen::MatrixXd& upstream,
71 const Eigen::MatrixXd& currZ)
const;
73 Eigen::MatrixXd
backward(
const Eigen::MatrixXd& nextW,
74 const Eigen::MatrixXd& nextdZ,
75 const Eigen::MatrixXd& currZ)
const;
77 Eigen::MatrixXd
propagate(
const Eigen::MatrixXd& dZ)
const;
79 std::pair<Eigen::MatrixXd, Eigen::VectorXd>
grad(
80 const Eigen::MatrixXd& dZ,
const Eigen::MatrixXd& input)
const;
82 void update(
const Eigen::MatrixXd& dW,
const Eigen::VectorXd& db,
84 void updateWeights(
const Eigen::MatrixXd& dW,
const Eigen::VectorXd& db,
92 Eigen::VectorXd gamma_;
93 Eigen::VectorXd beta_;
94 mutable Eigen::VectorXd runningMean_;
95 mutable Eigen::VectorXd runningVar_;
Shared PODs for FlexNN::Layers — LayerType, DType, and per-type Params.
Definition BatchNorm1D.hpp:26
const Eigen::VectorXd & runningVar() const noexcept
Definition BatchNorm1D.hpp:41
std::pair< Eigen::MatrixXd, Eigen::VectorXd > grad(const Eigen::MatrixXd &dZ, const Eigen::MatrixXd &input) const
Definition BatchNorm1D.cpp:126
Eigen::MatrixXd backward(const Eigen::MatrixXd &upstream, const Eigen::MatrixXd &currZ) const
Definition BatchNorm1D.cpp:87
void setGamma(const Eigen::VectorXd &g)
Definition BatchNorm1D.hpp:42
const Eigen::VectorXd & beta() const noexcept
Definition BatchNorm1D.hpp:39
LayerType type() const noexcept
Definition BatchNorm1D.hpp:33
void setRunningVar(const Eigen::VectorXd &v)
Definition BatchNorm1D.hpp:45
std::pair< Eigen::MatrixXd, Eigen::MatrixXd > forward(const Eigen::MatrixXd &input) const
Forward with batch stats (training) — updates running stats.
Definition BatchNorm1D.cpp:33
Eigen::MatrixXd propagate(const Eigen::MatrixXd &dZ) const
Definition BatchNorm1D.cpp:107
void updateWeights(const Eigen::MatrixXd &dW, const Eigen::VectorXd &db, double lr) noexcept
Definition BatchNorm1D.hpp:84
void setRunningMean(const Eigen::VectorXd &m)
Definition BatchNorm1D.hpp:44
const Eigen::VectorXd & gamma() const noexcept
Definition BatchNorm1D.hpp:38
void update(const Eigen::MatrixXd &dW, const Eigen::VectorXd &db, double lr) noexcept
Definition BatchNorm1D.cpp:140
const BatchNormParams & params() const noexcept
Definition BatchNorm1D.hpp:35
void setBeta(const Eigen::VectorXd &b)
Definition BatchNorm1D.hpp:43
Activations::Activation activation() const noexcept
Definition BatchNorm1D.hpp:34
const Eigen::VectorXd & runningMean() const noexcept
Definition BatchNorm1D.hpp:40
Activation
Activation function identifier.
Definition Activation.hpp:41
@ None
Linear, no activation.
Definition BatchNorm1D.hpp:24
LayerType
Layer kind, stable on-wire (uint8_t).
Definition LayerTypes.hpp:22
@ BatchNorm1D
Per-feature BatchNorm (gamma/beta/mean/var in aux)
Parameters for BatchNorm1D.
Definition LayerTypes.hpp:92