[mlpack-git] master: Finish transition to Row<size_t> for labels. (cd5986e)

gitdub at big.cc.gt.atl.ga.us gitdub at big.cc.gt.atl.ga.us
Mon Dec 14 20:17:14 EST 2015


Repository : https://github.com/mlpack/mlpack

On branch  : master
Link       : https://github.com/mlpack/mlpack/compare/714d6b7829b76fd8348b894a5eb5996a5380ba2a...cd5986e141b41781fdc13a9c89443f9be33b56bd

>---------------------------------------------------------------

commit cd5986e141b41781fdc13a9c89443f9be33b56bd
Author: Ryan Curtin <ryan at ratml.org>
Date:   Mon Dec 14 20:16:32 2015 -0500

    Finish transition to Row<size_t> for labels.
    
    Fixes #333.


>---------------------------------------------------------------

cd5986e141b41781fdc13a9c89443f9be33b56bd
 src/mlpack/methods/gmm/em_fit.hpp                  |  2 +-
 src/mlpack/methods/gmm/em_fit_impl.hpp             |  2 +-
 src/mlpack/methods/gmm/gmm.hpp                     |  2 +-
 src/mlpack/methods/gmm/gmm_impl.hpp                |  2 +-
 src/mlpack/methods/hmm/hmm.hpp                     |  8 ++---
 src/mlpack/methods/hmm/hmm_generate_main.cpp       |  4 +--
 src/mlpack/methods/hmm/hmm_impl.hpp                |  6 ++--
 src/mlpack/methods/hmm/hmm_regression.hpp          |  4 +--
 src/mlpack/methods/hmm/hmm_regression_impl.hpp     |  4 +--
 src/mlpack/methods/hmm/hmm_train_main.cpp          | 22 ++++++------
 src/mlpack/methods/hmm/hmm_viterbi_main.cpp        |  4 +--
 src/mlpack/methods/kmeans/dual_tree_kmeans.hpp     |  2 +-
 .../methods/kmeans/dual_tree_kmeans_rules.hpp      |  4 +--
 .../methods/kmeans/dual_tree_kmeans_rules_impl.hpp |  2 +-
 src/mlpack/methods/kmeans/kmeans.hpp               | 14 ++++----
 src/mlpack/methods/kmeans/kmeans_impl.hpp          | 10 +++---
 src/mlpack/methods/kmeans/kmeans_main.cpp          | 13 ++++---
 .../methods/kmeans/max_variance_new_cluster.hpp    |  2 +-
 src/mlpack/methods/kmeans/random_partition.hpp     |  4 +--
 src/mlpack/methods/kmeans/refined_start.hpp        |  2 +-
 src/mlpack/methods/kmeans/refined_start_impl.hpp   |  4 +--
 .../methods/naive_bayes/naive_bayes_classifier.hpp |  4 +--
 src/mlpack/methods/nca/nca.hpp                     |  6 ++--
 src/mlpack/methods/nca/nca_impl.hpp                |  2 +-
 src/mlpack/methods/nca/nca_main.cpp                |  5 ++-
 .../methods/nca/nca_softmax_error_function.hpp     |  4 +--
 .../nca/nca_softmax_error_function_impl.hpp        |  2 +-
 .../methods/nystroem_method/kmeans_selection.hpp   |  2 +-
 src/mlpack/tests/gmm_test.cpp                      |  2 +-
 src/mlpack/tests/hmm_test.cpp                      | 24 ++++++-------
 src/mlpack/tests/kmeans_test.cpp                   | 42 +++++++++++-----------
 src/mlpack/tests/nca_test.cpp                      | 20 +++++------
 32 files changed, 115 insertions(+), 115 deletions(-)

diff --git a/src/mlpack/methods/gmm/em_fit.hpp b/src/mlpack/methods/gmm/em_fit.hpp
index 5396e03..26399b5 100644
--- a/src/mlpack/methods/gmm/em_fit.hpp
+++ b/src/mlpack/methods/gmm/em_fit.hpp
@@ -27,7 +27,7 @@ namespace gmm {
  *
  *  - void Cluster(const arma::mat& observations,
  *                 const size_t clusters,
- *                 arma::Col<size_t>& assignments);
+ *                 arma::Row<size_t>& assignments);
  *
  * This method should create 'clusters' clusters, and return the assignment of
  * each point to a cluster.
diff --git a/src/mlpack/methods/gmm/em_fit_impl.hpp b/src/mlpack/methods/gmm/em_fit_impl.hpp
index 032fa61..f508fb8 100644
--- a/src/mlpack/methods/gmm/em_fit_impl.hpp
+++ b/src/mlpack/methods/gmm/em_fit_impl.hpp
@@ -208,7 +208,7 @@ InitialClustering(const arma::mat& observations,
                   arma::vec& weights)
 {
   // Assignments from clustering.
-  arma::Col<size_t> assignments;
+  arma::Row<size_t> assignments;
 
   // Run clustering algorithm.
   clusterer.Cluster(observations, dists.size(), assignments);
diff --git a/src/mlpack/methods/gmm/gmm.hpp b/src/mlpack/methods/gmm/gmm.hpp
index 83c8e04..7ee4b0d 100644
--- a/src/mlpack/methods/gmm/gmm.hpp
+++ b/src/mlpack/methods/gmm/gmm.hpp
@@ -324,7 +324,7 @@ class GMM
    * @param labels Object which will be filled with labels.
    */
   void Classify(const arma::mat& observations,
-                arma::Col<size_t>& labels) const;
+                arma::Row<size_t>& labels) const;
 
   /**
    * Serialize the GMM.
diff --git a/src/mlpack/methods/gmm/gmm_impl.hpp b/src/mlpack/methods/gmm/gmm_impl.hpp
index 02298f9..18fdc19 100644
--- a/src/mlpack/methods/gmm/gmm_impl.hpp
+++ b/src/mlpack/methods/gmm/gmm_impl.hpp
@@ -346,7 +346,7 @@ double GMM<FittingType>::Estimate(const arma::mat& observations,
  */
 template<typename FittingType>
 void GMM<FittingType>::Classify(const arma::mat& observations,
-                                arma::Col<size_t>& labels) const
+                                arma::Row<size_t>& labels) const
 {
   // This is not the best way to do this!
 
diff --git a/src/mlpack/methods/hmm/hmm.hpp b/src/mlpack/methods/hmm/hmm.hpp
index c0bd81a..de375da 100644
--- a/src/mlpack/methods/hmm/hmm.hpp
+++ b/src/mlpack/methods/hmm/hmm.hpp
@@ -58,7 +58,7 @@ namespace hmm /** Hidden Markov Models. */ {
  *
  * @code
  * extern arma::mat observations; // Each column is an observation.
- * extern arma::Col<size_t> states; // Hidden states for each observation.
+ * extern arma::Row<size_t> states; // Hidden states for each observation.
  * // Create an untrained HMM with 5 hidden states and default (N(0, 1))
  * // Gaussian distributions with the dimensionality of the dataset.
  * HMM<GaussianDistribution> hmm(5, GaussianDistribution(observations.n_rows));
@@ -184,7 +184,7 @@ class HMM
    *     observation.
    */
   void Train(const std::vector<arma::mat>& dataSeq,
-             const std::vector<arma::Col<size_t> >& stateSeq);
+             const std::vector<arma::Row<size_t> >& stateSeq);
 
   /**
    * Estimate the probabilities of each hidden state at each time step for each
@@ -237,7 +237,7 @@ class HMM
    */
   void Generate(const size_t length,
                 arma::mat& dataSequence,
-                arma::Col<size_t>& stateSequence,
+                arma::Row<size_t>& stateSequence,
                 const size_t startState = 0) const;
 
   /**
@@ -251,7 +251,7 @@ class HMM
    * @return Log-likelihood of most probable state sequence.
    */
   double Predict(const arma::mat& dataSeq,
-                 arma::Col<size_t>& stateSeq) const;
+                 arma::Row<size_t>& stateSeq) const;
 
   /**
    * Compute the log-likelihood of the given data sequence.
diff --git a/src/mlpack/methods/hmm/hmm_generate_main.cpp b/src/mlpack/methods/hmm/hmm_generate_main.cpp
index 8b980a8..5240d55 100644
--- a/src/mlpack/methods/hmm/hmm_generate_main.cpp
+++ b/src/mlpack/methods/hmm/hmm_generate_main.cpp
@@ -46,7 +46,7 @@ struct Generate
   static void Apply(HMMType& hmm, void* /* extraInfo */)
   {
     mat observations;
-    Col<size_t> sequence;
+    Row<size_t> sequence;
 
     // Load the parameters.
     const size_t startState = (size_t) CLI::GetParam<int>("start_state");
@@ -67,7 +67,7 @@ struct Generate
     // Do we want to save the hidden sequence?
     const string sequenceFile = CLI::GetParam<string>("state_file");
     if (sequenceFile != "")
-      data::Save(sequenceFile, sequence, true, false);
+      data::Save(sequenceFile, sequence, true);
   }
 };
 
