mlpack
Namespaces | Functions
maximal_inputs.cpp File Reference
#include "maximal_inputs.hpp"
Include dependency graph for maximal_inputs.cpp:

Namespaces

 mlpack
 Linear algebra utility functions, generally performed on matrices or vectors.
 

Functions

void mlpack::nn::MaximalInputs (const arma::mat &parameters, arma::mat &output)
 Given a parameters matrix from an autoencoder, maximize the hidden units of the parameters, storing the maximal inputs in the given output matrix. More...
 
void mlpack::nn::NormalizeColByMax (const arma::mat &input, arma::mat &output)
 Normalize each column of the input matrix by its maximum value, if that maximum value is not zero. More...
 

Detailed Description

Author
Tham Ngap Wei

Implementation of MaximalInputs().

mlpack is free software; you may redistribute it and/or modify it under the terms of the 3-clause BSD license. You should have received a copy of the 3-clause BSD license along with mlpack. If not, see http://www.opensource.org/licenses/BSD-3-Clause for more information.

Function Documentation

◆ MaximalInputs()

void mlpack::nn::MaximalInputs ( const arma::mat &  parameters,
arma::mat &  output 
)

Given a parameters matrix from an autoencoder, maximize the hidden units of the parameters, storing the maximal inputs in the given output matrix.

Details can be found on the 'Visualizing a Trained Autoencoder' page of the Stanford UFLDL tutorial:

http://deeplearning.stanford.edu/wiki/index.php/Main_Page

This function is based on the implementation (display_network.m) from the "Exercise: Sparse Autoencoder" page of the UFLDL tutorial:

http://deeplearning.stanford.edu/wiki/index.php/Exercise:Sparse_Autoencoder

Example usage of this function can be seen below. Note that this function can work with the ColumnsToBlocks class in order to reshape the maximal inputs for visualization, as in the UFLDL tutorial. The code below demonstrates this.

arma::mat data; // Data matrix.
const size_t vSize = 64; // Size of visible layer, depends on the data.
const size_t hSize = 25; // Size of hidden layer, depends on requirements.
const size_t numBasis = 5; // Parameter required for L-BFGS algorithm.
const size_t numIterations = 100; // Maximum number of iterations.
// Use an instantiated optimizer for the training.
SparseAutoencoder<L_BFGS> encoder(data, vSize, hSize);
arma::mat maximalInput; // Store the features learned by sparse autoencoder
mlpack::nn::MaximalInputs(encoder.Parameters(), maximalInput);
arma::mat outputs;
const bool scale = true;
ColumnsToBlocks ctb(5,5);
arma::mat output;
ctb.Transform(maximalInput, output);
// Save the output as PGM, for visualization.
output.save(fileName, arma::pgm_binary);
Precondition
Layout of parameters

The layout of the parameters matrix should be same as following

// vSize 1
// | | |
// hSize| w1 |b1|
// |________|__|
// | | |
// hSize| w2' | |
// |________|__|
// 1| b2' | |

Also, the square root of vSize must be an integer (i.e. vSize must be a perfect square).

Parameters
parametersThe parameters of the autoencoder.
outputMatrix to store the maximal inputs in.

◆ NormalizeColByMax()

void mlpack::nn::NormalizeColByMax ( const arma::mat &  input,
arma::mat &  output 
)

Normalize each column of the input matrix by its maximum value, if that maximum value is not zero.

Parameters
inputThe input data to normalize.
outputA matrix to store the input data in after normalization.