MachineIntelligenceCore:NeuralNets
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Friends Macros
mic::mlnn::convolution::Convolution< eT > Class Template Reference

Class representing a convolution layer, with "valid padding" and variable stride. More...

#include <Convolution.hpp>

Inheritance diagram for mic::mlnn::convolution::Convolution< eT >:
Collaboration diagram for mic::mlnn::convolution::Convolution< eT >:

Public Member Functions

 Convolution (size_t input_height_, size_t input_width_, size_t input_channels_, size_t number_of_filters_, size_t filter_size_, size_t stride_, std::string name_="Convolution")
 
virtual ~Convolution ()
 
virtual std::string streamLayerParameters ()
 
void forward (bool test=false)
 
void backward ()
 
void backpropagade_dy_to_dx ()
 
void backpropagade_dy_to_dW ()
 
void backpropagade_dy_to_db ()
 
void resetGrads ()
 
void update (eT alpha_, eT decay_=0.0f)
 
std::vector< std::shared_ptr
< mic::types::Matrix< eT > > > & 
getWeightActivations ()
 
std::vector< std::shared_ptr
< mic::types::Matrix< eT > > > & 
getWeightGradientActivations ()
 
std::vector< std::shared_ptr
< mic::types::Matrix< eT > > > & 
getReceptiveFields ()
 
std::vector< std::shared_ptr
< mic::types::Matrix< eT > > > & 
getInverseReceptiveFields ()
 
mic::types::MatrixPtr< eT > getFilterSimilarityMatrix ()
 
eT cosineSimilarity (eT *A, eT *B, size_t length_)
 
- Public Member Functions inherited from mic::mlnn::Layer< eT >
 Layer (size_t input_height_, size_t input_width_, size_t input_depth_, size_t output_height_, size_t output_width_, size_t output_depth_, LayerTypes layer_type_, std::string name_="layer")
 
virtual ~Layer ()
 
mic::types::MatrixPtr< eT > forward (mic::types::MatrixPtr< eT > x_, bool test=false)
 
mic::types::MatrixPtr< eT > backward (mic::types::MatrixPtr< eT > dy_)
 
virtual void resizeBatch (size_t batch_size_)
 
template<typename loss >
mic::types::MatrixPtr< eT > calculateNumericalGradient (mic::types::MatrixPtr< eT > x_, mic::types::MatrixPtr< eT > target_y_, mic::types::MatrixPtr< eT > param_, loss loss_, eT delta_)
 
size_t inputSize ()
 Returns size (length) of inputs. More...
 
size_t outputSize ()
 Returns size (length) of outputs. More...
 
size_t batchSize ()
 Returns size (length) of (mini)batch. More...
 
const std::string name () const
 Returns name of the layer. More...
 
mic::types::MatrixPtr< eT > getParam (std::string name_)
 
mic::types::MatrixPtr< eT > getState (std::string name_)
 
mic::types::MatrixPtr< eT > getGradient (std::string name_)
 
void setState (std::string name_, mic::types::MatrixPtr< eT > mat_ptr_)
 
template<typename omT >
void setOptimization ()
 
const std::string type () const
 
mic::types::MatrixPtr< eT > lazyReturnSampleFromBatch (mic::types::MatrixPtr< eT > batch_ptr_, mic::types::MatrixArray< eT > &array_, std::string id_, size_t sample_number_, size_t sample_size_)
 
mic::types::MatrixPtr< eT > lazyReturnInputSample (mic::types::MatrixPtr< eT > batch_ptr_, size_t sample_number_)
 
mic::types::MatrixPtr< eT > lazyReturnOutputSample (mic::types::MatrixPtr< eT > batch_ptr_, size_t sample_number_)
 
mic::types::MatrixPtr< eT > lazyReturnChannelFromSample (mic::types::MatrixPtr< eT > sample_ptr_, mic::types::MatrixArray< eT > &array_, std::string id_, size_t sample_number_, size_t channel_number_, size_t height_, size_t width_)
 