diff --git a/src/mlpack/methods/hmm/hmm_impl.hpp b/src/mlpack/methods/hmm/hmm_impl.hpp
index 5cf1fe0..de43db5 100644
--- a/src/mlpack/methods/hmm/hmm_impl.hpp
+++ b/src/mlpack/methods/hmm/hmm_impl.hpp
@@ -195,7 +195,7 @@ void HMM<Distribution>::Train(const std::vector<arma::mat>& dataSeq)
  */
 template<typename Distribution>
 void HMM<Distribution>::Train(const std::vector<arma::mat>& dataSeq,
-                              const std::vector<arma::Col<size_t> >& stateSeq)
+                              const std::vector<arma::Row<size_t> >& stateSeq)
 {
   // Simple error checking.
   if (dataSeq.size() != stateSeq.size())
@@ -330,7 +330,7 @@ double HMM<Distribution>::Estimate(const arma::mat& dataSeq,
 template<typename Distribution>
 void HMM<Distribution>::Generate(const size_t length,
                                  arma::mat& dataSequence,
-                                 arma::Col<size_t>& stateSequence,
+                                 arma::Row<size_t>& stateSequence,
                                  const size_t startState) const
 {
   // Set vectors to the right size.
@@ -378,7 +378,7 @@ void HMM<Distribution>::Generate(const size_t length,
  */
 template<typename Distribution>
 double HMM<Distribution>::Predict(const arma::mat& dataSeq,
-                                  arma::Col<size_t>& stateSeq) const
+                                  arma::Row<size_t>& stateSeq) const
 {
   // This is an implementation of the Viterbi algorithm for finding the most
   // probable sequence of states to produce the observed data sequence.  We
diff --git a/src/mlpack/methods/hmm/hmm_regression.hpp b/src/mlpack/methods/hmm/hmm_regression.hpp
index 4ef5e07..c7ac3af 100644
--- a/src/mlpack/methods/hmm/hmm_regression.hpp
+++ b/src/mlpack/methods/hmm/hmm_regression.hpp
@@ -174,7 +174,7 @@ class HMMRegression : public HMM<distribution::RegressionDistribution>
    */
   void Train(const std::vector<arma::mat>& predictors,
              const std::vector<arma::vec>& responses,
-             const std::vector<arma::Col<size_t> >& stateSeq);
+             const std::vector<arma::Row<size_t> >& stateSeq);
 
   /**
    * Estimate the probabilities of each hidden state at each time step for each
@@ -231,7 +231,7 @@ class HMMRegression : public HMM<distribution::RegressionDistribution>
    */
   double Predict(const arma::mat& predictors,
                  const arma::vec& responses,
-                 arma::Col<size_t>& stateSeq) const;
+                 arma::Row<size_t>& stateSeq) const;
 
   /**
    * Compute the log-likelihood of the given predictors and responses.
diff --git a/src/mlpack/methods/hmm/hmm_regression_impl.hpp b/src/mlpack/methods/hmm/hmm_regression_impl.hpp
index 5c84157..83a00c2 100644
--- a/src/mlpack/methods/hmm/hmm_regression_impl.hpp
+++ b/src/mlpack/methods/hmm/hmm_regression_impl.hpp
@@ -25,7 +25,7 @@ void HMMRegression::Train(const std::vector<arma::mat>& predictors,
 
 void HMMRegression::Train(const std::vector<arma::mat>& predictors,
                           const std::vector<arma::vec>& responses,
-                          const std::vector<arma::Col<size_t> >& stateSeq)
+                          const std::vector<arma::Row<size_t> >& stateSeq)
 {
   std::vector<arma::mat> dataSeq;
   StackData(predictors, responses, dataSeq);
@@ -69,7 +69,7 @@ double HMMRegression::Estimate(const arma::mat& predictors,
  */
 double HMMRegression::Predict(const arma::mat& predictors,
                               const arma::vec& responses,
-                              arma::Col<size_t>& stateSeq) const
+                              arma::Row<size_t>& stateSeq) const
 {
   arma::mat dataSeq;
   StackData(predictors, responses, dataSeq);
diff --git a/src/mlpack/methods/hmm/hmm_train_main.cpp b/src/mlpack/methods/hmm/hmm_train_main.cpp
index ae40991..291305c 100644
--- a/src/mlpack/methods/hmm/hmm_train_main.cpp
+++ b/src/mlpack/methods/hmm/hmm_train_main.cpp
@@ -83,7 +83,7 @@ struct Train
             << "the HMM (" << hmm.Emission()[0].Dimensionality() << ")!"
             << endl;
 
-    vector<arma::Col<size_t> > labelSeq; // May be empty.
+    vector<arma::Row<size_t>> labelSeq; // May be empty.
     if (labelsFile != "")
     {
       // Do we have multiple label files to load?
@@ -107,15 +107,15 @@ struct Train
           Mat<size_t> label;
           data::Load(lineBuf, label, true); // Fatal on failure.
 
-          // Ensure that matrix only has one column.
-          if (label.n_rows == 1)
+          // Ensure that matrix only has one row.
+          if (label.n_cols == 1)
             label = trans(label);
 
-          if (label.n_cols > 1)
+          if (label.n_rows > 1)
             Log::Fatal << "Invalid labels; must be one-dimensional." << endl;
 
           // Check all of the labels.
-          for (size_t i = 0; i < label.n_rows; ++i)
+          for (size_t i = 0; i < label.n_cols; ++i)
           {
             if (label[i] >= hmm.Transition().n_cols)
             {
@@ -126,7 +126,7 @@ struct Train
             }
           }
 
-          labelSeq.push_back(label.col(0));
+          labelSeq.push_back(label.row(0));
 
           f.getline(lineBuf, 1024, '\n');
         }
@@ -138,11 +138,11 @@ struct Train
         Mat<size_t> label;
         data::Load(labelsFile, label, true);
 
-        // Ensure that matrix only has one column.
-        if (label.n_rows == 1)
+        // Ensure that matrix only has one row.
+        if (label.n_cols == 1)
           label = trans(label);
 
-        if (label.n_cols > 1)
+        if (label.n_rows > 1)
           Log::Fatal << "Invalid labels; must be one-dimensional." << endl;
 
         // Verify the same number of observations as the data.
@@ -152,7 +152,7 @@ struct Train
               << labelSeq.size() << "!" << endl;
 
         // Check all of the labels.
-        for (size_t i = 0; i < label.n_rows; ++i)
+        for (size_t i = 0; i < label.n_cols; ++i)
         {
           if (label[i] >= hmm.Transition().n_cols)
           {
@@ -163,7 +163,7 @@ struct Train
           }
         }
 
-        labelSeq.push_back(label.col(0));
+        labelSeq.push_back(label.row(0));
       }
 
       // Now perform the training with labels.
diff --git a/src/mlpack/methods/hmm/hmm_viterbi_main.cpp b/src/mlpack/methods/hmm/hmm_viterbi_main.cpp
index 9bf086c..2e6328b 100644
--- a/src/mlpack/methods/hmm/hmm_viterbi_main.cpp
+++ b/src/mlpack/methods/hmm/hmm_viterbi_main.cpp
@@ -58,12 +58,12 @@ struct Viterbi
           << "does not match HMM Gaussian dimensionality ("
           << hmm.Emission()[0].Dimensionality() << ")!" << endl;
 
-    arma::Col<size_t> sequence;
+    arma::Row<size_t> sequence;
     hmm.Predict(dataSeq, sequence);
 
     // Save output.
     const string outputFile = CLI::GetParam<string>("output_file");
-    data::Save(outputFile, sequence, true, false);
+    data::Save(outputFile, sequence, true);
   }
 };
 
