Skip to content

Commit

Permalink
Merge pull request #3543 from sudk1896/sgvec
Browse files Browse the repository at this point in the history
Replace pointer and vlen with SGVector in QDA.
  • Loading branch information
karlnapf committed Nov 18, 2016
2 parents e892b2a + deea0f5 commit 9d8c1e7
Showing 1 changed file with 10 additions and 14 deletions.
24 changes: 10 additions & 14 deletions src/shogun/multiclass/QDA.cpp
Expand Up @@ -127,23 +127,21 @@ CMulticlassLabels* CQDA::apply_multiclass(CFeatures* data)
VectorXd norm2(num_vecs*m_num_classes);
norm2.setZero();

int32_t vlen;
bool vfree;
float64_t* vec;
SGVector<float64_t> vec;
for (int k = 0; k < m_num_classes; k++)
{
// X = features - means
for (int i = 0; i < num_vecs; i++)
{
vec = rf->get_feature_vector(i, vlen, vfree);
ASSERT(vec)
vec = rf->get_feature_vector(i);
ASSERT(vec.vector)

Map< VectorXd > Evec(vec,vlen);
Map< VectorXd > Evec(vec, vec.vlen);
Map< VectorXd > Em_means_col(m_means.get_column_vector(k), m_dim);

X.row(i) = Evec - Em_means_col;

rf->free_feature_vector(vec, i, vfree);
rf->free_feature_vector(vec, i);
}

Map< MatrixXd > Em_M(m_M.get_matrix(k), m_dim, m_dim);
Expand Down Expand Up @@ -253,23 +251,21 @@ bool CQDA::train_machine(CFeatures* data)

m_means.zero();

int32_t vlen;
bool vfree;
float64_t* vec;
SGVector<float64_t> vec;
for (int k = 0; k < m_num_classes; k++)
{
MatrixXd buffer(class_nums[k], m_dim);
Map< VectorXd > Em_means(m_means.get_column_vector(k), m_dim);
for (int i = 0; i < class_nums[k]; i++)
{
vec = rf->get_feature_vector(class_idxs[k*num_vec + i], vlen, vfree);
ASSERT(vec)
vec = rf->get_feature_vector(class_idxs[k*num_vec + i]);
ASSERT(vec.vector)

Map< VectorXd > Evec(vec, vlen);
Map< VectorXd > Evec(vec, vec.vlen);
Em_means += Evec;
buffer.row(i) = Evec;

rf->free_feature_vector(vec, class_idxs[k*num_vec + i], vfree);
rf->free_feature_vector(vec, class_idxs[k*num_vec + i]);
}

Em_means /= class_nums[k];
Expand Down

0 comments on commit 9d8c1e7

Please sign in to comment.