mic::types::MatrixPtr< eT > lazyReturnInputChannel (mic::types::MatrixPtr< eT > sample_ptr_, size_t sample_number_, size_t channel_number_)
 
mic::types::MatrixPtr< eT > lazyReturnOutputChannel (mic::types::MatrixPtr< eT > sample_ptr_, size_t sample_number_, size_t channel_number_)
 
void lazyAllocateMatrixVector (std::vector< std::shared_ptr< mic::types::Matrix< eT > > > &vector_, size_t vector_size_, size_t matrix_height_, size_t matrix_width_)
 
virtual std::vector
< std::shared_ptr
< mic::types::Matrix< eT > > > & 
getInputActivations ()
 
virtual std::vector
< std::shared_ptr
< mic::types::Matrix< eT > > > & 
getInputGradientActivations ()
 
virtual std::vector
< std::shared_ptr
< mic::types::Matrix< eT > > > & 
getOutputActivations ()
 
virtual std::vector
< std::shared_ptr
< mic::types::Matrix< eT > > > & 
getOutputGradientActivations ()
 

Protected Attributes

size_t filter_size
 Size of filters (assuming square filters). Filter_size^2 = length of the output vector. More...
 
size_t stride
 Stride (assuming equal vertical and horizontal strides). More...
 
- Protected Attributes inherited from mic::mlnn::Layer< eT >
size_t input_height
 Height of the input (e.g. 28 for MNIST). More...
 
size_t input_width
 Width of the input (e.g. 28 for MNIST). More...
 
size_t input_depth
 Number of channels of the input (e.g. 3 for RGB images). More...
 
size_t output_height
 Number of receptive fields in a single channel - vertical direction. More...
 
size_t output_width
 Number of receptive fields in a single channel - horizontal direction. More...
 
size_t output_depth
 Number of filters = number of output channels. More...
 
size_t batch_size
 Size (length) of (mini)batch. More...
 
LayerTypes layer_type
 Type of the layer. More...
 
std::string layer_name
 Name (identifier of the type) of the layer. More...
 
mic::types::MatrixArray< eT > s
 States - contains input [x] and output [y] matrices. More...
 
mic::types::MatrixArray< eT > g
 Gradients - contains input [x] and output [y] matrices. More...
 
mic::types::MatrixArray< eT > p
 Parameters - parameters of the layer, to be used by the derived classes. More...
 
mic::types::MatrixArray< eT > m
 Memory - a list of temporal parameters, to be used by the derived classes. More...
 
mic::neural_nets::optimization::OptimizationArray
< eT > 
opt
 Array of optimization functions. More...
 
std::vector< std::shared_ptr
< mic::types::Matrix< eT > > > 
x_activations
 Vector containing activations of input neurons - used in visualization. More...
 
std::vector< std::shared_ptr
< mic::types::Matrix< eT > > > 
dx_activations
 Vector containing activations of gradients of inputs (dx) - used in visualization. More...
 
std::vector< std::shared_ptr
< mic::types::Matrix< eT > > > 
y_activations
 Vector containing activations of output neurons - used in visualization. More...
 
std::vector< std::shared_ptr
< mic::types::Matrix< eT > > > 
dy_activations
 Vector containing activations of gradients of outputs (dy) - used in visualization. More...
 

Private Member Functions

 Convolution ()
 

Private Attributes

std::vector
< mic::types::MatrixPtr< eT > > 
w_activations
 Vector containing activations of weights/filters. More...
 
std::vector
< mic::types::MatrixPtr< eT > > 
dw_activations
 Vector containing activations of gradients of weights (dW). More...
 
std::vector
< mic::types::MatrixPtr< eT > > 
xrf_activations
 Vector containing receptive fields. More...
 
std::vector
< mic::types::MatrixPtr< eT > > 
irf_activations
 Vector containing inverse receptive fields. More...
 

Friends

template<typename tmp >
class mic::mlnn::MultiLayerNeuralNetwork
 