diff --git a/src/mlpack/methods/kmeans/dual_tree_kmeans.hpp b/src/mlpack/methods/kmeans/dual_tree_kmeans.hpp
index e1ec81b..01fd8a1 100644
--- a/src/mlpack/methods/kmeans/dual_tree_kmeans.hpp
+++ b/src/mlpack/methods/kmeans/dual_tree_kmeans.hpp
@@ -95,7 +95,7 @@ class DualTreeKMeans
   //! Indicator of whether or not the point is pruned.
   std::vector<bool> prunedPoints;
 
-  arma::Col<size_t> assignments;
+  arma::Row<size_t> assignments;
 
   std::vector<bool> visited; // Was the point visited this iteration?
 
diff --git a/src/mlpack/methods/kmeans/dual_tree_kmeans_rules.hpp b/src/mlpack/methods/kmeans/dual_tree_kmeans_rules.hpp
index 1c07de5..77cf231 100644
--- a/src/mlpack/methods/kmeans/dual_tree_kmeans_rules.hpp
+++ b/src/mlpack/methods/kmeans/dual_tree_kmeans_rules.hpp
@@ -20,7 +20,7 @@ class DualTreeKMeansRules
  public:
   DualTreeKMeansRules(const arma::mat& centroids,
                       const arma::mat& dataset,
-                      arma::Col<size_t>& assignments,
+                      arma::Row<size_t>& assignments,
                       arma::vec& upperBounds,
                       arma::vec& lowerBounds,
                       MetricType& metric,
@@ -53,7 +53,7 @@ class DualTreeKMeansRules
  private:
   const arma::mat& centroids;
   const arma::mat& dataset;
-  arma::Col<size_t>& assignments;
+  arma::Row<size_t>& assignments;
   arma::vec& upperBounds;
   arma::vec& lowerBounds;
   MetricType& metric;
diff --git a/src/mlpack/methods/kmeans/dual_tree_kmeans_rules_impl.hpp b/src/mlpack/methods/kmeans/dual_tree_kmeans_rules_impl.hpp
index c690679..2c8b4e5 100644
--- a/src/mlpack/methods/kmeans/dual_tree_kmeans_rules_impl.hpp
+++ b/src/mlpack/methods/kmeans/dual_tree_kmeans_rules_impl.hpp
@@ -16,7 +16,7 @@ template<typename MetricType, typename TreeType>
 DualTreeKMeansRules<MetricType, TreeType>::DualTreeKMeansRules(
     const arma::mat& centroids,
     const arma::mat& dataset,
-    arma::Col<size_t>& assignments,
+    arma::Row<size_t>& assignments,
     arma::vec& upperBounds,
     arma::vec& lowerBounds,
     MetricType& metric,
diff --git a/src/mlpack/methods/kmeans/kmeans.hpp b/src/mlpack/methods/kmeans/kmeans.hpp
index 0e69893..8acc9f3 100644
--- a/src/mlpack/methods/kmeans/kmeans.hpp
+++ b/src/mlpack/methods/kmeans/kmeans.hpp
@@ -32,7 +32,7 @@ namespace kmeans /** K-Means clustering. */ {
  *
  * @code
  * extern arma::mat data; // Dataset we want to run K-Means on.
- * arma::Col<size_t> assignments; // Cluster assignments.
+ * arma::Row<size_t> assignments; // Cluster assignments.
  * arma::mat centroids; // Cluster centroids.
  *
  * KMeans<> k; // Default options.
@@ -48,10 +48,12 @@ namespace kmeans /** K-Means clustering. */ {
  *     metric::LMetric for an example.
  * @tparam InitialPartitionPolicy Initial partitioning policy; must implement a
  *     default constructor and 'void Cluster(const arma::mat&, const size_t,
- *     arma::Col<size_t>&)'.
+ *     arma::Row<size_t>&)'.
  * @tparam EmptyClusterPolicy Policy for what to do on an empty cluster; must
- *     implement a default constructor and 'void EmptyCluster(const arma::mat&,
- *     arma::Col<size_t&)'.
+ *     implement a default constructor and 'void EmptyCluster(const arma::mat&
+ *     data, const size_t emptyCluster, const arma::mat& oldCentroids,
+ *     arma::mat& newCentroids, arma::Col<size_t>& counts, MetricType& metric,
+ *     const size_t iteration)'.
  * @tparam LloydStepType Implementation of single Lloyd step to use.
  *
  * @see RandomPartition, RefinedStart, AllowEmptyClusters,
