template<typename Architecture_t>
class TMVA::DNN::TBatchNormLayer< Architecture_t >
Layer implementing Batch Normalization.
The input from each batch are normalized during training to have zero mean and unit variance and they are then scaled by two parameter, different for each input variable:
- a scale factor gamma
- an offset beta
In addition a running batch mean and variance is computed and stored in the class During inference the inputs are not normalized using the batch mean but the previously computed at running mean and variance If momentum is in [0,1) the running mean and variances are the exponetial averages using the momentum value runnig_mean = momentum * running_mean + (1-momentum) * batch_mean If instead momentum<1 the cumulative average is computed running_mean = (nb/(nb+1) * running_mean + 1/(nb+1) * batch_mean
See more at [https://arxiv.org/pdf/1502.03167v3.pdf]
Definition at line 63 of file BatchNormLayer.h.
|
| TBatchNormLayer (const TBatchNormLayer &) |
| Copy Constructor. More...
|
|
| TBatchNormLayer (size_t batchSize, size_t inputDepth, size_t inputHeight, size_t inputWidth, const std::vector< size_t > &shape, int axis=-1, Scalar_t momentum=-1., Scalar_t epsilon=0.0001) |
| Constructor. More...
|
|
| TBatchNormLayer (TBatchNormLayer< Architecture_t > *layer) |
| Copy the dense layer provided as a pointer. More...
|
|
| ~TBatchNormLayer () |
| Destructor. More...
|
|
virtual void | AddWeightsXMLTo (void *parent) |
| Writes the information and the weights about the layer in an XML node. More...
|
|
void | Backward (Tensor_t &gradients_backward, const Tensor_t &activations_backward) |
| Compute weight, bias and activation gradients. More...
|
|
void | Forward (Tensor_t &input, bool inTraining=true) |
| Compute activation of the layer for the given input. More...
|
|
Matrix_t & | GetBatchMean () |
|
const Matrix_t & | GetBatchMean () const |
|
Scalar_t | GetEpsilon () const |
|
std::vector< Matrix_t > | GetExtraLayerParameters () const |
|
Matrix_t & | GetIVariance () |
|
const Matrix_t & | GetIVariance () const |
|
Scalar_t | GetMomentum () const |
|
Matrix_t & | GetMuVector () |
|
const Matrix_t & | GetMuVector () const |
|
Scalar_t | GetNormAxis () const |
|
int & | GetNTrainedBatches () |
|
const int & | GetNTrainedBatches () const |
|
Matrix_t & | GetReshapedData () |
|
const Matrix_t & | GetReshapedData () const |
|
Matrix_t & | GetVariance () |
|
const Matrix_t & | GetVariance () const |
|
Matrix_t & | GetVarVector () |
|
const Matrix_t & | GetVarVector () const |
|
virtual void | Initialize () |
| Initialize the weights and biases according to the given initialization method. More...
|
|
void | Print () const |
| Printing the layer info. More...
|
|
virtual void | ReadWeightsFromXML (void *parent) |
| Read the information and the weights about the layer from XML node. More...
|
|
void | ResetTraining () |
| Reset some training flags after a loop on all batches Some layer (e.g. More...
|
|
void | SetExtraLayerParameters (const std::vector< Matrix_t > ¶ms) |
|
| VGeneralLayer (const VGeneralLayer &) |
| Copy Constructor. More...
|
|
| VGeneralLayer (size_t BatchSize, size_t InputDepth, size_t InputHeight, size_t InputWidth, size_t Depth, size_t Height, size_t Width, size_t WeightsNSlices, size_t WeightsNRows, size_t WeightsNCols, size_t BiasesNSlices, size_t BiasesNRows, size_t BiasesNCols, size_t OutputNSlices, size_t OutputNRows, size_t OutputNCols, EInitialization Init) |
| Constructor. More...
|
|
| VGeneralLayer (size_t BatchSize, size_t InputDepth, size_t InputHeight, size_t InputWidth, size_t Depth, size_t Height, size_t Width, size_t WeightsNSlices, std::vector< size_t > WeightsNRows, std::vector< size_t > WeightsNCols, size_t BiasesNSlices, std::vector< size_t > BiasesNRows, std::vector< size_t > BiasesNCols, size_t OutputNSlices, size_t OutputNRows, size_t OutputNCols, EInitialization Init) |
| General Constructor with different weights dimension. More...
|
|
| VGeneralLayer (VGeneralLayer< Architecture_t > *layer) |
| Copy the layer provided as a pointer. More...
|
|
virtual | ~VGeneralLayer () |
| Virtual Destructor. More...
|
|
virtual void | AddWeightsXMLTo (void *parent)=0 |
| Writes the information and the weights about the layer in an XML node. More...
|
|
virtual void | Backward (Tensor_t &gradients_backward, const Tensor_t &activations_backward)=0 |
| Backpropagates the error. More...
|
|
void | CopyBiases (const std::vector< Matrix_t > &otherBiases) |
| Copies the biases provided as an input. More...
|
|
template<typename Arch > |
void | CopyParameters (const VGeneralLayer< Arch > &layer) |
| Copy all trainable weight and biases from another equivalent layer but with different architecture The function can copy also extra parameters in addition to weights and biases if they are return by the function GetExtraLayerParameters. More...
|
|
void | CopyWeights (const std::vector< Matrix_t > &otherWeights) |
| Copies the weights provided as an input. More...
|
|
virtual void | Forward (Tensor_t &input, bool applyDropout=false)=0 |
| Computes activation of the layer for the given input. More...
|
|
Tensor_t & | GetActivationGradients () |
|
const Tensor_t & | GetActivationGradients () const |
|
Matrix_t | GetActivationGradientsAt (size_t i) |
|
const Matrix_t & | GetActivationGradientsAt (size_t i) const |
|
size_t | GetBatchSize () const |
| Getters. More...
|
|
std::vector< Matrix_t > & | GetBiases () |
|
const std::vector< Matrix_t > & | GetBiases () const |
|
Matrix_t & | GetBiasesAt (size_t i) |
|
const Matrix_t & | GetBiasesAt (size_t i) const |
|
std::vector< Matrix_t > & | GetBiasGradients () |
|
const std::vector< Matrix_t > & | GetBiasGradients () const |
|
Matrix_t & | GetBiasGradientsAt (size_t i) |
|
const Matrix_t & | GetBiasGradientsAt (size_t i) const |
|
size_t | GetDepth () const |
|
virtual std::vector< Matrix_t > | GetExtraLayerParameters () const |
|
size_t | GetHeight () const |
|
EInitialization | GetInitialization () const |
|
size_t | GetInputDepth () const |
|
size_t | GetInputHeight () const |
|
size_t | GetInputWidth () const |
|
Tensor_t & | GetOutput () |
|
const Tensor_t & | GetOutput () const |
|
Matrix_t | GetOutputAt (size_t i) |
|
const Matrix_t & | GetOutputAt (size_t i) const |
|
std::vector< Matrix_t > & | GetWeightGradients () |
|
const std::vector< Matrix_t > & | GetWeightGradients () const |
|
Matrix_t & | GetWeightGradientsAt (size_t i) |
|
const Matrix_t & | GetWeightGradientsAt (size_t i) const |
|
std::vector< Matrix_t > & | GetWeights () |
|
const std::vector< Matrix_t > & | GetWeights () const |
|
Matrix_t & | GetWeightsAt (size_t i) |
|
const Matrix_t & | GetWeightsAt (size_t i) const |
|
size_t | GetWidth () const |
|
virtual void | Initialize () |
| Initialize the weights and biases according to the given initialization method. More...
|
|
bool | IsTraining () const |
|
virtual void | Print () const =0 |
| Prints the info about the layer. More...
|
|
void | ReadMatrixXML (void *node, const char *name, Matrix_t &matrix) |
|
virtual void | ReadWeightsFromXML (void *parent)=0 |
| Read the information and the weights about the layer from XML node. More...
|
|
virtual void | ResetTraining () |
| Reset some training flags after a loop on all batches Some layer (e.g. More...
|
|
void | SetBatchSize (size_t batchSize) |
| Setters. More...
|
|
void | SetDepth (size_t depth) |
|
virtual void | SetDropoutProbability (Scalar_t) |
| Set Dropout probability. More...
|
|
virtual void | SetExtraLayerParameters (const std::vector< Matrix_t > &) |
|
void | SetHeight (size_t height) |
|
void | SetInputDepth (size_t inputDepth) |
|
void | SetInputHeight (size_t inputHeight) |
|
void | SetInputWidth (size_t inputWidth) |
|
void | SetIsTraining (bool isTraining) |
|
void | SetWidth (size_t width) |
|
void | Update (const Scalar_t learningRate) |
| Updates the weights and biases, given the learning rate. More...
|
|
void | UpdateBiases (const std::vector< Matrix_t > &biasGradients, const Scalar_t learningRate) |
| Updates the biases, given the gradients and the learning rate. More...
|
|
void | UpdateBiasGradients (const std::vector< Matrix_t > &biasGradients, const Scalar_t learningRate) |
| Updates the bias gradients, given some other weight gradients and learning rate. More...
|
|
void | UpdateWeightGradients (const std::vector< Matrix_t > &weightGradients, const Scalar_t learningRate) |
| Updates the weight gradients, given some other weight gradients and learning rate. More...
|
|
void | UpdateWeights (const std::vector< Matrix_t > &weightGradients, const Scalar_t learningRate) |
| Updates the weights, given the gradients and the learning rate,. More...
|
|
void | WriteMatrixToXML (void *node, const char *name, const Matrix_t &matrix) |
|
void | WriteTensorToXML (void *node, const char *name, const std::vector< Matrix_t > &tensor) |
| helper functions for XML More...
|
|