Additional Inherited Members

- Protected Member Functions inherited from mic::mlnn::Layer< eT >
 Layer ()
 

Detailed Description

template<typename eT = float>
class mic::mlnn::convolution::Convolution< eT >

Class representing a convolution layer, with "valid padding" and variable stride.

Author
tkornuta
Template Parameters
eTTemplate parameter denoting precision of variables (float for calculations/double for testing).

Definition at line 41 of file Convolution.hpp.

Constructor & Destructor Documentation

template<typename eT = float>
mic::mlnn::convolution::Convolution< eT >::Convolution ( size_t  input_height_,
size_t  input_width_,
size_t  input_channels_,
size_t  number_of_filters_,
size_t  filter_size_,
size_t  stride_,
std::string  name_ = "Convolution< eT >" 
)
inline

Creates a convolutional layer.

Parameters
input_height_Height of the input / rows (e.g. 28 for MNIST).
input_width_Width of the input / columns (e.g. 28 for MNIST).
input_channels_Number of channels of the input (e.g. 3 for RGB images).
number_of_filters_Number of filters = Length of the output vector.
filter_size_Size of filters (assuming square filters).
stride_Stride (assuming equal vertical and horizontal strides).
name_Name of the layer.

Definition at line 54 of file Convolution.hpp.

template<typename eT = float>
virtual mic::mlnn::convolution::Convolution< eT >::~Convolution ( )
inlinevirtual

Virtual destructor - empty.

Definition at line 159 of file Convolution.hpp.

template<typename eT = float>
mic::mlnn::convolution::Convolution< eT >::Convolution ( )
inlineprivate

Private constructor, used only during the serialization.

Definition at line 838 of file Convolution.hpp.

Member Function Documentation

template<typename eT = float>
void mic::mlnn::convolution::Convolution< eT >::backpropagade_dy_to_db ( )
inline

Back-propagates the gradients from dy to dx.

Definition at line 558 of file Convolution.hpp.

Referenced by mic::mlnn::convolution::Convolution< float >::backward().

template<typename eT = float>
void mic::mlnn::convolution::Convolution< eT >::backpropagade_dy_to_dW ( )
inline

Back-propagates the gradients from dy to dW.

Definition at line 449 of file Convolution.hpp.

Referenced by mic::mlnn::convolution::Convolution< float >::backward().

template<typename eT = float>
void mic::mlnn::convolution::Convolution< eT >::backpropagade_dy_to_dx ( )
inline

Back-propagates the gradients from dy to dx.

Definition at line 335 of file Convolution.hpp.

Referenced by mic::mlnn::convolution::Convolution< float >::backward().

template<typename eT = float>
void mic::mlnn::convolution::Convolution< eT >::backward ( )
inlinevirtual

Back-propagates the gradients through the layer.

Implements mic::mlnn::Layer< eT >.

Definition at line 296 of file Convolution.hpp.

template<typename eT = float>
eT mic::mlnn::convolution::Convolution< eT >::cosineSimilarity ( eT *  A,
eT *  B,
size_t  length_ 
)
inline

Calculates the cosine similarity between two vectors/matrices.

Parameters
APointer to a memory with the first vector.
BPointer to a memory with the second vector.
length_Length of (both) vector(s).

Definition at line 777 of file Convolution.hpp.

Referenced by mic::mlnn::convolution::Convolution< float >::getFilterSimilarityMatrix().

template<typename eT = float>
void mic::mlnn::convolution::Convolution< eT >::forward ( bool  test = false)
inlinevirtual

Performs forward pass through the filters. Can process batches.

Implements mic::mlnn::Layer< eT >.

Definition at line 186 of file Convolution.hpp.

template<typename eT = float>
mic::types::MatrixPtr<eT> mic::mlnn::convolution::Convolution< eT >::getFilterSimilarityMatrix ( )
inline

Returns a matrix containing filter similarities. Note: in diagonal zeros.

Definition at line 738 of file Convolution.hpp.