@@ -99,7 +101,7 @@ class KMeans
    */
   void Cluster(const MatType& data,
                const size_t clusters,
-               arma::Col<size_t>& assignments,
+               arma::Row<size_t>& assignments,
                const bool initialGuess = false);
 
   /**
@@ -142,7 +144,7 @@ class KMeans
    */
   void Cluster(const MatType& data,
                const size_t clusters,
-               arma::Col<size_t>& assignments,
+               arma::Row<size_t>& assignments,
                arma::mat& centroids,
                const bool initialAssignmentGuess = false,
                const bool initialCentroidGuess = false);
diff --git a/src/mlpack/methods/kmeans/kmeans_impl.hpp b/src/mlpack/methods/kmeans/kmeans_impl.hpp
index 0e0942b..585e57a 100644
--- a/src/mlpack/methods/kmeans/kmeans_impl.hpp
+++ b/src/mlpack/methods/kmeans/kmeans_impl.hpp
@@ -57,7 +57,7 @@ inline void KMeans<
     MatType>::
 Cluster(const MatType& data,
         const size_t clusters,
-        arma::Col<size_t>& assignments,
+        arma::Row<size_t>& assignments,
         const bool initialGuess)
 {
   arma::mat centroids(data.n_rows, clusters);
@@ -113,11 +113,11 @@ Cluster(const MatType& data,
     // The partitioner gives assignments, so we need to calculate centroids from
     // those assignments.  This is probably not the most efficient way to do
     // this, so maybe refactoring should be considered in the future.
-    arma::Col<size_t> assignments;
+    arma::Row<size_t> assignments;
     partitioner.Cluster(data, clusters, assignments);
 
     // Calculate initial centroids.
-    arma::Col<size_t> counts;
+    arma::Row<size_t> counts;
     counts.zeros(clusters);
     centroids.zeros(data.n_rows, clusters);
     for (size_t i = 0; i < data.n_cols; ++i)
@@ -210,7 +210,7 @@ void KMeans<
     MatType>::
 Cluster(const MatType& data,
         const size_t clusters,
-        arma::Col<size_t>& assignments,
+        arma::Row<size_t>& assignments,
         arma::mat& centroids,
         const bool initialAssignmentGuess,
         const bool initialCentroidGuess)
@@ -224,7 +224,7 @@ Cluster(const MatType& data,
           << data.n_cols << ")!" << std::endl;
 
     // Calculate initial centroids.
-    arma::Col<size_t> counts;
+    arma::Row<size_t> counts;
     counts.zeros(clusters);
     centroids.zeros(data.n_rows, clusters);
     for (size_t i = 0; i < data.n_cols; ++i)
diff --git a/src/mlpack/methods/kmeans/kmeans_main.cpp b/src/mlpack/methods/kmeans/kmeans_main.cpp
index e9c3ad1..a5eb324 100644
--- a/src/mlpack/methods/kmeans/kmeans_main.cpp
+++ b/src/mlpack/methods/kmeans/kmeans_main.cpp
@@ -237,7 +237,7 @@ void RunKMeans(const InitialPartitionPolicy& ipp)
   if (CLI::HasParam("output_file") || CLI::HasParam("in_place"))
   {
     // We need to get the assignments.
-    arma::Col<size_t> assignments;
+    arma::Row<size_t> assignments;
     kmeans.Cluster(dataset, clusters, assignments, centroids,
         false, initialCentroidGuess);
     Timer::Stop("clustering");
@@ -247,11 +247,11 @@ void RunKMeans(const InitialPartitionPolicy& ipp)
     {
       // Add the column of assignments to the dataset; but we have to convert
       // them to type double first.
-      arma::vec converted(assignments.n_elem);
+      arma::rowvec converted(assignments.n_elem);
       for (size_t i = 0; i < assignments.n_elem; i++)
         converted(i) = (double) assignments(i);
 
-      dataset.insert_rows(dataset.n_rows, trans(converted));
+      dataset.insert_rows(dataset.n_rows, converted);
 
       // Save the dataset.
       data::Save(inputFile, dataset);
@@ -262,17 +262,16 @@ void RunKMeans(const InitialPartitionPolicy& ipp)
       {
         // Save only the labels.
         string outputFile = CLI::GetParam<string>("output_file");
-        arma::Mat<size_t> output = trans(assignments);
-        data::Save(outputFile, output);
+        data::Save(outputFile, assignments);
       }
       else
       {
         // Convert the assignments to doubles.
-        arma::vec converted(assignments.n_elem);
+        arma::rowvec converted(assignments.n_elem);
         for (size_t i = 0; i < assignments.n_elem; i++)
           converted(i) = (double) assignments(i);
 
-        dataset.insert_rows(dataset.n_rows, trans(converted));
+        dataset.insert_rows(dataset.n_rows, converted);
 
         // Now save, in the different file.
         string outputFile = CLI::GetParam<string>("output_file");
diff --git a/src/mlpack/methods/kmeans/max_variance_new_cluster.hpp b/src/mlpack/methods/kmeans/max_variance_new_cluster.hpp
index 0d91523..968f2e6 100644
--- a/src/mlpack/methods/kmeans/max_variance_new_cluster.hpp
+++ b/src/mlpack/methods/kmeans/max_variance_new_cluster.hpp
@@ -59,7 +59,7 @@ class MaxVarianceNewCluster
   //! Cached variances for each cluster.
   arma::vec variances;
   //! Cached assignments for each point.
-  arma::Col<size_t> assignments;
+  arma::Row<size_t> assignments;
 
   //! Called when we are on a new iteration.
   template<typename MetricType, typename MatType>
diff --git a/src/mlpack/methods/kmeans/random_partition.hpp b/src/mlpack/methods/kmeans/random_partition.hpp
index 34e4f49..de969f2 100644
--- a/src/mlpack/methods/kmeans/random_partition.hpp
+++ b/src/mlpack/methods/kmeans/random_partition.hpp
@@ -38,10 +38,10 @@ class RandomPartition
   template<typename MatType>
   inline static void Cluster(const MatType& data,
                              const size_t clusters,
-                             arma::Col<size_t>& assignments)
+                             arma::Row<size_t>& assignments)
   {
     // Implementation is so simple we'll put it here in the header file.
-    assignments = arma::shuffle(arma::linspace<arma::Col<size_t> >(0,
+    assignments = arma::shuffle(arma::linspace<arma::Row<size_t>>(0,
         (clusters - 1), data.n_cols));
   }
 
diff --git a/src/mlpack/methods/kmeans/refined_start.hpp b/src/mlpack/methods/kmeans/refined_start.hpp
index 39c431c..d06e463 100644
--- a/src/mlpack/methods/kmeans/refined_start.hpp
+++ b/src/mlpack/methods/kmeans/refined_start.hpp
@@ -54,7 +54,7 @@ class RefinedStart
   template<typename MatType>
   void Cluster(const MatType& data,
                const size_t clusters,
-               arma::Col<size_t>& assignments) const;
+               arma::Row<size_t>& assignments) const;
 
   //! Get the number of samplings that will be performed.
   size_t Samplings() const { return samplings; }
diff --git a/src/mlpack/methods/kmeans/refined_start_impl.hpp b/src/mlpack/methods/kmeans/refined_start_impl.hpp
index c8e7dcb..14c92d2 100644
--- a/src/mlpack/methods/kmeans/refined_start_impl.hpp
+++ b/src/mlpack/methods/kmeans/refined_start_impl.hpp
@@ -19,7 +19,7 @@ namespace kmeans {
 template<typename MatType>
 void RefinedStart::Cluster(const MatType& data,
                            const size_t clusters,
-                           arma::Col<size_t>& assignments) const
+                           arma::Row<size_t>& assignments) const
 {
   math::RandomSeed(std::time(NULL));
 
@@ -31,7 +31,7 @@ void RefinedStart::Cluster(const MatType& data,
   arma::mat sampledCentroids(data.n_rows, samplings * clusters);
 
   // We will use these objects repeatedly for clustering.
-  arma::Col<size_t> sampledAssignments;
+  arma::Row<size_t> sampledAssignments;
   arma::mat centroids;
 
   for (size_t i = 0; i < samplings; ++i)
diff --git a/src/mlpack/methods/naive_bayes/naive_bayes_classifier.hpp b/src/mlpack/methods/naive_bayes/naive_bayes_classifier.hpp
index 4b6e40b..9647e88 100644
--- a/src/mlpack/methods/naive_bayes/naive_bayes_classifier.hpp
+++ b/src/mlpack/methods/naive_bayes/naive_bayes_classifier.hpp
@@ -49,7 +49,7 @@ class NaiveBayesClassifier
    * Example use:
    * @code
    * extern arma::mat training_data, testing_data;
-   * extern arma::Col<size_t> labels;
+   * extern arma::Row<size_t> labels;
    * NaiveBayesClassifier nbc(training_data, labels, 5);
    * @endcode
    *
@@ -110,7 +110,7 @@ class NaiveBayesClassifier
    *
    * @code
    * arma::mat test_data; // each column is a test point
-   * arma::Col<size_t> results;
+   * arma::Row<size_t> results;
    * ...
    * nbc.Classify(test_data, &results);
    * @endcode
diff --git a/src/mlpack/methods/nca/nca.hpp b/src/mlpack/methods/nca/nca.hpp
index 298d64e..7ff5cf9 100644
--- a/src/mlpack/methods/nca/nca.hpp
+++ b/src/mlpack/methods/nca/nca.hpp
@@ -58,7 +58,7 @@ class NCA
    * @param metric Instantiated metric to use.
    */
   NCA(const arma::mat& dataset,
-      const arma::Col<size_t>& labels,
+      const arma::Row<size_t>& labels,
       MetricType metric = MetricType());
 
   /**
@@ -75,7 +75,7 @@ class NCA
   //! Get the dataset reference.
   const arma::mat& Dataset() const { return dataset; }
   //! Get the labels reference.
-  const arma::Col<size_t>& Labels() const { return labels; }
+  const arma::Row<size_t>& Labels() const { return labels; }
 
   //! Get the optimizer.
   const OptimizerType<SoftmaxErrorFunction<MetricType> >& Optimizer() const
@@ -87,7 +87,7 @@ class NCA
   //! Dataset reference.
   const arma::mat& dataset;
   //! Labels reference.
-  const arma::Col<size_t>& labels;
+  const arma::Row<size_t>& labels;
 
   //! Metric to be used.
   MetricType metric;
diff --git a/src/mlpack/methods/nca/nca_impl.hpp b/src/mlpack/methods/nca/nca_impl.hpp
index 49ff29d..dd6076b 100644
--- a/src/mlpack/methods/nca/nca_impl.hpp
+++ b/src/mlpack/methods/nca/nca_impl.hpp
@@ -16,7 +16,7 @@ namespace nca {
 // Just set the internal matrix reference.
 template<typename MetricType, template<typename> class OptimizerType>
 NCA<MetricType, OptimizerType>::NCA(const arma::mat& dataset,
-                                    const arma::Col<size_t>& labels,
+                                    const arma::Row<size_t>& labels,
                                     MetricType metric) :
     dataset(dataset),
     labels(labels),
diff --git a/src/mlpack/methods/nca/nca_main.cpp b/src/mlpack/methods/nca/nca_main.cpp
index 5d2d9b2..c4554a5 100644
--- a/src/mlpack/methods/nca/nca_main.cpp
+++ b/src/mlpack/methods/nca/nca_main.cpp
@@ -220,10 +220,9 @@ int main(int argc, char* argv[])
   }
 
   // Now create the NCA object and run the optimization.
-  arma::Col<size_t> tLabels = labels.t();
   if (optimizerType == "sgd")
   {
-    NCA<LMetric<2> > nca(data, tLabels);
+    NCA<LMetric<2> > nca(data, labels);
     nca.Optimizer().StepSize() = stepSize;
     nca.Optimizer().MaxIterations() = maxIterations;
     nca.Optimizer().Tolerance() = tolerance;
@@ -233,7 +232,7 @@ int main(int argc, char* argv[])
   }
   else if (optimizerType == "lbfgs")
   {
-    NCA<LMetric<2>, L_BFGS> nca(data, tLabels);
+    NCA<LMetric<2>, L_BFGS> nca(data, labels);
     nca.Optimizer().NumBasis() = numBasis;
     nca.Optimizer().MaxIterations() = maxIterations;
     nca.Optimizer().ArmijoConstant() = armijoConstant;
diff --git a/src/mlpack/methods/nca/nca_softmax_error_function.hpp b/src/mlpack/methods/nca/nca_softmax_error_function.hpp
index 4d162cd..e94a2de 100644
--- a/src/mlpack/methods/nca/nca_softmax_error_function.hpp
+++ b/src/mlpack/methods/nca/nca_softmax_error_function.hpp
@@ -48,7 +48,7 @@ class SoftmaxErrorFunction
    * @param kernel Instantiated kernel (optional).
    */
   SoftmaxErrorFunction(const arma::mat& dataset,
-                       const arma::Col<size_t>& labels,
+                       const arma::Row<size_t>& labels,
                        MetricType metric = MetricType());
 
   /**
@@ -112,7 +112,7 @@ class SoftmaxErrorFunction
   //! The dataset.
   const arma::mat& dataset;
   //! Labels for each point in the dataset.
-  const arma::Col<size_t>& labels;
+  const arma::Row<size_t>& labels;
 
   //! The instantiated metric.
   MetricType metric;
diff --git a/src/mlpack/methods/nca/nca_softmax_error_function_impl.hpp b/src/mlpack/methods/nca/nca_softmax_error_function_impl.hpp
index de97ace..7c8a4b7 100644
--- a/src/mlpack/methods/nca/nca_softmax_error_function_impl.hpp
+++ b/src/mlpack/methods/nca/nca_softmax_error_function_impl.hpp
@@ -17,7 +17,7 @@ namespace nca {
 template<typename MetricType>
 SoftmaxErrorFunction<MetricType>::SoftmaxErrorFunction(
     const arma::mat& dataset,
-    const arma::Col<size_t>& labels,
+    const arma::Row<size_t>& labels,
     MetricType metric) :
     dataset(dataset),
     labels(labels),
diff --git a/src/mlpack/methods/nystroem_method/kmeans_selection.hpp b/src/mlpack/methods/nystroem_method/kmeans_selection.hpp
index 62346c1..e03fd87 100644
--- a/src/mlpack/methods/nystroem_method/kmeans_selection.hpp
+++ b/src/mlpack/methods/nystroem_method/kmeans_selection.hpp
@@ -34,7 +34,7 @@ class KMeansSelection
    */
   const static arma::mat* Select(const arma::mat& data, const size_t m)
   {
-    arma::Col<size_t> assignments;
+    arma::Row<size_t> assignments;
     arma::mat* centroids = new arma::mat;
 
     // Perform the K-Means clustering method.
diff --git a/src/mlpack/tests/gmm_test.cpp b/src/mlpack/tests/gmm_test.cpp
index 453b0cc..41b24ab 100644
--- a/src/mlpack/tests/gmm_test.cpp
+++ b/src/mlpack/tests/gmm_test.cpp
@@ -461,7 +461,7 @@ BOOST_AUTO_TEST_CASE(GMMClassifyTest)
     "-3 -3;"
     "-5  1"));
 
-  arma::Col<size_t> classes;
+  arma::Row<size_t> classes;
 
   gmm.Classify(observations, classes);
 
diff --git a/src/mlpack/tests/hmm_test.cpp b/src/mlpack/tests/hmm_test.cpp
index 060df65..e4b862a 100644
--- a/src/mlpack/tests/hmm_test.cpp
+++ b/src/mlpack/tests/hmm_test.cpp
@@ -45,7 +45,7 @@ BOOST_AUTO_TEST_CASE(SimpleDiscreteHMMTestViterbi)
   // We'll use the sequence [U U N U U] (U = umbrella, N = no umbrella) like on
   // p. 547.
   arma::mat observation = "0 0 1 0 0";
-  arma::Col<size_t> states;
+  arma::Row<size_t> states;
   hmm.Predict(observation, states);
 
   // Check each state.
@@ -81,7 +81,7 @@ BOOST_AUTO_TEST_CASE(BorodovskyHMMTestViterbi)
 
   // GGCACTGAA.
   arma::mat observation("2 2 1 0 1 3 2 0 0");
-  arma::Col<size_t> states;
+  arma::Row<size_t> states;
   hmm.Predict(observation, states);
 
   // Most probable path is HHHLLLLLL.
@@ -323,7 +323,7 @@ BOOST_AUTO_TEST_CASE(DiscreteHMMLabeledTrainTest)
   size_t obsLen = 800;
 
   std::vector<arma::mat> observations(obsNum);
-  std::vector<arma::Col<size_t> > states(obsNum);
+  std::vector<arma::Row<size_t> > states(obsNum);
 
   for (size_t n = 0; n < obsNum; n++)
   {
@@ -403,7 +403,7 @@ BOOST_AUTO_TEST_CASE(DiscreteHMMSimpleGenerateTest)
 
   // Now generate a really, really long sequence.
   arma::mat dataSeq;
-  arma::Col<size_t> stateSeq;
+  arma::Row<size_t> stateSeq;
 
   hmm.Generate(100000, dataSeq, stateSeq);
 
@@ -463,7 +463,7 @@ BOOST_AUTO_TEST_CASE(DiscreteHMMGenerateTest)
   int numSeq = 400;
   int numObs = 3000;
   std::vector<arma::mat> sequences(numSeq);
-  std::vector<arma::Col<size_t> > states(numSeq);
+  std::vector<arma::Row<size_t> > states(numSeq);
   for (int i = 0; i < numSeq; i++)
   {
     // Random starting state.
@@ -543,7 +543,7 @@ BOOST_AUTO_TEST_CASE(GaussianHMMSimpleTest)
 
   // Now, generate some sequences.
   arma::mat observations(2, 1000);
-  arma::Col<size_t> classes(1000);
+  arma::Row<size_t> classes(1000);
 
   // 1000-observations sequence.
   classes[0] = 0;
@@ -564,7 +564,7 @@ BOOST_AUTO_TEST_CASE(GaussianHMMSimpleTest)
   }
 
   // Now predict the sequence.
-  arma::Col<size_t> predictedClasses;
+  arma::Row<size_t> predictedClasses;
   arma::mat stateProb;
 
   hmm.Predict(observations, predictedClasses);
@@ -605,7 +605,7 @@ BOOST_AUTO_TEST_CASE(GaussianHMMTrainTest)
 
   // Now generate observations.
   std::vector<arma::mat> observations(100);
-  std::vector<arma::Col<size_t> > states(100);
+  std::vector<arma::Row<size_t> > states(100);
 
   for (size_t obs = 0; obs < 100; obs++)
   {
@@ -727,7 +727,7 @@ BOOST_AUTO_TEST_CASE(GaussianHMMGenerateTest)
 
   // Now we will generate a long sequence.
   std::vector<arma::mat> observations(1);
-  std::vector<arma::Col<size_t> > states(1);
+  std::vector<arma::Row<size_t> > states(1);
 
   // Start in state 1 (no reason).
   hmm.Generate(10000, observations[0], states[0], 1);
@@ -808,7 +808,7 @@ BOOST_AUTO_TEST_CASE(GMMHMMPredictTest)
 
   // Make a sequence of observations.
   arma::mat observations(2, 1000);
-  arma::Col<size_t> states(1000);
+  arma::Row<size_t> states(1000);
   states[0] = 0;
   observations.col(0) = gmms[0].Random();
 
@@ -825,7 +825,7 @@ BOOST_AUTO_TEST_CASE(GMMHMMPredictTest)
   }
 
   // Run the prediction.
-  arma::Col<size_t> predictions;
+  arma::Row<size_t> predictions;
   hmm.Predict(observations, predictions);
 
   // Check that the predictions were correct.
@@ -867,7 +867,7 @@ BOOST_AUTO_TEST_CASE(GMMHMMLabeledTrainingTest)
 
   // Make a sequence of observations.
   std::vector<arma::mat> observations(5, arma::mat(2, 2500));
-  std::vector<arma::Col<size_t> > states(5, arma::Col<size_t>(2500));
+  std::vector<arma::Row<size_t> > states(5, arma::Row<size_t>(2500));
   for (size_t obs = 0; obs < 5; obs++)
   {
     states[obs][0] = 0;
diff --git a/src/mlpack/tests/kmeans_test.cpp b/src/mlpack/tests/kmeans_test.cpp
index 184a6a4..1a90fa7 100644
--- a/src/mlpack/tests/kmeans_test.cpp
+++ b/src/mlpack/tests/kmeans_test.cpp
@@ -65,7 +65,7 @@ BOOST_AUTO_TEST_CASE(KMeansSimpleTest)
 {
   KMeans<> kmeans;
 
-  arma::Col<size_t> assignments;
+  arma::Row<size_t> assignments;
   kmeans.Cluster((arma::mat) trans(kMeansData), 3, assignments);
 
   // Now make sure we got it all right.  There is no restriction on how the
@@ -98,9 +98,9 @@ BOOST_AUTO_TEST_CASE(KMeansSimpleTest)
  */
 BOOST_AUTO_TEST_CASE(AllowEmptyClusterTest)
 {
-  arma::Col<size_t> assignments;
+  arma::Row<size_t> assignments;
   assignments.randu(30);
-  arma::Col<size_t> assignmentsOld = assignments;
+  arma::Row<size_t> assignmentsOld = assignments;
 
   arma::mat centroids;
   centroids.randu(30, 3); // This doesn't matter.
@@ -135,7 +135,7 @@ BOOST_AUTO_TEST_CASE(MaxVarianceNewClusterTest)
                  "1.0 0.8 0.7  5.1  5.2;");
 
   // Point 2 is the mis-clustered point we're looking for to be moved.
-  arma::Col<size_t> assignments("0 0 0 1 1");
+  arma::Row<size_t> assignments("0 0 0 1 1");
 
   arma::mat centroids(2, 3);
   centroids.col(0) = (1.0 / 3.0) * (data.col(0) + data.col(1) + data.col(2));
@@ -194,7 +194,7 @@ BOOST_AUTO_TEST_CASE(RandomPartitionTest)
   arma::mat data;
   data.randu(2, 1000); // One thousand points.
 
-  arma::Col<size_t> assignments;
+  arma::Row<size_t> assignments;
 
   // We'll ask for 18 clusters (arbitrary).
   RandomPartition::Cluster(data, 18, assignments);
@@ -234,7 +234,7 @@ BOOST_AUTO_TEST_CASE(RandomInitialAssignmentFailureTest)
   for (size_t run = 0; run < 15; ++run)
   {
     arma::mat centroids;
-    arma::Col<size_t> assignments;
+    arma::Row<size_t> assignments;
     KMeans<> kmeans;
     kmeans.Cluster(dataset, 2, assignments, centroids);
 
@@ -265,7 +265,7 @@ BOOST_AUTO_TEST_CASE(InitialAssignmentTest)
 
   // Now, if we specify initial assignments, the algorithm should converge (with
   // zero iterations, actually, because this is the solution).
-  arma::Col<size_t> assignments(10002);
+  arma::Row<size_t> assignments(10002);
   assignments.fill(0);
   assignments[10000] = 1;
   assignments[10001] = 1;
@@ -307,7 +307,7 @@ BOOST_AUTO_TEST_CASE(InitialCentroidTest)
   for (size_t i = 0; i < 2; ++i)
     dataset.col(10000 + i) += arma::vec("50 50");
 
-  arma::Col<size_t> assignments;
+  arma::Row<size_t> assignments;
   arma::mat centroids(2, 2);
 
   centroids.col(0) = arma::vec("0 0");
@@ -349,7 +349,7 @@ BOOST_AUTO_TEST_CASE(InitialAssignmentOverrideTest)
   for (size_t i = 0; i < 2; ++i)
     dataset.col(10000 + i) += arma::vec("50 50");
 
-  arma::Col<size_t> assignments(10002);
+  arma::Row<size_t> assignments(10002);
   assignments.fill(0);
   assignments[10000] = 1;
   assignments[10001] = 1;
@@ -411,7 +411,7 @@ BOOST_AUTO_TEST_CASE(RefinedStartTest)
   // Now run the RefinedStart algorithm and make sure it doesn't deviate too
   // much from the actual solution.
   RefinedStart rs;
-  arma::Col<size_t> assignments;
+  arma::Row<size_t> assignments;
   arma::mat resultingCentroids;
   rs.Cluster(data, 5, assignments);
 
@@ -468,7 +468,7 @@ BOOST_AUTO_TEST_CASE(SparseKMeansTest)
   data(1402, 10) = -3.5;
   data(1402, 11) = -3.0;
 
-  arma::Col<size_t> assignments;
+  arma::Row<size_t> assignments;
 
   KMeans<metric::EuclideanDistance, RandomPartition, MaxVarianceNewCluster,
          NaiveKMeans, arma::sp_mat> kmeans; // Default options.
@@ -512,12 +512,12 @@ BOOST_AUTO_TEST_CASE(ElkanTest)
     // clusters.
     arma::mat naiveCentroids(centroids);
     KMeans<> km;
-    arma::Col<size_t> assignments;
+    arma::Row<size_t> assignments;
     km.Cluster(dataset, k, assignments, naiveCentroids, false, true);
 
     KMeans<metric::EuclideanDistance, RandomPartition, MaxVarianceNewCluster,
          ElkanKMeans> elkan;
-    arma::Col<size_t> elkanAssignments;
+    arma::Row<size_t> elkanAssignments;
     arma::mat elkanCentroids(centroids);
     elkan.Cluster(dataset, k, elkanAssignments, elkanCentroids, false, true);
 
@@ -546,12 +546,12 @@ BOOST_AUTO_TEST_CASE(HamerlyTest)
     // clusters.
     arma::mat naiveCentroids(centroids);
     KMeans<> km;
-    arma::Col<size_t> assignments;
+    arma::Row<size_t> assignments;
     km.Cluster(dataset, k, assignments, naiveCentroids, false, true);
 
     KMeans<metric::EuclideanDistance, RandomPartition, MaxVarianceNewCluster,
         HamerlyKMeans> hamerly;
-    arma::Col<size_t> hamerlyAssignments;
+    arma::Row<size_t> hamerlyAssignments;
     arma::mat hamerlyCentroids(centroids);
     hamerly.Cluster(dataset, k, hamerlyAssignments, hamerlyCentroids, false,
         true);
@@ -581,12 +581,12 @@ BOOST_AUTO_TEST_CASE(PellegMooreTest)
     // clusters.
     arma::mat naiveCentroids(centroids);
     KMeans<> km;
-    arma::Col<size_t> assignments;
+    arma::Row<size_t> assignments;
     km.Cluster(dataset, k, assignments, naiveCentroids, false, true);
 
     KMeans<metric::EuclideanDistance, RandomPartition, MaxVarianceNewCluster,
         PellegMooreKMeans> pellegMoore;
-    arma::Col<size_t> pmAssignments;
+    arma::Row<size_t> pmAssignments;
     arma::mat pmCentroids(centroids);
     pellegMoore.Cluster(dataset, k, pmAssignments, pmCentroids, false, true);
 
@@ -613,12 +613,12 @@ BOOST_AUTO_TEST_CASE(DTNNTest)
 
     arma::mat naiveCentroids(centroids);
     KMeans<> km;
-    arma::Col<size_t> assignments;
+    arma::Row<size_t> assignments;
     km.Cluster(dataset, k, assignments, naiveCentroids, false, true);
 
     KMeans<metric::EuclideanDistance, RandomPartition, MaxVarianceNewCluster,
         DefaultDualTreeKMeans> dtnn;
-    arma::Col<size_t> dtnnAssignments;
+    arma::Row<size_t> dtnnAssignments;
     arma::mat dtnnCentroids(centroids);
     dtnn.Cluster(dataset, k, dtnnAssignments, dtnnCentroids, false, true);
 
@@ -645,12 +645,12 @@ BOOST_AUTO_TEST_CASE(DTNNCoverTreeTest)
 
     arma::mat naiveCentroids(centroids);
     KMeans<> km;
-    arma::Col<size_t> assignments;
+    arma::Row<size_t> assignments;
     km.Cluster(dataset, k, assignments, naiveCentroids, false, true);
 
     KMeans<metric::EuclideanDistance, RandomPartition, MaxVarianceNewCluster,
         CoverTreeDualTreeKMeans> dtnn;
-    arma::Col<size_t> dtnnAssignments;
+    arma::Row<size_t> dtnnAssignments;
     arma::mat dtnnCentroids(centroids);
     dtnn.Cluster(dataset, k, dtnnAssignments, dtnnCentroids, false, true);
 
diff --git a/src/mlpack/tests/nca_test.cpp b/src/mlpack/tests/nca_test.cpp
index e322f46..d1c00c5 100644
--- a/src/mlpack/tests/nca_test.cpp
+++ b/src/mlpack/tests/nca_test.cpp
@@ -33,7 +33,7 @@ BOOST_AUTO_TEST_CASE(SoftmaxInitialPoint)
   // Cheap fake dataset.
   arma::mat data;
   data.randu(5, 5);
-  arma::Col<size_t> labels;
+  arma::Row<size_t> labels;
   labels.zeros(5);
 
   SoftmaxErrorFunction<SquaredEuclideanDistance> sef(data, labels);
@@ -61,7 +61,7 @@ BOOST_AUTO_TEST_CASE(SoftmaxInitialEvaluation)
   // Useful but simple dataset with six points and two classes.
   arma::mat data           = "-0.1 -0.1 -0.1  0.1  0.1  0.1;"
                              " 1.0  0.0 -1.0  1.0  0.0 -1.0 ";
-  arma::Col<size_t> labels = " 0    0    0    1    1    1   ";
+  arma::Row<size_t> labels = " 0    0    0    1    1    1   ";
 
   SoftmaxErrorFunction<SquaredEuclideanDistance> sef(data, labels);
 
@@ -82,7 +82,7 @@ BOOST_AUTO_TEST_CASE(SoftmaxInitialGradient)
   // Useful but simple dataset with six points and two classes.
   arma::mat data           = "-0.1 -0.1 -0.1  0.1  0.1  0.1;"
                              " 1.0  0.0 -1.0  1.0  0.0 -1.0 ";
-  arma::Col<size_t> labels = " 0    0    0    1    1    1   ";
+  arma::Row<size_t> labels = " 0    0    0    1    1    1   ";
 
   SoftmaxErrorFunction<SquaredEuclideanDistance> sef(data, labels);
 
@@ -108,7 +108,7 @@ BOOST_AUTO_TEST_CASE(SoftmaxOptimalEvaluation)
   // Simple optimal dataset.
   arma::mat data           = " 500  500 -500 -500;"
                              "   1    0    1    0 ";
-  arma::Col<size_t> labels = "   0    0    1    1 ";
+  arma::Row<size_t> labels = "   0    0    1    1 ";
 
   SoftmaxErrorFunction<SquaredEuclideanDistance> sef(data, labels);
 
@@ -127,7 +127,7 @@ BOOST_AUTO_TEST_CASE(SoftmaxOptimalGradient)
   // Simple optimal dataset.
   arma::mat data           = " 500  500 -500 -500;"
                              "   1    0    1    0 ";
-  arma::Col<size_t> labels = "   0    0    1    1 ";
+  arma::Row<size_t> labels = "   0    0    1    1 ";
 
   SoftmaxErrorFunction<SquaredEuclideanDistance> sef(data, labels);
 
@@ -148,7 +148,7 @@ BOOST_AUTO_TEST_CASE(SoftmaxSeparableObjective)
   // Useful but simple dataset with six points and two classes.
   arma::mat data           = "-0.1 -0.1 -0.1  0.1  0.1  0.1;"
                              " 1.0  0.0 -1.0  1.0  0.0 -1.0 ";
-  arma::Col<size_t> labels = " 0    0    0    1    1    1   ";
+  arma::Row<size_t> labels = " 0    0    0    1    1    1   ";
 
   SoftmaxErrorFunction<SquaredEuclideanDistance> sef(data, labels);
 
@@ -172,7 +172,7 @@ BOOST_AUTO_TEST_CASE(OptimalSoftmaxSeparableObjective)
   // Simple optimal dataset.
   arma::mat data           = " 500  500 -500 -500;"
                              "   1    0    1    0 ";
-  arma::Col<size_t> labels = "   0    0    1    1 ";
+  arma::Row<size_t> labels = "   0    0    1    1 ";
 
   SoftmaxErrorFunction<SquaredEuclideanDistance> sef(data, labels);
 
@@ -194,7 +194,7 @@ BOOST_AUTO_TEST_CASE(SoftmaxSeparableGradient)
   // Useful but simple dataset with six points and two classes.
   arma::mat data           = "-0.1 -0.1 -0.1  0.1  0.1  0.1;"
                              " 1.0  0.0 -1.0  1.0  0.0 -1.0 ";
-  arma::Col<size_t> labels = " 0    0    0    1    1    1   ";
+  arma::Row<size_t> labels = " 0    0    0    1    1    1   ";
 
   SoftmaxErrorFunction<SquaredEuclideanDistance> sef(data, labels);
 
@@ -257,7 +257,7 @@ BOOST_AUTO_TEST_CASE(NCASGDSimpleDataset)
   // Useful but simple dataset with six points and two classes.
   arma::mat data           = "-0.1 -0.1 -0.1  0.1  0.1  0.1;"
                              " 1.0  0.0 -1.0  1.0  0.0 -1.0 ";
-  arma::Col<size_t> labels = " 0    0    0    1    1    1   ";
+  arma::Row<size_t> labels = " 0    0    0    1    1    1   ";
 
   // Huge learning rate because this is so simple.
   NCA<SquaredEuclideanDistance> nca(data, labels);
@@ -291,7 +291,7 @@ BOOST_AUTO_TEST_CASE(NCALBFGSSimpleDataset)
   // Useful but simple dataset with six points and two classes.
   arma::mat data           = "-0.1 -0.1 -0.1  0.1  0.1  0.1;"
                              " 1.0  0.0 -1.0  1.0  0.0 -1.0 ";
-  arma::Col<size_t> labels = " 0    0    0    1    1    1   ";
+  arma::Row<size_t> labels = " 0    0    0    1    1    1   ";
 
   // Huge learning rate because this is so simple.
   NCA<SquaredEuclideanDistance, L_BFGS> nca(data, labels);



More information about the mlpack-git mailing list