本文整理汇总了C++中CTime::start方法的典型用法代码示例。如果您正苦于以下问题:C++ CTime::start方法的具体用法?C++ CTime::start怎么用?C++ CTime::start使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CTime
的用法示例。
在下文中一共展示了CTime::start方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CTime
CSimpleFeatures<float64_t>* CKernelLocallyLinearEmbedding::embed_kernel(CKernel* kernel)
{
CTime* time = new CTime();
time->start();
SGMatrix<float64_t> kernel_matrix = kernel->get_kernel_matrix();
SG_DEBUG("Kernel matrix computation took %fs\n",time->cur_time_diff());
time->start();
SGMatrix<int32_t> neighborhood_matrix = get_neighborhood_matrix(kernel_matrix,m_k);
SG_DEBUG("Neighbors finding took %fs\n",time->cur_time_diff());
time->start();
SGMatrix<float64_t> M_matrix = construct_weight_matrix(kernel_matrix,neighborhood_matrix);
SG_DEBUG("Weights computation took %fs\n",time->cur_time_diff());
kernel_matrix.destroy_matrix();
neighborhood_matrix.destroy_matrix();
time->start();
SGMatrix<float64_t> nullspace = construct_embedding(M_matrix,m_target_dim);
SG_DEBUG("Embedding construction took %fs\n",time->cur_time_diff());
M_matrix.destroy_matrix();
delete time;
return new CSimpleFeatures<float64_t>(nullspace);
}
示例2: p
SGVector<complex128_t> CCGMShiftedFamilySolver::solve_shifted_weighted(
CLinearOperator<SGVector<float64_t>, SGVector<float64_t> >* A, SGVector<float64_t> b,
SGVector<complex128_t> shifts, SGVector<complex128_t> weights)
{
SG_DEBUG("Entering\n");
// sanity check
REQUIRE(A, "Operator is NULL!\n");
REQUIRE(A->get_dimension()==b.vlen, "Dimension mismatch! [%d vs %d]\n",
A->get_dimension(), b.vlen);
REQUIRE(shifts.vector,"Shifts are not initialized!\n");
REQUIRE(weights.vector,"Weights are not initialized!\n");
REQUIRE(shifts.vlen==weights.vlen, "Number of shifts and number of "
"weights are not equal! [%d vs %d]\n", shifts.vlen, weights.vlen);
// the solution matrix, one column per shift, initial guess 0 for all
MatrixXcd x_sh=MatrixXcd::Zero(b.vlen, shifts.vlen);
MatrixXcd p_sh=MatrixXcd::Zero(b.vlen, shifts.vlen);
// non-shifted direction
SGVector<float64_t> p_(b.vlen);
// the rest of the part hinges on eigen3 for computing norms
Map<VectorXd> b_map(b.vector, b.vlen);
Map<VectorXd> p(p_.vector, p_.vlen);
// residual r_i=b-Ax_i, here x_0=[0], so r_0=b
VectorXd r=b_map;
// initial direction is same as residual
p=r;
p_sh=r.replicate(1, shifts.vlen).cast<complex128_t>();
// non shifted initializers
float64_t r_norm2=r.dot(r);
float64_t beta_old=1.0;
float64_t alpha=1.0;
// shifted quantities
SGVector<complex128_t> alpha_sh(shifts.vlen);
SGVector<complex128_t> beta_sh(shifts.vlen);
SGVector<complex128_t> zeta_sh_old(shifts.vlen);
SGVector<complex128_t> zeta_sh_cur(shifts.vlen);
SGVector<complex128_t> zeta_sh_new(shifts.vlen);
// shifted initializers
zeta_sh_old.set_const(1.0);
zeta_sh_cur.set_const(1.0);
// the iterator for this iterative solver
IterativeSolverIterator<float64_t> it(r, m_max_iteration_limit,
m_relative_tolerence, m_absolute_tolerence);
// start the timer
CTime time;
time.start();
// set the residuals to zero
if (m_store_residuals)
m_residuals.set_const(0.0);
// CG iteration begins
for (it.begin(r); !it.end(r); ++it)
{
SG_DEBUG("CG iteration %d, residual norm %f\n",
it.get_iter_info().iteration_count,
it.get_iter_info().residual_norm);
if (m_store_residuals)
{
m_residuals[it.get_iter_info().iteration_count]
=it.get_iter_info().residual_norm;
}
// apply linear operator to the direction vector
SGVector<float64_t> Ap_=A->apply(p_);
Map<VectorXd> Ap(Ap_.vector, Ap_.vlen);
// compute p^{T}Ap, if zero, failure
float64_t p_dot_Ap=p.dot(Ap);
if (p_dot_Ap==0.0)
break;
// compute the beta parameter of CG_M
float64_t beta=-r_norm2/p_dot_Ap;
// compute the zeta-shifted parameter of CG_M
compute_zeta_sh_new(zeta_sh_old, zeta_sh_cur, shifts, beta_old, beta,
alpha, zeta_sh_new);
// compute beta-shifted parameter of CG_M
compute_beta_sh(zeta_sh_new, zeta_sh_cur, beta, beta_sh);
// update the solution vector and residual
for (index_t i=0; i<shifts.vlen; ++i)
x_sh.col(i)-=beta_sh[i]*p_sh.col(i);
// r_{i}=r_{i-1}+\beta_{i}Ap
r+=beta*Ap;
//.........这里部分代码省略.........
示例3: train_machine
bool CShareBoost::train_machine(CFeatures* data)
{
if (data)
set_features(data);
if (m_features == NULL)
SG_ERROR("No features given for training\n")
if (m_labels == NULL)
SG_ERROR("No labels given for training\n")
if (m_nonzero_feas <= 0)
SG_ERROR("Set a valid (> 0) number of non-zero features to seek before training\n")
if (m_nonzero_feas >= dynamic_cast<CDenseFeatures<float64_t>*>(m_features)->get_num_features())
SG_ERROR("It doesn't make sense to use ShareBoost with num non-zero features >= num features in the data\n")
m_fea = dynamic_cast<CDenseFeatures<float64_t> *>(m_features)->get_feature_matrix();
m_rho = SGMatrix<float64_t>(m_multiclass_strategy->get_num_classes(), m_fea.num_cols);
m_rho_norm = SGVector<float64_t>(m_fea.num_cols);
m_pred = SGMatrix<float64_t>(m_fea.num_cols, m_multiclass_strategy->get_num_classes());
m_pred.zero();
m_activeset = SGVector<int32_t>(m_fea.num_rows);
m_activeset.vlen = 0;
m_machines->reset_array();
for (int32_t i=0; i < m_multiclass_strategy->get_num_classes(); ++i)
m_machines->push_back(new CLinearMachine());
CTime *timer = new CTime();
float64_t t_compute_pred = 0; // t of 1st round is 0, since no pred to compute
for (int32_t t=0; t < m_nonzero_feas; ++t)
{
timer->start();
compute_rho();
int32_t i_fea = choose_feature();
m_activeset.vector[m_activeset.vlen] = i_fea;
m_activeset.vlen += 1;
float64_t t_choose_feature = timer->cur_time_diff();
timer->start();
optimize_coefficients();
float64_t t_optimize = timer->cur_time_diff();
SG_SDEBUG(" SB[round %03d]: (%8.4f + %8.4f) sec.\n", t,
t_compute_pred + t_choose_feature, t_optimize);
timer->start();
compute_pred();
t_compute_pred = timer->cur_time_diff();
}
SG_UNREF(timer);
// release memory
m_fea = SGMatrix<float64_t>();
m_rho = SGMatrix<float64_t>();
m_rho_norm = SGVector<float64_t>();
m_pred = SGMatrix<float64_t>();
return true;
}
示例4: result
SGVector<float64_t> CConjugateGradientSolver::solve(
CLinearOperator<float64_t>* A, SGVector<float64_t> b)
{
SG_DEBUG("CConjugateGradientSolve::solve(): Entering..\n");
// sanity check
REQUIRE(A, "Operator is NULL!\n");
REQUIRE(A->get_dimension()==b.vlen, "Dimension mismatch!\n");
// the final solution vector, initial guess is 0
SGVector<float64_t> result(b.vlen);
result.set_const(0.0);
// the rest of the part hinges on eigen3 for computing norms
Map<VectorXd> x(result.vector, result.vlen);
Map<VectorXd> b_map(b.vector, b.vlen);
// direction vector
SGVector<float64_t> p_(result.vlen);
Map<VectorXd> p(p_.vector, p_.vlen);
// residual r_i=b-Ax_i, here x_0=[0], so r_0=b
VectorXd r=b_map;
// initial direction is same as residual
p=r;
// the iterator for this iterative solver
IterativeSolverIterator<float64_t> it(b_map, m_max_iteration_limit,
m_relative_tolerence, m_absolute_tolerence);
// CG iteration begins
float64_t r_norm2=r.dot(r);
// start the timer
CTime time;
time.start();
// set the residuals to zero
if (m_store_residuals)
m_residuals.set_const(0.0);
for (it.begin(r); !it.end(r); ++it)
{
SG_DEBUG("CG iteration %d, residual norm %f\n",
it.get_iter_info().iteration_count,
it.get_iter_info().residual_norm);
if (m_store_residuals)
{
m_residuals[it.get_iter_info().iteration_count]
=it.get_iter_info().residual_norm;
}
// apply linear operator to the direction vector
SGVector<float64_t> Ap_=A->apply(p_);
Map<VectorXd> Ap(Ap_.vector, Ap_.vlen);
// compute p^{T}Ap, if zero, failure
float64_t p_dot_Ap=p.dot(Ap);
if (p_dot_Ap==0.0)
break;
// compute the alpha parameter of CG
float64_t alpha=r_norm2/p_dot_Ap;
// update the solution vector and residual
// x_{i}=x_{i-1}+\alpha_{i}p
x+=alpha*p;
// r_{i}=r_{i-1}-\alpha_{i}p
r-=alpha*Ap;
// compute new ||r||_{2}, if zero, converged
float64_t r_norm2_i=r.dot(r);
if (r_norm2_i==0.0)
break;
// compute the beta parameter of CG
float64_t beta=r_norm2_i/r_norm2;
// update direction, and ||r||_{2}
r_norm2=r_norm2_i;
p=r+beta*p;
}
float64_t elapsed=time.cur_time_diff();
if (!it.succeeded(r))
SG_WARNING("Did not converge!\n");
SG_INFO("Iteration took %ld times, residual norm=%.20lf, time elapsed=%lf\n",
it.get_iter_info().iteration_count, it.get_iter_info().residual_norm, elapsed);
SG_DEBUG("CConjugateGradientSolve::solve(): Leaving..\n");
return result;
}
示例5: main
int main()
{
init_shogun(&print_message, &print_warning,
&print_error);
try
{
uint256_t* a;
uint32_t* b;
CTime t;
t.io->set_loglevel(MSG_DEBUG);
SG_SPRINT("gen data..");
t.start();
gen_ints(a,b, LEN);
t.cur_time_diff(true);
SG_SPRINT("qsort..");
t.start();
CMath::qsort_index(a, b, LEN);
t.cur_time_diff(true);
SG_SPRINT("\n\n");
for (uint32_t i=0; i<10; i++)
{
SG_SPRINT("a[%d]=", i);
a[i].print_hex();
SG_SPRINT("\n");
}
SG_SPRINT("\n\n");
a[0]=(uint64_t[4]) {1,2,3,4};
uint64_t val[4]={5,6,7,8};
a[1]=val;
a[2]=a[0];
CMath::swap(a[0],a[1]);
printf("a[0]==a[1] %d\n", (int) (a[0] == a[1]));
printf("a[0]<a[1] %d\n", (int) (a[0] < a[1]));
printf("a[0]<=a[1] %d\n", (int) (a[0] <= a[1]));
printf("a[0]>a[1] %d\n", (int) (a[0] > a[1]));
printf("a[0]>=a[1] %d\n", (int) (a[0] >= a[1]));
printf("a[0]==a[0] %d\n", (int) (a[0] == a[0]));
printf("a[0]<a[0] %d\n", (int) (a[0] < a[0]));
printf("a[0]<=a[0] %d\n", (int) (a[0] <= a[0]));
printf("a[0]>a[0] %d\n", (int) (a[0] > a[0]));
printf("a[0]>=a[0] %d\n", (int) (a[0] >= a[0]));
SG_SPRINT("\n\n");
for (uint32_t i=0; i<10 ; i++)
{
SG_SPRINT("a[%d]=", i);
a[i].print_hex();
printf("\n");
}
delete[] a;
delete[] b;
}
catch(ShogunException & sh)
{
SG_SPRINT("%s",sh.get_exception_string());
}
exit_shogun();
}
示例6: apply
CFeatures* CLocallyLinearEmbedding::apply(CFeatures* features)
{
ASSERT(features);
// check features
if (!(features->get_feature_class()==C_DENSE &&
features->get_feature_type()==F_DREAL))
{
SG_ERROR("Given features are not of SimpleRealFeatures type.\n");
}
// shorthand for simplefeatures
CDenseFeatures<float64_t>* simple_features = (CDenseFeatures<float64_t>*) features;
SG_REF(features);
// get and check number of vectors
int32_t N = simple_features->get_num_vectors();
if (m_k>=N)
SG_ERROR("Number of neighbors (%d) should be less than number of objects (%d).\n",
m_k, N);
// compute distance matrix
SG_DEBUG("Computing distance matrix\n");
ASSERT(m_distance);
CTime* time = new CTime();
time->start();
m_distance->init(simple_features,simple_features);
SGMatrix<float64_t> distance_matrix = m_distance->get_distance_matrix();
m_distance->remove_lhs_and_rhs();
SG_DEBUG("Distance matrix computation took %fs\n",time->cur_time_diff());
SG_DEBUG("Calculating neighborhood matrix\n");
SGMatrix<int32_t> neighborhood_matrix;
time->start();
if (m_auto_k)
{
neighborhood_matrix = get_neighborhood_matrix(distance_matrix,m_max_k);
m_k = estimate_k(simple_features,neighborhood_matrix);
SG_DEBUG("Estimated k with value of %d\n",m_k);
}
else
neighborhood_matrix = get_neighborhood_matrix(distance_matrix,m_k);
SG_DEBUG("Neighbors finding took %fs\n",time->cur_time_diff());
// init W (weight) matrix
float64_t* W_matrix = SG_CALLOC(float64_t, N*N);
// construct weight matrix
SG_DEBUG("Constructing weight matrix\n");
time->start();
SGMatrix<float64_t> weight_matrix = construct_weight_matrix(simple_features,W_matrix,neighborhood_matrix);
SG_DEBUG("Weight matrix construction took %.5fs\n", time->cur_time_diff());
// find null space of weight matrix
SG_DEBUG("Finding nullspace\n");
time->start();
SGMatrix<float64_t> new_feature_matrix = construct_embedding(weight_matrix,m_target_dim);
SG_DEBUG("Eigenproblem solving took %.5fs\n", time->cur_time_diff());
delete time;
SG_UNREF(features);
return (CFeatures*)(new CDenseFeatures<float64_t>(new_feature_matrix));
}