Generic Max Pooling Layer class.
This generic Max Pooling Layer Class represents a pooling layer of a CNN. It inherits all of the properties of the convolutional layer TConvLayer, but it overrides the propagation methods. In a sense, max pooling can be seen as non-linear convolution: a filter slides over the input and produces one element as a function of the elements within the receptive field. In addition to that, it contains a matrix of winning units.
The height and width of the weights and biases is set to 0, since this layer does not contain any weights.
Definition at line 59 of file MaxPoolLayer.h.
Public Types | |
| using | AlgorithmBackward_t = typename Architecture_t::AlgorithmBackward_t |
| Backward layer operation. | |
| using | AlgorithmDataType_t = typename Architecture_t::AlgorithmDataType_t |
| using | AlgorithmForward_t = typename Architecture_t::AlgorithmForward_t |
| Forward layer operation. | |
| using | AlgorithmHelper_t = typename Architecture_t::AlgorithmHelper_t |
| Used for weight grad backward pass. | |
| using | HelperDescriptor_t = typename Architecture_t::DropoutDescriptor_t |
| using | LayerDescriptor_t = typename Architecture_t::PoolingDescriptor_t |
| using | Matrix_t = typename Architecture_t::Matrix_t |
| using | ReduceTensorDescriptor_t = typename Architecture_t::ReduceTensorDescriptor_t |
| using | Scalar_t = typename Architecture_t::Scalar_t |
| using | Tensor_t = typename Architecture_t::Tensor_t |
| using | WeightsDescriptor_t = typename Architecture_t::EmptyDescriptor_t |
Public Member Functions | |
| TMaxPoolLayer (const TMaxPoolLayer &) | |
| Copy constructor. | |
| TMaxPoolLayer (size_t BatchSize, size_t InputDepth, size_t InputHeight, size_t InputWidth, size_t FilterHeight, size_t FilterWidth, size_t StrideRows, size_t StrideCols, Scalar_t DropoutProbability) | |
| Constructor. | |
| TMaxPoolLayer (TMaxPoolLayer< Architecture_t > *layer) | |
| Copy the max pooling layer provided as a pointer. | |
| virtual | ~TMaxPoolLayer () |
| Destructor. | |
| void | AddWeightsXMLTo (void *parent) override |
| Writes the information and the weights about the layer in an XML node. | |
| void | Backward (Tensor_t &gradients_backward, const Tensor_t &activations_backward) override |
| Depending on the winning units determined during the Forward pass, it only forwards the derivatives to the right units in the previous layer. | |
| void | CopyBiases (const std::vector< Matrix_t > &otherBiases) |
| Copies the biases provided as an input. | |
| 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. | |
| void | CopyWeights (const std::vector< Matrix_t > &otherWeights) |
| Copies the weights provided as an input. | |
| void | Forward (Tensor_t &input, bool applyDropout=true) override |
| Computes activation of the layer for the given input. | |
| 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. | |
| 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 |
| TDescriptors * | GetDescriptors () |
| const TDescriptors * | GetDescriptors () const |
| Scalar_t | GetDropoutProbability () const |
| virtual std::vector< Matrix_t > | GetExtraLayerParameters () const |
| size_t | GetFilterDepth () const |
| Getters. | |
| size_t | GetFilterHeight () const |
| size_t | GetFilterWidth () const |
| size_t | GetHeight () const |
| Tensor_t & | GetIndexTensor () |
| const Tensor_t & | GetIndexTensor () const |
| EInitialization | GetInitialization () const |
| size_t | GetInputDepth () const |
| size_t | GetInputHeight () const |
| size_t | GetInputWidth () const |
| size_t | GetNLocalViews () const |
| Tensor_t & | GetOutput () |
| const Tensor_t & | GetOutput () const |
| Matrix_t | GetOutputAt (size_t i) |
| const Matrix_t & | GetOutputAt (size_t i) const |
| size_t | GetStrideCols () const |
| size_t | GetStrideRows () 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 |
| TWorkspace * | GetWorkspace () |
| const TWorkspace * | GetWorkspace () const |
| virtual void | Initialize () |
| Initialize the weights and biases according to the given initialization method. | |
| bool | IsTraining () const |
| void | Print () const override |
| Prints the info about the layer. | |
| void | ReadMatrixXML (void *node, const char *name, Matrix_t &matrix) |
| void | ReadWeightsFromXML (void *parent) override |
| Read the information and the weights about the layer from XML node. | |
| virtual void | ResetTraining () |
| Reset some training flags after a loop on all batches Some layer (e.g. | |
| void | SetBatchSize (size_t batchSize) |
| Setters. | |
| void | SetDepth (size_t depth) |
| virtual void | SetDropoutProbability (Scalar_t) |
| Set Dropout probability. | |
| 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. | |
| void | UpdateBiases (const std::vector< Matrix_t > &biasGradients, const Scalar_t learningRate) |
| Updates the biases, given the gradients and the learning rate. | |
| void | UpdateBiasGradients (const std::vector< Matrix_t > &biasGradients, const Scalar_t learningRate) |
| Updates the bias gradients, given some other weight gradients and learning rate. | |
| void | UpdateWeightGradients (const std::vector< Matrix_t > &weightGradients, const Scalar_t learningRate) |
| Updates the weight gradients, given some other weight gradients and learning rate. | |
| void | UpdateWeights (const std::vector< Matrix_t > &weightGradients, const Scalar_t learningRate) |
| Updates the weights, given the gradients and the learning rate,. | |
| 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 | |
Protected Attributes | |
| Tensor_t | fActivationGradients |
| Gradients w.r.t. the activations of this layer. | |
| size_t | fBatchSize |
| Batch size used for training and evaluation. | |
| std::vector< Matrix_t > | fBiases |
| The biases associated to the layer. | |
| std::vector< Matrix_t > | fBiasGradients |
| Gradients w.r.t. the bias values of the layer. | |
| size_t | fDepth |
| The depth of the layer. | |
| TDescriptors * | fDescriptors = nullptr |
| Keeps the convolution, activations and filter descriptors. | |
| Scalar_t | fDropoutProbability |
| Probability that an input is active. | |
| size_t | fFilterDepth |
| The depth of the filter. | |
| size_t | fFilterHeight |
| The height of the filter. | |
| size_t | fFilterWidth |
| The width of the filter. | |
| size_t | fHeight |
| The height of the layer. | |
| EInitialization | fInit |
| The initialization method. | |
| size_t | fInputDepth |
| The depth of the previous layer or input. | |
| size_t | fInputHeight |
| The height of the previous layer or input. | |
| size_t | fInputWidth |
| The width of the previous layer or input. | |
| bool | fIsTraining |
| Flag indicating the mode. | |
| size_t | fNLocalViewPixels |
| The number of pixels in one local image view. | |
| size_t | fNLocalViews |
| The number of local views in one image. | |
| Tensor_t | fOutput |
| Activations of this layer. | |
| size_t | fStrideCols |
| The number of column pixels to slid the filter each step. | |
| size_t | fStrideRows |
| The number of row pixels to slid the filter each step. | |
| std::vector< Matrix_t > | fWeightGradients |
| Gradients w.r.t. the weights of the layer. | |
| std::vector< Matrix_t > | fWeights |
| The weights associated to the layer. | |
| size_t | fWidth |
| The width of this layer. | |
| TWorkspace * | fWorkspace = nullptr |
Private Member Functions | |
| void | FreeWorkspace () |
| void | InitializeDescriptors () |
| void | InitializeWorkspace () |
| void | ReleaseDescriptors () |
Private Attributes | |
| Tensor_t | fIndexTensor |
| Matrix of indices for the backward pass. | |
#include <TMVA/DNN/CNN/MaxPoolLayer.h>
| using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::AlgorithmBackward_t = typename Architecture_t::AlgorithmBackward_t |
Backward layer operation.
Definition at line 72 of file MaxPoolLayer.h.
| using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::AlgorithmDataType_t = typename Architecture_t::AlgorithmDataType_t |
Definition at line 76 of file MaxPoolLayer.h.
| using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::AlgorithmForward_t = typename Architecture_t::AlgorithmForward_t |
Forward layer operation.
Definition at line 71 of file MaxPoolLayer.h.
| using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::AlgorithmHelper_t = typename Architecture_t::AlgorithmHelper_t |
Used for weight grad backward pass.
Definition at line 73 of file MaxPoolLayer.h.
| using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::HelperDescriptor_t = typename Architecture_t::DropoutDescriptor_t |
Definition at line 68 of file MaxPoolLayer.h.
| using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::LayerDescriptor_t = typename Architecture_t::PoolingDescriptor_t |
Definition at line 66 of file MaxPoolLayer.h.
| using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::Matrix_t = typename Architecture_t::Matrix_t |
Definition at line 63 of file MaxPoolLayer.h.
| using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::ReduceTensorDescriptor_t = typename Architecture_t::ReduceTensorDescriptor_t |
Definition at line 78 of file MaxPoolLayer.h.
| using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::Scalar_t = typename Architecture_t::Scalar_t |
Definition at line 64 of file MaxPoolLayer.h.
| using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::Tensor_t = typename Architecture_t::Tensor_t |
Definition at line 62 of file MaxPoolLayer.h.
| using TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::WeightsDescriptor_t = typename Architecture_t::EmptyDescriptor_t |
Definition at line 67 of file MaxPoolLayer.h.
| TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::TMaxPoolLayer | ( | size_t | BatchSize, |
| size_t | InputDepth, | ||
| size_t | InputHeight, | ||
| size_t | InputWidth, | ||
| size_t | FilterHeight, | ||
| size_t | FilterWidth, | ||
| size_t | StrideRows, | ||
| size_t | StrideCols, | ||
| Scalar_t | DropoutProbability ) |
Constructor.
Definition at line 168 of file MaxPoolLayer.h.
| TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::TMaxPoolLayer | ( | TMaxPoolLayer< Architecture_t > * | layer | ) |
Copy the max pooling layer provided as a pointer.
Definition at line 192 of file MaxPoolLayer.h.
| TMVA::DNN::CNN::TMaxPoolLayer< Architecture_t >::TMaxPoolLayer | ( | const TMaxPoolLayer< Architecture_t > & | layer | ) |
Copy constructor.
Definition at line 204 of file MaxPoolLayer.h.
|
virtual |
Destructor.
Definition at line 216 of file MaxPoolLayer.h.
|
overridevirtual |
Writes the information and the weights about the layer in an XML node.
Implements TMVA::DNN::VGeneralLayer< Architecture_t >.
Definition at line 283 of file MaxPoolLayer.h.
|
overridevirtual |
Depending on the winning units determined during the Forward pass, it only forwards the derivatives to the right units in the previous layer.
Must only be called directly at the corresponding call to Forward(...).
Implements TMVA::DNN::VGeneralLayer< Architecture_t >.
Definition at line 247 of file MaxPoolLayer.h.
|
inherited |
Copies the biases provided as an input.
Definition at line 468 of file GeneralLayer.h.
|
inherited |
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.
Definition at line 478 of file GeneralLayer.h.
|
inherited |
Copies the weights provided as an input.
Definition at line 458 of file GeneralLayer.h.
|
overridevirtual |
Computes activation of the layer for the given input.
The input must be in 3D tensor form with the different matrices corresponding to different events in the batch. It spatially downsamples the input matrices.
Implements TMVA::DNN::VGeneralLayer< Architecture_t >.
Definition at line 233 of file MaxPoolLayer.h.
|
private |
Definition at line 326 of file MaxPoolLayer.h.
|
inlineinherited |
Definition at line 200 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 199 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 205 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 206 of file GeneralLayer.h.
|
inlineinherited |
Getters.
Definition at line 163 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 179 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 178 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 182 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 181 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 191 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 190 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 194 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 193 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 167 of file GeneralLayer.h.
|
inline |
Definition at line 159 of file MaxPoolLayer.h.
|
inline |
Definition at line 160 of file MaxPoolLayer.h.
|
inline |
Definition at line 153 of file MaxPoolLayer.h.
|
inlinevirtualinherited |
Reimplemented in TMVA::DNN::TBatchNormLayer< Architecture_t >, TMVA::DNN::TBatchNormLayer< TCpu< AReal > >, and TMVA::DNN::TBatchNormLayer< TCuda< AReal > >.
Definition at line 210 of file GeneralLayer.h.
|
inline |
Getters.
Definition at line 144 of file MaxPoolLayer.h.
|
inline |
Definition at line 145 of file MaxPoolLayer.h.
|
inline |
Definition at line 146 of file MaxPoolLayer.h.
|
inlineinherited |
Definition at line 168 of file GeneralLayer.h.
|
inline |
Definition at line 156 of file MaxPoolLayer.h.
|
inline |
Definition at line 155 of file MaxPoolLayer.h.
|
inlineinherited |
Definition at line 214 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 164 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 165 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 166 of file GeneralLayer.h.
|
inline |
Definition at line 151 of file MaxPoolLayer.h.
|
inlineinherited |
Definition at line 197 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 196 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 202 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 203 of file GeneralLayer.h.
|
inline |
Definition at line 149 of file MaxPoolLayer.h.
|
inline |
Definition at line 148 of file MaxPoolLayer.h.
|
inlineinherited |
Definition at line 185 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 184 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 188 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 187 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 173 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 172 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 176 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 175 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 169 of file GeneralLayer.h.
|
inline |
Definition at line 162 of file MaxPoolLayer.h.
|
inline |
Definition at line 163 of file MaxPoolLayer.h.
|
virtualinherited |
Initialize the weights and biases according to the given initialization method.
Reimplemented in TMVA::DNN::RNN::TBasicGRULayer< Architecture_t >, TMVA::DNN::RNN::TBasicLSTMLayer< Architecture_t >, TMVA::DNN::RNN::TBasicRNNLayer< Architecture_t >, TMVA::DNN::TBatchNormLayer< Architecture_t >, TMVA::DNN::TBatchNormLayer< TCpu< AReal > >, and TMVA::DNN::TBatchNormLayer< TCuda< AReal > >.
Definition at line 395 of file GeneralLayer.h.
|
private |
Definition at line 304 of file MaxPoolLayer.h.
|
private |
Definition at line 315 of file MaxPoolLayer.h.
|
inlineinherited |
Definition at line 170 of file GeneralLayer.h.
|
overridevirtual |
Prints the info about the layer.
Implements TMVA::DNN::VGeneralLayer< Architecture_t >.
Definition at line 264 of file MaxPoolLayer.h.
|
inherited |
Definition at line 544 of file GeneralLayer.h.
|
overridevirtual |
Read the information and the weights about the layer from XML node.
Implements TMVA::DNN::VGeneralLayer< Architecture_t >.
Definition at line 297 of file MaxPoolLayer.h.
|
private |
Definition at line 309 of file MaxPoolLayer.h.
|
inlinevirtualinherited |
Reset some training flags after a loop on all batches Some layer (e.g.
batchnormalization) might need to implement the function in case some operations are needed after looping an all batches
Reimplemented in TMVA::DNN::TBatchNormLayer< Architecture_t >, TMVA::DNN::TBatchNormLayer< TCpu< AReal > >, and TMVA::DNN::TBatchNormLayer< TCuda< AReal > >.
Definition at line 121 of file GeneralLayer.h.
|
inlineinherited |
Setters.
Definition at line 217 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 221 of file GeneralLayer.h.
|
inlinevirtualinherited |
Set Dropout probability.
Reimplemented for layers supporting droput
Reimplemented in TMVA::DNN::TDenseLayer< Architecture_t >.
Definition at line 160 of file GeneralLayer.h.
|
inlinevirtualinherited |
Reimplemented in TMVA::DNN::TBatchNormLayer< Architecture_t >, TMVA::DNN::TBatchNormLayer< TCpu< AReal > >, and TMVA::DNN::TBatchNormLayer< TCuda< AReal > >.
Definition at line 212 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 222 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 218 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 219 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 220 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 224 of file GeneralLayer.h.
|
inlineinherited |
Definition at line 223 of file GeneralLayer.h.
|
inherited |
Updates the weights and biases, given the learning rate.
Definition at line 410 of file GeneralLayer.h.
|
inherited |
Updates the biases, given the gradients and the learning rate.
Definition at line 428 of file GeneralLayer.h.
|
inherited |
Updates the bias gradients, given some other weight gradients and learning rate.
Definition at line 448 of file GeneralLayer.h.
|
inherited |
Updates the weight gradients, given some other weight gradients and learning rate.
Definition at line 438 of file GeneralLayer.h.
|
inherited |
Updates the weights, given the gradients and the learning rate,.
Definition at line 418 of file GeneralLayer.h.
|
inherited |
Definition at line 521 of file GeneralLayer.h.
|
inherited |
helper functions for XML
Definition at line 496 of file GeneralLayer.h.
|
protectedinherited |
Gradients w.r.t. the activations of this layer.
Definition at line 78 of file GeneralLayer.h.
|
protectedinherited |
Batch size used for training and evaluation.
Definition at line 59 of file GeneralLayer.h.
|
protectedinherited |
The biases associated to the layer.
Definition at line 72 of file GeneralLayer.h.
|
protectedinherited |
Gradients w.r.t. the bias values of the layer.
Definition at line 75 of file GeneralLayer.h.
|
protectedinherited |
The depth of the layer.
Definition at line 65 of file GeneralLayer.h.
|
protected |
Keeps the convolution, activations and filter descriptors.
Definition at line 93 of file MaxPoolLayer.h.
|
protected |
Probability that an input is active.
Definition at line 91 of file MaxPoolLayer.h.
|
protected |
The depth of the filter.
Definition at line 81 of file MaxPoolLayer.h.
|
protected |
The height of the filter.
Definition at line 82 of file MaxPoolLayer.h.
|
protected |
The width of the filter.
Definition at line 83 of file MaxPoolLayer.h.
|
protectedinherited |
The height of the layer.
Definition at line 66 of file GeneralLayer.h.
|
private |
Matrix of indices for the backward pass.
Definition at line 98 of file MaxPoolLayer.h.
|
protectedinherited |
The initialization method.
Definition at line 80 of file GeneralLayer.h.
|
protectedinherited |
The depth of the previous layer or input.
Definition at line 61 of file GeneralLayer.h.
|
protectedinherited |
The height of the previous layer or input.
Definition at line 62 of file GeneralLayer.h.
|
protectedinherited |
The width of the previous layer or input.
Definition at line 63 of file GeneralLayer.h.
|
protectedinherited |
Flag indicating the mode.
Definition at line 69 of file GeneralLayer.h.
|
protected |
The number of pixels in one local image view.
Definition at line 88 of file MaxPoolLayer.h.
|
protected |
The number of local views in one image.
Definition at line 89 of file MaxPoolLayer.h.
|
protectedinherited |
Activations of this layer.
Definition at line 77 of file GeneralLayer.h.
|
protected |
The number of column pixels to slid the filter each step.
Definition at line 86 of file MaxPoolLayer.h.
|
protected |
The number of row pixels to slid the filter each step.
Definition at line 85 of file MaxPoolLayer.h.
|
protectedinherited |
Gradients w.r.t. the weights of the layer.
Definition at line 74 of file GeneralLayer.h.
|
protectedinherited |
The weights associated to the layer.
Definition at line 71 of file GeneralLayer.h.
|
protectedinherited |
The width of this layer.
Definition at line 67 of file GeneralLayer.h.
|
protected |
Definition at line 95 of file MaxPoolLayer.h.