/usr/include/mlpack/methods/sparse_autoencoder/sparse_autoencoder_impl.hpp is in libmlpack-dev 1.0.10-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | /**
* @file sparse_autoencoder_impl.hpp
* @author Siddharth Agrawal
*
* Implementation of sparse autoencoders.
*
* This file is part of MLPACK 1.0.10.
*
* MLPACK is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* MLPACK is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details (LICENSE.txt).
*
* You should have received a copy of the GNU General Public License along with
* MLPACK. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __MLPACK_METHODS_SPARSE_AUTOENCODER_SPARSE_AUTOENCODER_IMPL_HPP
#define __MLPACK_METHODS_SPARSE_AUTOENCODER_SPARSE_AUTOENCODER_IMPL_HPP
// In case it hasn't been included yet.
#include "sparse_autoencoder.hpp"
namespace mlpack {
namespace nn {
template<template<typename> class OptimizerType>
SparseAutoencoder<OptimizerType>::SparseAutoencoder(const arma::mat& data,
const size_t visibleSize,
const size_t hiddenSize,
double lambda,
double beta,
double rho) :
visibleSize(visibleSize),
hiddenSize(hiddenSize),
lambda(lambda),
beta(beta),
rho(rho)
{
SparseAutoencoderFunction encoderFunction(data, visibleSize, hiddenSize,
lambda, beta, rho);
OptimizerType<SparseAutoencoderFunction> optimizer(encoderFunction);
parameters = encoderFunction.GetInitialPoint();
// Train the model.
Timer::Start("sparse_autoencoder_optimization");
const double out = optimizer.Optimize(parameters);
Timer::Stop("sparse_autoencoder_optimization");
Log::Info << "SparseAutoencoder::SparseAutoencoder(): final objective of "
<< "trained model is " << out << "." << std::endl;
}
template<template<typename> class OptimizerType>
SparseAutoencoder<OptimizerType>::SparseAutoencoder(
OptimizerType<SparseAutoencoderFunction> &optimizer) :
parameters(optimizer.Function().GetInitialPoint()),
visibleSize(optimizer.Function().VisibleSize()),
hiddenSize(optimizer.Function().HiddenSize()),
lambda(optimizer.Function().Lambda()),
beta(optimizer.Function().Beta()),
rho(optimizer.Function().Rho())
{
Timer::Start("sparse_autoencoder_optimization");
const double out = optimizer.Optimize(parameters);
Timer::Stop("sparse_autoencoder_optimization");
Log::Info << "SparseAutoencoder::SparseAutoencoder(): final objective of "
<< "trained model is " << out << "." << std::endl;
}
template<template<typename> class OptimizerType>
void SparseAutoencoder<OptimizerType>::GetNewFeatures(arma::mat& data,
arma::mat& features)
{
const size_t l1 = hiddenSize;
const size_t l2 = visibleSize;
Sigmoid(parameters.submat(0, 0, l1 - 1, l2 - 1) * data +
arma::repmat(parameters.submat(0, l2, l1 - 1, l2), 1, data.n_cols),
features);
}
}; // namespace nn
}; // namespace mlpack
#endif
|