本文整理汇总了C++中CKernel::kernel方法的典型用法代码示例。如果您正苦于以下问题:C++ CKernel::kernel方法的具体用法?C++ CKernel::kernel怎么用?C++ CKernel::kernel使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CKernel
的用法示例。
在下文中一共展示了CKernel::kernel方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: compute_mkl_dual_objective
// assumes that all constraints are satisfied
float64_t CMKL::compute_mkl_dual_objective()
{
int32_t n=get_num_support_vectors();
float64_t mkl_obj=0;
if (labels && kernel && kernel->get_kernel_type() == K_COMBINED)
{
CKernel* kn = ((CCombinedKernel*)kernel)->get_first_kernel();
while (kn)
{
float64_t sum=0;
for (int32_t i=0; i<n; i++)
{
int32_t ii=get_support_vector(i);
for (int32_t j=0; j<n; j++)
{
int32_t jj=get_support_vector(j);
sum+=get_alpha(i)*get_alpha(j)*kn->kernel(ii,jj);
}
}
if (mkl_norm==1.0)
mkl_obj = CMath::max(mkl_obj, sum);
else
mkl_obj += CMath::pow(sum, mkl_norm/(mkl_norm-1));
SG_UNREF(kn);
kn = ((CCombinedKernel*) kernel)->get_next_kernel();
}
if (mkl_norm==1.0)
mkl_obj=-0.5*mkl_obj;
else
mkl_obj= -0.5*CMath::pow(mkl_obj, (mkl_norm-1)/mkl_norm);
mkl_obj+=compute_sum_alpha();
}
else
SG_ERROR( "cannot compute objective, labels or kernel not set\n");
return -mkl_obj;
}