template<typename eT = float>
std::vector< std::shared_ptr <mic::types::Matrix<eT> > >& mic::mlnn::convolution::Convolution< eT >::getInverseReceptiveFields ( )
inline

Returns activations of inverse receptive fields. Limitation: displays receptive fields of the last sample from batch!

Definition at line 707 of file Convolution.hpp.

template<typename eT = float>
std::vector< std::shared_ptr <mic::types::Matrix<eT> > >& mic::mlnn::convolution::Convolution< eT >::getReceptiveFields ( )
inline

Returns activations of receptive fields. Limitation: displays receptive fields of the last sample from batch!

Definition at line 675 of file Convolution.hpp.

template<typename eT = float>
std::vector< std::shared_ptr <mic::types::Matrix<eT> > >& mic::mlnn::convolution::Convolution< eT >::getWeightActivations ( )
inline

Returns activations of weights.

Definition at line 613 of file Convolution.hpp.

template<typename eT = float>
std::vector< std::shared_ptr <mic::types::Matrix<eT> > >& mic::mlnn::convolution::Convolution< eT >::getWeightGradientActivations ( )
inline

Returns activations of weight gradients (dx).

Definition at line 644 of file Convolution.hpp.

template<typename eT = float>
void mic::mlnn::convolution::Convolution< eT >::resetGrads ( )
inlinevirtual

Resets all gradients. Warning: including gx and gy!

Reimplemented from mic::mlnn::Layer< eT >.

Definition at line 579 of file Convolution.hpp.

template<typename eT = float>
virtual std::string mic::mlnn::convolution::Convolution< eT >::streamLayerParameters ( )
inlinevirtual

Stream layer parameters.

Returns
Ostream object.

Reimplemented from mic::mlnn::Layer< eT >.

Definition at line 165 of file Convolution.hpp.

Referenced by mic::mlnn::convolution::Convolution< float >::Convolution().

template<typename eT = float>
void mic::mlnn::convolution::Convolution< eT >::update ( eT  alpha_,
eT  decay_ = 0.0f 
)
inlinevirtual

Applies the gradient update, using the selected optimization method.

Parameters
alpha_Learning rate - passed to the optimization functions of all layers.
decay_Weight decay rate (determining that the "unused/unupdated" weights will decay to 0) (DEFAULT=0.0 - no decay).

Implements mic::mlnn::Layer< eT >.

Definition at line 590 of file Convolution.hpp.

Friends And Related Function Documentation

template<typename eT = float>
template<typename tmp >
friend class mic::mlnn::MultiLayerNeuralNetwork
friend

Definition at line 821 of file Convolution.hpp.

Member Data Documentation

template<typename eT = float>
std::vector<mic::types::MatrixPtr<eT> > mic::mlnn::convolution::Convolution< eT >::dw_activations
private

Vector containing activations of gradients of weights (dW).

Definition at line 827 of file Convolution.hpp.

Referenced by mic::mlnn::convolution::Convolution< float >::getWeightGradientActivations().

template<typename eT = float>
std::vector<mic::types::MatrixPtr<eT> > mic::mlnn::convolution::Convolution< eT >::irf_activations
private

Vector containing inverse receptive fields.

Definition at line 833 of file Convolution.hpp.

Referenced by mic::mlnn::convolution::Convolution< float >::getInverseReceptiveFields().

template<typename eT = float>
std::vector<mic::types::MatrixPtr<eT> > mic::mlnn::convolution::Convolution< eT >::w_activations
private

Vector containing activations of weights/filters.

Definition at line 824 of file Convolution.hpp.

Referenced by mic::mlnn::convolution::Convolution< float >::getWeightActivations().

template<typename eT = float>
std::vector<mic::types::MatrixPtr<eT> > mic::mlnn::convolution::Convolution< eT >::xrf_activations
private

Vector containing receptive fields.

Definition at line 830 of file Convolution.hpp.

Referenced by mic::mlnn::convolution::Convolution< float >::getReceptiveFields().


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