CLatentLabels* CLatentSVM::apply() { if (!m_model) SG_ERROR("LatentModel is not set!\n"); if (!features) return NULL; index_t num_examples = m_model->get_num_vectors(); CLatentLabels* hs = new CLatentLabels(num_examples); CBinaryLabels* ys = new CBinaryLabels(num_examples); hs->set_labels(ys); m_model->set_labels(hs); for (index_t i = 0; i < num_examples; ++i) { /* find h for the example */ CData* h = m_model->infer_latent_variable(w, i); hs->add_latent_label(h); } /* compute the y labels */ CDotFeatures* x = m_model->get_psi_feature_vectors(); x->dense_dot_range(ys->get_labels().vector, 0, num_examples, NULL, w.vector, w.vlen, 0.0); return hs; }