[mlpack-svn] r16443 - mlpack/trunk/src/mlpack/methods/sparse_autoencoder
fastlab-svn at coffeetalk-1.cc.gatech.edu
fastlab-svn at coffeetalk-1.cc.gatech.edu
Wed Apr 16 15:36:06 EDT 2014
Author: rcurtin
Date: Wed Apr 16 15:36:06 2014
New Revision: 16443
Log:
Change Sigmoid() function to avoid matrix copies via the return value.
Modified:
mlpack/trunk/src/mlpack/methods/sparse_autoencoder/sparse_autoencoder.hpp
mlpack/trunk/src/mlpack/methods/sparse_autoencoder/sparse_autoencoder_function.cpp
mlpack/trunk/src/mlpack/methods/sparse_autoencoder/sparse_autoencoder_function.hpp
mlpack/trunk/src/mlpack/methods/sparse_autoencoder/sparse_autoencoder_impl.hpp
Modified: mlpack/trunk/src/mlpack/methods/sparse_autoencoder/sparse_autoencoder.hpp
==============================================================================
--- mlpack/trunk/src/mlpack/methods/sparse_autoencoder/sparse_autoencoder.hpp (original)
+++ mlpack/trunk/src/mlpack/methods/sparse_autoencoder/sparse_autoencoder.hpp Wed Apr 16 15:36:06 2014
@@ -110,9 +110,9 @@
*
* @param x Matrix of real values for which we require the sigmoid activation.
*/
- arma::mat Sigmoid(const arma::mat& x) const
+ void Sigmoid(const arma::mat& x, arma::mat& output) const
{
- return (1.0 / (1 + arma::exp(-x)));
+ output = (1.0 / (1 + arma::exp(-x)));
}
//! Sets size of the visible layer.
Modified: mlpack/trunk/src/mlpack/methods/sparse_autoencoder/sparse_autoencoder_function.cpp
==============================================================================
--- mlpack/trunk/src/mlpack/methods/sparse_autoencoder/sparse_autoencoder_function.cpp (original)
+++ mlpack/trunk/src/mlpack/methods/sparse_autoencoder/sparse_autoencoder_function.cpp Wed Apr 16 15:36:06 2014
@@ -93,12 +93,13 @@
arma::mat hiddenLayer, outputLayer;
// Compute activations of the hidden and output layers.
- hiddenLayer = Sigmoid(parameters.submat(0, 0, l1 - 1, l2 - 1) * data +
- arma::repmat(parameters.submat(0, l2, l1 - 1, l2), 1, data.n_cols));
-
- outputLayer = Sigmoid(
- parameters.submat(l1, 0, l3 - 1, l2 - 1).t() * hiddenLayer +
- arma::repmat(parameters.submat(l3, 0, l3, l2 - 1).t(), 1, data.n_cols));
+ Sigmoid(parameters.submat(0, 0, l1 - 1, l2 - 1) * data +
+ arma::repmat(parameters.submat(0, l2, l1 - 1, l2), 1, data.n_cols),
+ hiddenLayer);
+
+ Sigmoid(parameters.submat(l1, 0, l3 - 1, l2 - 1).t() * hiddenLayer +
+ arma::repmat(parameters.submat(l3, 0, l3, l2 - 1).t(), 1, data.n_cols),
+ outputLayer);
arma::mat rhoCap, diff;
@@ -159,12 +160,13 @@
arma::mat hiddenLayer, outputLayer;
// Compute activations of the hidden and output layers.
- hiddenLayer = Sigmoid(parameters.submat(0, 0, l1 - 1, l2 - 1) * data +
- arma::repmat(parameters.submat(0, l2, l1 - 1, l2), 1, data.n_cols));
-
- outputLayer = Sigmoid(
- parameters.submat(l1, 0, l3 - 1, l2 - 1).t() * hiddenLayer +
- arma::repmat(parameters.submat(l3, 0, l3, l2 - 1).t(), 1, data.n_cols));
+ Sigmoid(parameters.submat(0, 0, l1 - 1, l2 - 1) * data +
+ arma::repmat(parameters.submat(0, l2, l1 - 1, l2), 1, data.n_cols),
+ hiddenLayer);
+
+ Sigmoid(parameters.submat(l1, 0, l3 - 1, l2 - 1).t() * hiddenLayer +
+ arma::repmat(parameters.submat(l3, 0, l3, l2 - 1).t(), 1, data.n_cols),
+ outputLayer);
arma::mat rhoCap, diff;
Modified: mlpack/trunk/src/mlpack/methods/sparse_autoencoder/sparse_autoencoder_function.hpp
==============================================================================
--- mlpack/trunk/src/mlpack/methods/sparse_autoencoder/sparse_autoencoder_function.hpp (original)
+++ mlpack/trunk/src/mlpack/methods/sparse_autoencoder/sparse_autoencoder_function.hpp Wed Apr 16 15:36:06 2014
@@ -71,9 +71,9 @@
*
* @param x Matrix of real values for which we require the sigmoid activation.
*/
- arma::mat Sigmoid(const arma::mat& x) const
+ void Sigmoid(const arma::mat& x, arma::mat& output) const
{
- return (1.0 / (1 + arma::exp(-x)));
+ output = (1.0 / (1 + arma::exp(-x)));
}
//! Return the initial point for the optimization.
Modified: mlpack/trunk/src/mlpack/methods/sparse_autoencoder/sparse_autoencoder_impl.hpp
==============================================================================
--- mlpack/trunk/src/mlpack/methods/sparse_autoencoder/sparse_autoencoder_impl.hpp (original)
+++ mlpack/trunk/src/mlpack/methods/sparse_autoencoder/sparse_autoencoder_impl.hpp Wed Apr 16 15:36:06 2014
@@ -66,8 +66,9 @@
const size_t l1 = hiddenSize;
const size_t l2 = visibleSize;
- features = Sigmoid(parameters.submat(0, 0, l1 - 1, l2 - 1) * data +
- arma::repmat(parameters.submat(0, l2, l1 - 1, l2), 1, data.n_cols));
+ 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
More information about the mlpack-svn
mailing list