コード例 #1
0
float64_t CKLDualInferenceMethod::adjust_step(void *obj,
	const float64_t *parameters, const float64_t *direction,
	const int dim, const float64_t step)
{
	/* Note that parameters = parameters_pre_iter - step * gradient_pre_iter */
	CKLDualInferenceMethod * obj_prt
		= static_cast<CKLDualInferenceMethod *>(obj);

	ASSERT(obj_prt != NULL);

	float64_t *non_const_direction=const_cast<float64_t *>(direction);
	SGVector<float64_t> sg_direction(non_const_direction, dim, false);

	CDualVariationalGaussianLikelihood* lik= obj_prt->get_dual_variational_likelihood();

	float64_t adjust_stp=lik->adjust_step_wrt_dual_parameter(sg_direction, step);
	return adjust_stp;
}
コード例 #2
0
float64_t CKLDualInferenceMethodMinimizer::adjust_step(void *obj, const float64_t *parameters,
	const float64_t *direction, const int dim, const float64_t step)
{
	/* Note that parameters = parameters_pre_iter - step * gradient_pre_iter */
	CKLDualInferenceMethodMinimizer * obj_prt
		= static_cast<CKLDualInferenceMethodMinimizer *>(obj);

	REQUIRE(obj_prt, "The instance object passed to L-BFGS optimizer should not be NULL\n");

	float64_t *non_const_direction=const_cast<float64_t *>(direction);
	SGVector<float64_t> sg_direction(non_const_direction, dim, false);

	KLDualInferenceMethodCostFunction* fun=dynamic_cast<KLDualInferenceMethodCostFunction*>(obj_prt->m_fun);
	REQUIRE(fun, "The cost function must be KLDualInferenceMethodCostFunction\n");

	CDualVariationalGaussianLikelihood* lik=fun->get_dual_variational_likelihood();

	float64_t adjust_stp=lik->adjust_step_wrt_dual_parameter(sg_direction, step);
	return adjust_stp;
}