MiniDNN
MiniDNN::MaxPooling< Activation > Class Template Reference

#include <MaxPooling.h>

Inheritance diagram for MiniDNN::MaxPooling< Activation >:
MiniDNN::Layer

Public Member Functions

 MaxPooling (const int in_width, const int in_height, const int in_channels, const int pooling_width, const int pooling_height)
 
void init (const Scalar &mu, const Scalar &sigma, RNG &rng)
 
void forward (const Matrix &prev_layer_data)
 
const Matrix & output () const
 
void backprop (const Matrix &prev_layer_data, const Matrix &next_layer_data)
 
const Matrix & backprop_data () const
 
void update (Optimizer &opt)
 
std::vector< Scalar > get_parameters () const
 
void set_parameters (const std::vector< Scalar > &param)
 
std::vector< Scalar > get_derivatives () const
 
- Public Member Functions inherited from MiniDNN::Layer
 Layer (const int in_size, const int out_size)
 
virtual ~Layer ()
 
int in_size () const
 
int out_size () const
 

Detailed Description

template<typename Activation>
class MiniDNN::MaxPooling< Activation >

Max-pooling hidden layer

Currently only supports the "valid" rule of pooling.

Definition at line 22 of file MaxPooling.h.

Constructor & Destructor Documentation

◆ MaxPooling()

template<typename Activation >
MiniDNN::MaxPooling< Activation >::MaxPooling ( const int  in_width,
const int  in_height,
const int  in_channels,
const int  pooling_width,
const int  pooling_height 
)
inline

Constructor

Parameters
in_widthWidth of the input image in each channel.
in_heightHeight of the input image in each channel.
in_channelsNumber of input channels.
pooling_widthWidth of the pooling window.
pooling_heightHeight of the pooling window.

Definition at line 55 of file MaxPooling.h.

Member Function Documentation

◆ init()

template<typename Activation >
void MiniDNN::MaxPooling< Activation >::init ( const Scalar &  mu,
const Scalar &  sigma,
RNG rng 
)
inlinevirtual

Initialize layer parameters using \(N(\mu, \sigma^2)\) distribution

Parameters
muMean of the normal distribution.
sigmaStandard deviation of the normal distribution.
rngThe random number generator of type RNG.

Implements MiniDNN::Layer.

Definition at line 64 of file MaxPooling.h.

◆ forward()

template<typename Activation >
void MiniDNN::MaxPooling< Activation >::forward ( const Matrix &  prev_layer_data)
inlinevirtual

Compute the output of this layer

The purpose of this function is to let the hidden layer compute information that will be passed to the next layer as the input. The concrete behavior of this function is subject to the implementation, with the only requirement that after calling this function, the Layer::output() member function will return a reference to the output values.

Parameters
prev_layer_dataThe output of previous layer, which is also the input of this layer. prev_layer_data should have in_size rows as in the constructor, and each column of prev_layer_data is an observation.

Implements MiniDNN::Layer.

Definition at line 66 of file MaxPooling.h.

◆ output()

template<typename Activation >
const Matrix& MiniDNN::MaxPooling< Activation >::output ( ) const
inlinevirtual

Obtain the output values of this layer

This function is assumed to be called after Layer::forward() in each iteration. The output are the values of output hidden units after applying activation function. The main usage of this function is to provide the prev_layer_data parameter in Layer::forward() of the next layer.

Returns
A reference to the matrix that contains the output values. The matrix should have out_size rows as in the constructor, and have number of columns equal to that of prev_layer_data in the Layer::forward() function. Each column represents an observation.

Implements MiniDNN::Layer.

Definition at line 108 of file MaxPooling.h.

◆ backprop()

template<typename Activation >
void MiniDNN::MaxPooling< Activation >::backprop ( const Matrix &  prev_layer_data,
const Matrix &  next_layer_data 
)
inlinevirtual

Compute the gradients of parameters and input units using back-propagation

The purpose of this function is to compute the gradient of input units, which can be retrieved by Layer::backprop_data(), and the gradient of layer parameters, which could later be used by the Layer::update() function.

Parameters
prev_layer_dataThe output of previous layer, which is also the input of this layer. prev_layer_data should have in_size rows as in the constructor, and each column of prev_layer_data is an observation.
next_layer_dataThe gradients of the input units of the next layer, which is also the gradients of the output units of this layer. next_layer_data should have out_size rows as in the constructor, and the same number of columns as prev_layer_data.

Implements MiniDNN::Layer.

Definition at line 112 of file MaxPooling.h.

◆ backprop_data()

template<typename Activation >
const Matrix& MiniDNN::MaxPooling< Activation >::backprop_data ( ) const
inlinevirtual

Obtain the gradient of input units of this layer

This function provides the next_layer_data parameter in Layer::backprop() of the previous layer, since the derivative of the input of this layer is also the derivative of the output of previous layer.

Implements MiniDNN::Layer.

Definition at line 137 of file MaxPooling.h.

◆ update()

template<typename Activation >
void MiniDNN::MaxPooling< Activation >::update ( Optimizer opt)
inlinevirtual

Update parameters after back-propagation

Parameters
optThe optimization algorithm to be used. See the Optimizer class.

Implements MiniDNN::Layer.

Definition at line 139 of file MaxPooling.h.

◆ get_parameters()

template<typename Activation >
std::vector<Scalar> MiniDNN::MaxPooling< Activation >::get_parameters ( ) const
inlinevirtual

Get serialized values of parameters

Implements MiniDNN::Layer.

Definition at line 141 of file MaxPooling.h.

◆ set_parameters()

template<typename Activation >
void MiniDNN::MaxPooling< Activation >::set_parameters ( const std::vector< Scalar > &  param)
inlinevirtual

Set the values of layer parameters from serialized data

Reimplemented from MiniDNN::Layer.

Definition at line 143 of file MaxPooling.h.

◆ get_derivatives()

template<typename Activation >
std::vector<Scalar> MiniDNN::MaxPooling< Activation >::get_derivatives ( ) const
inlinevirtual

Get serialized values of the gradient of parameters

Implements MiniDNN::Layer.

Definition at line 145 of file MaxPooling.h.


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