diff --git a/src/shogun/clustering/GMM.cpp b/src/shogun/clustering/GMM.cpp index 03754696da3..68fa5c35ead 100644 --- a/src/shogun/clustering/GMM.cpp +++ b/src/shogun/clustering/GMM.cpp @@ -9,15 +9,12 @@ */ #include -#ifdef HAVE_LAPACK - #include #include #include #include #include #include -#include #include #include #include @@ -585,11 +582,8 @@ void CGMM::max_likelihood(SGMatrix alpha, float64_t min_cov) switch (cov_type) { case FULL: - cblas_dger( - CblasRowMajor, num_dim, num_dim, - alpha.matrix[j * alpha.num_cols + i], v.vector, 1, - v.vector, 1, (double*)cov_sum.matrix, num_dim); - + linalg::dger( + alpha.matrix[j * alpha.num_cols + i], v, v, cov_sum); break; case DIAG: { @@ -827,4 +821,3 @@ void CGMM::register_params() m_parameters->add(&m_coefficients, "m_coefficients", "Mixture coefficients."); } -#endif diff --git a/src/shogun/clustering/GMM.h b/src/shogun/clustering/GMM.h index ebf8e395615..272ff255fb9 100644 --- a/src/shogun/clustering/GMM.h +++ b/src/shogun/clustering/GMM.h @@ -12,8 +12,6 @@ #include -#ifdef HAVE_LAPACK - #include #include #include @@ -249,5 +247,4 @@ class CGMM : public CDistribution SGVector m_coefficients; }; } -#endif //HAVE_LAPACK #endif //_GMM_H__ diff --git a/tests/unit/clustering/gmm_unittest.cc b/tests/unit/clustering/gmm_unittest.cc index d0cb0b6cc25..2426d5d34e8 100644 --- a/tests/unit/clustering/gmm_unittest.cc +++ b/tests/unit/clustering/gmm_unittest.cc @@ -5,34 +5,41 @@ * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * - * 1. Redistributions of source code must retain the above copyright notice, this + * 1. Redistributions of source code must retain the above copyright notice, + * this * list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + * FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * The views and conclusions contained in the software and documentation are those - * of the authors and should not be interpreted as representing official policies, + * The views and conclusions contained in the software and documentation are + * those + * of the authors and should not be interpreted as representing official + * policies, * either expressed or implied, of the Shogun Development Team. * - * Authors: 2018 Wuwei Lin + * Written (W) 2018 Wuwei Lin */ -#include -#include -#include #include +#include +#include +#include +#include using namespace shogun; @@ -40,20 +47,18 @@ TEST(GMM, train_em_full_cov) { /*create a rectangle with four points as (0,0) (1,7) (10,6) (4,4) */ SGMatrix rect(2, 4); - rect(0,0)=0; - rect(0,1)=1; - rect(0,2)=10; - rect(0,3)=4; - rect(1,0)=0; - rect(1,1)=7; - rect(1,2)=6; - rect(1,3)=4; + rect(0, 0) = 0; + rect(0, 1) = 1; + rect(0, 2) = 10; + rect(0, 3) = 4; + rect(1, 0) = 0; + rect(1, 1) = 7; + rect(1, 2) = 6; + rect(1, 3) = 4; const int num_components = 2; - CGMM *clustering = new CGMM(num_components, FULL); - CDenseFeatures* features=new CDenseFeatures(rect); - SG_REF(clustering); - SG_REF(features); + auto clustering = some(num_components, FULL); + auto features = some >(rect); clustering->train(features); clustering->train_em(); @@ -72,14 +77,11 @@ TEST(GMM, train_em_full_cov) EXPECT_NEAR(mean[1], 7.0, 1e-10); SGVector cov = clustering->get_nth_cov(0); - EXPECT_NEAR(cov[0], 16.88888888888, 1e-10); - EXPECT_NEAR(cov[1], 9.77777777777, 1e-10); + EXPECT_NEAR(cov[0], 16.88888888888, 1e-10); + EXPECT_NEAR(cov[1], 9.77777777777, 1e-10); cov = clustering->get_nth_cov(1); - EXPECT_NEAR(cov[0], 0.000000001, 1e-10); - EXPECT_NEAR(cov[1], 0.0, 1e-10); + EXPECT_NEAR(cov[0], 0.000000001, 1e-10); + EXPECT_NEAR(cov[1], 0.0, 1e-10); - SG_UNREF(clustering); - SG_UNREF(features); } -