[mlpack-git] master: Input sample can be represented by more than one slice. (ccc6ff0)
gitdub at mlpack.org
gitdub at mlpack.org
Fri Jul 15 13:29:43 EDT 2016
Repository : https://github.com/mlpack/mlpack
On branch : master
Link : https://github.com/mlpack/mlpack/compare/81c14d9ec8250f8a2caaf1ac06c4be12fc5fd31f...ccc6ff0c01d670536dca496ebdf74d78497020f6
>---------------------------------------------------------------
commit ccc6ff0c01d670536dca496ebdf74d78497020f6
Author: Marcus Edel <marcus.edel at fu-berlin.de>
Date: Fri Jul 15 19:29:20 2016 +0200
Input sample can be represented by more than one slice.
>---------------------------------------------------------------
ccc6ff0c01d670536dca496ebdf74d78497020f6
src/mlpack/methods/ann/cnn.hpp | 3 +++
src/mlpack/methods/ann/cnn_impl.hpp | 13 ++++++++-----
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/src/mlpack/methods/ann/cnn.hpp b/src/mlpack/methods/ann/cnn.hpp
index 3df23ac..7ef71ed 100644
--- a/src/mlpack/methods/ann/cnn.hpp
+++ b/src/mlpack/methods/ann/cnn.hpp
@@ -429,6 +429,9 @@ class CNN
//! Locally stored backward error.
arma::mat error;
+
+ //! Locally stored sample size.
+ size_t sampleSize;
}; // class CNN
} // namespace ann
diff --git a/src/mlpack/methods/ann/cnn_impl.hpp b/src/mlpack/methods/ann/cnn_impl.hpp
index a6d4e4d..fc66c15 100644
--- a/src/mlpack/methods/ann/cnn_impl.hpp
+++ b/src/mlpack/methods/ann/cnn_impl.hpp
@@ -127,6 +127,7 @@ LayerTypes, OutputLayerType, InitializationRuleType, PerformanceFunction
>::Train(const arma::cube& predictors, const arma::mat& responses)
{
numFunctions = predictors.n_cols;
+ sampleSize = predictors.n_slices / responses.n_cols;
this->predictors = predictors;
this->responses = responses;
@@ -153,7 +154,8 @@ LayerTypes, OutputLayerType, InitializationRuleType, PerformanceFunction
const arma::mat& responses,
OptimizerType<NetworkType>& optimizer)
{
- numFunctions = predictors.n_cols;
+ numFunctions = responses.n_cols;
+ sampleSize = predictors.n_slices / responses.n_cols;
this->predictors = predictors;
this->responses = responses;
@@ -200,15 +202,15 @@ LayerTypes, OutputLayerType, InitializationRuleType, PerformanceFunction
arma::mat responsesTemp;
ResetParameter(network);
- Forward(predictors.slices(0, 0), network);
+ Forward(predictors.slices(0, sampleSize - 1), network);
OutputPrediction(responsesTemp, network);
responses = arma::mat(responsesTemp.n_elem, predictors.n_slices);
responses.col(0) = responsesTemp.col(0);
- for (size_t i = 1; i < predictors.n_slices; i++)
+ for (size_t i = 1; i < (predictors.n_slices / sampleSize); i++)
{
- Forward(predictors.slices(i, i), network);
+ Forward(predictors.slices(i, (i + 1) * sampleSize - 1), network);
responsesTemp = arma::mat(responses.colptr(i), responses.n_rows, 1, false,
true);
@@ -231,7 +233,7 @@ LayerTypes, OutputLayerType, InitializationRuleType, PerformanceFunction
this->deterministic = deterministic;
ResetParameter(network);
- Forward(predictors.slices(i, i), network);
+ Forward(predictors.slices(i, (i + 1) * sampleSize - 1), network);
return OutputError(arma::mat(responses.colptr(i), responses.n_rows, 1, false,
true), error, network);
@@ -267,6 +269,7 @@ LayerTypes, OutputLayerType, InitializationRuleType, PerformanceFunction
>::Serialize(Archive& ar, const unsigned int /* version */)
{
ar & data::CreateNVP(parameter, "parameter");
+ ar & data::CreateNVP(sampleSize, "sampleSize");
// If we are loading, we need to initialize the weights.
if (Archive::is_loading::value)
More information about the mlpack-git
mailing list