本文整理汇总了C++中CKernel::init方法的典型用法代码示例。如果您正苦于以下问题:C++ CKernel::init方法的具体用法?C++ CKernel::init怎么用?C++ CKernel::init使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CKernel
的用法示例。
在下文中一共展示了CKernel::init方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: apply_multiclass
CMulticlassLabels* CRelaxedTree::apply_multiclass(CFeatures* data)
{
if (data != NULL)
{
CDenseFeatures<float64_t> *feats = dynamic_cast<CDenseFeatures<float64_t>*>(data);
REQUIRE(feats != NULL, ("Require non-NULL dense features of float64_t\n"))
set_features(feats);
}
// init kernels for all sub-machines
for (int32_t i=0; i<m_machines->get_num_elements(); i++)
{
CSVM *machine = (CSVM*)m_machines->get_element(i);
CKernel *kernel = machine->get_kernel();
CFeatures* lhs = kernel->get_lhs();
kernel->init(lhs, m_feats);
SG_UNREF(machine);
SG_UNREF(kernel);
SG_UNREF(lhs);
}
CMulticlassLabels *lab = new CMulticlassLabels(m_feats->get_num_vectors());
SG_REF(lab);
for (int32_t i=0; i < lab->get_num_labels(); ++i)
{
lab->set_int_label(i, int32_t(apply_one(i)));
}
return lab;
}
示例2: update_kernel_matrices
void CGaussianProcessRegression::update_kernel_matrices()
{
CKernel* kernel = NULL;
if (m_method)
kernel = m_method->get_kernel();
if (kernel)
{
float64_t m_scale = m_method->get_scale();
CFeatures* latent_features = m_method->get_latent_features();
if (latent_features)
kernel->init(latent_features, m_data);
else
kernel->init(m_data, m_data);
//K(X_test, X_train)
m_k_trts = kernel->get_kernel_matrix();
for (index_t i = 0; i < m_k_trts.num_rows; i++)
{
for (index_t j = 0; j < m_k_trts.num_cols; j++)
m_k_trts(i,j) *= (m_scale*m_scale);
}
kernel->init(m_data, m_data);
m_k_tsts = kernel->get_kernel_matrix();
for (index_t i = 0; i < m_k_tsts.num_rows; i++)
{
for (index_t j = 0; j < m_k_tsts.num_cols; j++)
m_k_tsts(i,j) *= (m_scale*m_scale);
}
kernel->remove_lhs_and_rhs();
SG_UNREF(kernel);
SG_UNREF(latent_features);
}
}
示例3: update_kernel_matrices
void CGaussianProcessRegression::update_kernel_matrices()
{
CKernel* kernel = NULL;
if (m_method)
kernel = m_method->get_kernel();
if (kernel)
{
float64_t m_scale = m_method->get_scale();
kernel->cleanup();
kernel->init(m_features, m_data);
//K(X_test, X_train)
m_k_trts = kernel->get_kernel_matrix();
for (index_t i = 0; i < m_k_trts.num_rows; i++)
{
for (index_t j = 0; j < m_k_trts.num_cols; j++)
m_k_trts(i,j) *= (m_scale*m_scale);
}
kernel->cleanup();
kernel->init(m_data, m_data);
m_k_tsts = kernel->get_kernel_matrix();
for (index_t i = 0; i < m_k_tsts.num_rows; i++)
{
for (index_t j = 0; j < m_k_tsts.num_cols; j++)
m_k_tsts(i,j) *= (m_scale*m_scale);
}
SG_UNREF(kernel);
}
}
示例4: if
SGVector<int32_t> CRelaxedTree::train_node_with_initialization(const CRelaxedTree::entry_t &mu_entry, SGVector<int32_t> classes, CSVM *svm)
{
SGVector<int32_t> mu(classes.vlen), prev_mu(classes.vlen);
mu.zero();
mu[mu_entry.first.first] = 1;
mu[mu_entry.first.second] = -1;
SGVector<int32_t> long_mu(m_num_classes);
svm->set_C(m_svm_C, m_svm_C);
svm->set_epsilon(m_svm_epsilon);
for (int32_t iiter=0; iiter < m_max_num_iter; ++iiter)
{
long_mu.zero();
for (int32_t i=0; i < classes.vlen; ++i)
{
if (mu[i] == 1)
long_mu[classes[i]] = 1;
else if (mu[i] == -1)
long_mu[classes[i]] = -1;
}
SGVector<int32_t> subset(m_feats->get_num_vectors());
SGVector<float64_t> binlab(m_feats->get_num_vectors());
int32_t k=0;
CMulticlassLabels *labs = dynamic_cast<CMulticlassLabels *>(m_labels);
for (int32_t i=0; i < binlab.vlen; ++i)
{
int32_t lab = labs->get_int_label(i);
binlab[i] = long_mu[lab];
if (long_mu[lab] != 0)
subset[k++] = i;
}
subset.vlen = k;
CBinaryLabels *binary_labels = new CBinaryLabels(binlab);
SG_REF(binary_labels);
binary_labels->add_subset(subset);
m_feats->add_subset(subset);
CKernel *kernel = (CKernel *)m_kernel->shallow_copy();
kernel->init(m_feats, m_feats);
svm->set_kernel(kernel);
svm->set_labels(binary_labels);
svm->train();
binary_labels->remove_subset();
m_feats->remove_subset();
SG_UNREF(binary_labels);
std::copy(&mu[0], &mu[mu.vlen], &prev_mu[0]);
mu = color_label_space(svm, classes);
bool bbreak = true;
for (int32_t i=0; i < mu.vlen; ++i)
{
if (mu[i] != prev_mu[i])
{
bbreak = false;
break;
}
}
if (bbreak)
break;
}
return mu;
}