[mlpack-svn] r15854 - mlpack/trunk/src/mlpack/methods/nmf

fastlab-svn at coffeetalk-1.cc.gatech.edu fastlab-svn at coffeetalk-1.cc.gatech.edu
Thu Sep 26 21:47:32 EDT 2013


Author: rcurtin
Date: Thu Sep 26 21:47:32 2013
New Revision: 15854

Log:
Update NMF to work with sparse matrices also.


Modified:
   mlpack/trunk/src/mlpack/methods/nmf/als_update_rules.hpp
   mlpack/trunk/src/mlpack/methods/nmf/mult_div_update_rules.hpp
   mlpack/trunk/src/mlpack/methods/nmf/nmf.hpp
   mlpack/trunk/src/mlpack/methods/nmf/nmf_impl.hpp
   mlpack/trunk/src/mlpack/methods/nmf/random_acol_init.hpp
   mlpack/trunk/src/mlpack/methods/nmf/random_init.hpp

Modified: mlpack/trunk/src/mlpack/methods/nmf/als_update_rules.hpp
==============================================================================
--- mlpack/trunk/src/mlpack/methods/nmf/als_update_rules.hpp	(original)
+++ mlpack/trunk/src/mlpack/methods/nmf/als_update_rules.hpp	Thu Sep 26 21:47:32 2013
@@ -38,7 +38,8 @@
    * @param W Basis matrix to be updated.
    * @param H Encoding matrix.
    */
-  inline static void Update(const arma::mat& V,
+  template<typename MatType>
+  inline static void Update(const MatType& V,
                             arma::mat& W,
                             const arma::mat& H)
   {
@@ -77,7 +78,8 @@
    * @param W Basis matrix.
    * @param H Encoding matrix to be updated.
    */
-  inline static void Update(const arma::mat& V,
+  template<typename MatType>
+  inline static void Update(const MatType& V,
                             const arma::mat& W,
                             arma::mat& H)
   {

Modified: mlpack/trunk/src/mlpack/methods/nmf/mult_div_update_rules.hpp
==============================================================================
--- mlpack/trunk/src/mlpack/methods/nmf/mult_div_update_rules.hpp	(original)
+++ mlpack/trunk/src/mlpack/methods/nmf/mult_div_update_rules.hpp	Thu Sep 26 21:47:32 2013
@@ -39,7 +39,8 @@
    * @param W Basis matrix to be updated.
    * @param H Encoding matrix.
    */
-  inline static void Update(const arma::mat& V,
+  template<typename MatType>
+  inline static void Update(const MatType& V,
                             arma::mat& W,
                             const arma::mat& H)
   {
@@ -80,7 +81,8 @@
    * @param W Basis matrix.
    * @param H Encoding matrix to updated.
    */
-  inline static void Update(const arma::mat& V,
+  template<typename MatType>
+  inline static void Update(const MatType& V,
                             const arma::mat& W,
                             arma::mat& H)
   {

Modified: mlpack/trunk/src/mlpack/methods/nmf/nmf.hpp
==============================================================================
--- mlpack/trunk/src/mlpack/methods/nmf/nmf.hpp	(original)
+++ mlpack/trunk/src/mlpack/methods/nmf/nmf.hpp	Thu Sep 26 21:47:32 2013
@@ -104,8 +104,11 @@
    * @param H Encoding matrix to output.
    * @param r Rank r of the factorization.
    */
-  void Apply(const arma::mat& V, const size_t r, arma::mat& W, arma::mat& H)
-      const;
+  template<typename MatType>
+  void Apply(const MatType& V,
+             const size_t r,
+             arma::mat& W,
+             arma::mat& H) const;
 
  private:
   //! The maximum number of iterations allowed before giving up.

Modified: mlpack/trunk/src/mlpack/methods/nmf/nmf_impl.hpp
==============================================================================
--- mlpack/trunk/src/mlpack/methods/nmf/nmf_impl.hpp	(original)
+++ mlpack/trunk/src/mlpack/methods/nmf/nmf_impl.hpp	Thu Sep 26 21:47:32 2013
@@ -46,8 +46,9 @@
 template<typename InitializationRule,
          typename WUpdateRule,
          typename HUpdateRule>
+template<typename MatType>
 void NMF<InitializationRule, WUpdateRule, HUpdateRule>::Apply(
-    const arma::mat& V,
+    const MatType& V,
     const size_t r,
     arma::mat& W,
     arma::mat& H) const

Modified: mlpack/trunk/src/mlpack/methods/nmf/random_acol_init.hpp
==============================================================================
--- mlpack/trunk/src/mlpack/methods/nmf/random_acol_init.hpp	(original)
+++ mlpack/trunk/src/mlpack/methods/nmf/random_acol_init.hpp	Thu Sep 26 21:47:32 2013
@@ -31,7 +31,8 @@
   RandomAcolInitialization()
   { }
 
-  inline static void Initialize(const arma::mat& V,
+  template<typename MatType>
+  inline static void Initialize(const MatType& V,
                                 const size_t r,
                                 arma::mat& W,
                                 arma::mat& H)

Modified: mlpack/trunk/src/mlpack/methods/nmf/random_init.hpp
==============================================================================
--- mlpack/trunk/src/mlpack/methods/nmf/random_init.hpp	(original)
+++ mlpack/trunk/src/mlpack/methods/nmf/random_init.hpp	Thu Sep 26 21:47:32 2013
@@ -19,7 +19,8 @@
   // Empty constructor required for the InitializeRule template
   RandomInitialization() { }
 
-  inline static void Initialize(const arma::mat& V,
+  template<typename MatType>
+  inline static void Initialize(const MatType& V,
                                 const size_t r,
                                 arma::mat& W,
                                 arma::mat& H)



More information about the mlpack-svn mailing list