本文整理汇总了C++中xvec_t类的典型用法代码示例。如果您正苦于以下问题:C++ xvec_t类的具体用法?C++ xvec_t怎么用?C++ xvec_t使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了xvec_t类的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: clone
double
SvmSgd::my_evaluateEta(int imin, int imax, const xvec_t &xp, const yvec_t &yp, double eta00)
{
SvmSgd clone(*this); // take a copy of the current state
cout << "[my_evaluateEta: clone.wDivisor: ]" << setprecision(12) << clone.wDivisor << " clone.t: " << clone.t << " clone.eta0: " << clone.eta0 << endl;
cout << "Trying eta=" << eta00 ;
assert(imin <= imax);
double _t = 0;
double eta = 0;
for (int i=imin; i<=imax; i++){
eta = eta00 / (1 + lambda * eta00 * _t);
//cout << "[my_evaluateEta:] Eta: " << eta << endl;
clone.trainOne(xp.at(i), yp.at(i), eta);
_t++;
}
double loss = 0;
double cost = 0;
for (int i=imin; i<=imax; i++)
clone.testOne(xp.at(i), yp.at(i), &loss, 0);
loss = loss / (imax - imin + 1);
cost = loss + 0.5 * lambda * clone.wnorm();
cout <<" yields loss " << loss << endl;
// cout << "Trying eta=" << eta << " yields cost " << cost << endl;
return cost;
}
开发者ID:shanil-puri,项目名称:SysResearchLab,代码行数:27,代码来源:init_svmsgd.cpp
示例2: clone
double
SvmAisgd::evaluateEta(int imin, int imax, const xvec_t &xp, const yvec_t &yp, double eta)
{
SvmAisgd clone(*this); // take a copy of the current state
assert(imin <= imax);
for (int i=imin; i<=imax; i++)
clone.trainOne(xp.at(i), yp.at(i), eta, 1.0);
double loss = 0;
double cost = 0;
for (int i=imin; i<=imax; i++)
clone.testOne(xp.at(i), yp.at(i), &loss, 0);
loss = loss / (imax - imin + 1);
cost = loss + 0.5 * lambda * clone.wnorm();
// cout << "Trying eta=" << eta << " yields cost " << cost << endl;
return cost;
}
开发者ID:airoldilab,项目名称:ai-sgd,代码行数:16,代码来源:svmaisgd.cpp
示例3: loadmult_datafile_sub
static void
loadmult_datafile_sub(istream &f, bool binary, const char *fname,
xvec_t &xp, yvec_t &yp, int &maxdim, int maxrows)
{
cout << "# Reading file " << fname << endl;
if (! f.good())
assertfail("Cannot open " << fname);
int pcount = 0;
while (f.good() && maxrows--)
{
double y;
SVector x;
y = (f.get());
x.load(f);
if (f.good())
{
xp.push_back(x);
yp.push_back(y);
pcount += 1;
if (x.size() > maxdim)
maxdim = x.size();
}
}
cout << "# Read " << pcount << " examples." << endl;
}
开发者ID:yqxian,项目名称:zsl,代码行数:29,代码来源:data_mult.cpp
示例4: assert
void
SvmSgd::test(int imin, int imax,
const xvec_t &xp, const yvec_t &yp,
const char *prefix)
{
cout << prefix << "Testing on [" << imin << ", " << imax << "]." << endl;
assert(imin <= imax);
int nerr = 0;
double cost = 0;
for (int i=imin; i<=imax; i++)
{
const SVector &x = xp.at(i);
double y = yp.at(i);
double wx = dot(w,x);
double z = y * (wx + bias);
if (z <= 0)
nerr += 1;
#if LOSS < LOGLOSS
if (z < 1)
#endif
cost += loss(z);
}
int n = imax - imin + 1;
double loss = cost / n;
cost = loss + 0.5 * lambda * dot(w,w);
cout << prefix << setprecision(4)
<< "Misclassification: " << (double)nerr * 100.0 / n << "%." << endl;
cout << prefix << setprecision(12)
<< "Cost: " << cost << "." << endl;
cout << prefix << setprecision(12)
<< "Loss: " << loss << "." << endl;
}
开发者ID:AnryYang,项目名称:cpp_algorithms,代码行数:33,代码来源:svmsgd2.cpp
示例5: assert
/// Perform a test pass
void
SvmAisgd::test(int imin, int imax, const xvec_t &xp, const yvec_t &yp, const char *prefix)
{
cout << prefix << "Testing on [" << imin << ", " << imax << "]." << endl;
assert(imin <= imax);
double nerr = 0;
double loss = 0;
for (int i=imin; i<=imax; i++)
testOne(xp.at(i), yp.at(i), &loss, &nerr);
nerr = nerr / (imax - imin + 1);
loss = loss / (imax - imin + 1);
double cost = loss + 0.5 * lambda * anorm();
cout << prefix
<< "Loss=" << setprecision(12) << loss
<< " Cost=" << setprecision(12) << cost
<< " Misclassification=" << setprecision(4) << 100 * nerr << "%."
<< endl;
}
开发者ID:airoldilab,项目名称:ai-sgd,代码行数:19,代码来源:svmaisgd.cpp
示例6: generator
/// Perform a SAG training epoch
void
SvmSag::trainSag(int imin, int imax, const xvec_t &xp, const yvec_t &yp, const char *prefix)
{
cout << prefix << "Training on [" << imin << ", " << imax << "]." << endl;
assert(imin <= imax);
assert(imin >= sdimin);
assert(imax <= sdimax);
assert(eta > 0);
uniform_int_generator generator(imin, imax);
for (int i=imin; i<=imax; i++)
{
int ii = generator();
trainOne(xp.at(ii), yp.at(ii), eta, ii);
t += 1;
}
cout << prefix << setprecision(6) << "wNorm=" << wnorm();
#if BIAS
cout << " wBias=" << wBias;
#endif
cout << endl;
}
开发者ID:DavidGrangier,项目名称:svmsparse,代码行数:22,代码来源:svmsag.cpp
示例7: assert
/// Perform a training epoch
void
SvmSgd::train(int imin, int imax, const xvec_t &xp, const yvec_t &yp, const char *prefix)
{
#if VERBOSE
cout << prefix << "Training on [" << imin << ", " << imax << "]." << endl;
#endif
assert(imin <= imax);
assert(eta0 > 0);
for (int i=imin; i<=imax; i++)
{
double eta = eta0 / (1 + lambda * eta0 * t);
trainOne(xp.at(i), yp.at(i), eta);
t += 1;
}
#if VERBOSE
cout << prefix << setprecision(6) << "wNorm=" << wnorm();
#if BIAS
cout << " wBias=" << wBias;
#endif
cout << endl;
#endif
}
开发者ID:DavidGrangier,项目名称:svmsparse,代码行数:23,代码来源:svmsgd.cpp
示例8: assert
/// Perform initial training epoch
void
SvmSag::trainInit(int imin, int imax, const xvec_t &xp, const yvec_t &yp, const char *prefix)
{
cout << prefix << "Training on [" << imin << ", " << imax << "]." << endl;
assert(imin <= imax);
assert(eta > 0);
assert(m == 0);
sd.resize(imax - imin + 1);
sdimin = imin;
sdimax = imax;
for (int i=imin; i<=imax; i++)
{
m += 1;
trainOne(xp.at(i), yp.at(i), eta, i);
t += 1;
}
cout << prefix << setprecision(6) << "wNorm=" << wnorm();
#if BIAS
cout << " wBias=" << wBias;
#endif
cout << endl;
}
开发者ID:DavidGrangier,项目名称:svmsparse,代码行数:23,代码来源:svmsag.cpp
示例9: setprecision
/// Perform a training epoch
void
SvmSgd::train(int imin, int imax, const xvec_t &xp, const yvec_t &yp, const char *prefix)
{
cout << prefix << "Training on [" << imin << ", " << imax << "]." << endl;
assert(imin <= imax);
assert(eta0 > 0);
//cout << "wDivisor: " << wDivisor << " wBias: " << wBias<< endl;
for (int i=imin; i<=imax; i++)
{
double eta = eta0 / (1 + lambda * eta0 * t);
//cout << "[my_evaluateEta:] Eta: " << eta << endl;
trainOne(xp.at(i), yp.at(i), eta);
t += 1;
}
//cout << "\nAfter training: \n wDivisor: " << wDivisor << " wBias: " << wBias<< endl;
cout << prefix << setprecision(6) << "wNorm=" << wnorm();
#if BIAS
cout << " wBias=" << wBias;
#endif
cout << endl;
}
开发者ID:shanil-puri,项目名称:SysResearchLab,代码行数:24,代码来源:init_svmsgd.cpp
示例10: c
void
SvmSgd::calibrate(int imin, int imax,
const xvec_t &xp, const yvec_t &yp)
{
cout << "Estimating sparsity and bscale." << endl;
int j;
// compute average gradient size
double n = 0;
double m = 0;
double r = 0;
FVector c(w.size());
for (j=imin; j<=imax && m<=1000; j++,n++)
{
const SVector &x = xp.at(j);
n += 1;
r += x.npairs();
const SVector::Pair *p = x;
while (p->i >= 0 && p->i < c.size())
{
double z = c.get(p->i) + fabs(p->v);
c.set(p->i, z);
m = max(m, z);
p += 1;
}
}
// bias update scaling
bscale = m/n;
// compute weight decay skip
skip = (int) ((8 * n * w.size()) / r);
cout << " using " << n << " examples." << endl;
cout << " skip: " << skip
<< " bscale: " << setprecision(6) << bscale << endl;
}
开发者ID:AnryYang,项目名称:cpp_algorithms,代码行数:36,代码来源:svmsgd2.cpp
示例11: main
int main(int argc, const char **argv)
{
parse(argc, argv);
config(argv[0]);
if (trainfile)
load_datafile(trainfile, xtrain, ytrain, dims, normalize, maxtrain);
if (testfile)
load_datafile(testfile, xtest, ytest, dims, normalize);
cout << "# Number of features " << dims << "." << endl;
// prepare svm
int imin = 0;
int imax = xtrain.size() - 1;
int tmin = 0;
int tmax = xtest.size() - 1;
// heuristic determination of averaging start point
int avgfrom = fabs(avgstart) * (imax - imin + 1);
avgfrom = (avgstart < 0 && dims < avgfrom) ? dims : avgfrom;
// create
SvmAisgd svm(dims, lambda, avgfrom);
Timer timer;
// determine eta0 using sample
int smin = 0;
int smax = imin + min(1000, imax);
timer.start();
svm.determineEta0(smin, smax, xtrain, ytrain);
timer.stop();
// train
for(int i=0; i<epochs; i++)
{
cout << "--------- Epoch " << i+1 << "." << endl;
timer.start();
svm.train(imin, imax, xtrain, ytrain);
timer.stop();
cout << "Total training time " << setprecision(6)
<< timer.elapsed() << " secs." << endl;
svm.test(imin, imax, xtrain, ytrain, "train: ");
if (tmax >= tmin)
svm.test(tmin, tmax, xtest, ytest, "test: ");
}
svm.renorm();
// Linear classifier is in svm.a and svm.aBias
return 0;
}
开发者ID:airoldilab,项目名称:ai-sgd,代码行数:43,代码来源:svmaisgd.cpp
示例12: main
int main(int argc, const char **argv)
{
parse(argc, argv);
config(argv[0]);
if (trainfile)
load_datafile(trainfile, xtrain, ytrain, dims, normalize, maxtrain);
if (testfile)
load_datafile(testfile, xtest, ytest, dims, normalize);
cout << "# Number of features " << dims << "." << endl;
// prepare svm
int imin = 0;
int imax = xtrain.size() - 1;
int tmin = 0;
int tmax = xtest.size() - 1;
SvmSag svm(dims, lambda);
Timer timer;
// determine eta0 using sample
int smin = 0;
int smax = imin + min(1000, imax);
timer.start();
if (eta > 0)
svm.setEta(eta);
else
svm.determineEta(smin, smax, xtrain, ytrain);
timer.stop();
// train
for(int i=0; i<epochs; i++)
{
cout << "--------- Epoch " << i+1 << "." << endl;
timer.start();
if (i == 0)
svm.trainInit(imin, imax, xtrain, ytrain);
else
svm.trainSag(imin, imax, xtrain, ytrain);
timer.stop();
cout << "Total training time " << setprecision(6)
<< timer.elapsed() << " secs." << endl;
svm.test(imin, imax, xtrain, ytrain, "train: ");
if (tmax >= tmin)
svm.test(tmin, tmax, xtest, ytest, "test: ");
}
return 0;
}
开发者ID:DavidGrangier,项目名称:svmsparse,代码行数:43,代码来源:svmsag.cpp
示例13: svm
int
main(int argc, const char **argv)
{
parse(argc, argv);
cout << "Loss=" << lossname
<< " Bias=" << BIAS
<< " RegBias=" << REGULARIZEBIAS
<< " Lambda=" << lambda
<< endl;
// load training set
load(trainfile.c_str(), xtrain, ytrain);
cout << "Number of features " << dim << "." << endl;
int imin = 0;
int imax = xtrain.size() - 1;
if (trainsize > 0 && imax >= trainsize)
imax = imin + trainsize -1;
// prepare svm
SvmSgd svm(dim, lambda);
Timer timer;
// load testing set
if (! testfile.empty())
load(testfile.c_str(), xtest, ytest);
int tmin = 0;
int tmax = xtest.size() - 1;
svm.calibrate(imin, imax, xtrain, ytrain);
for(int i=0; i<epochs; i++)
{
cout << "--------- Epoch " << i+1 << "." << endl;
timer.start();
svm.train(imin, imax, xtrain, ytrain);
timer.stop();
cout << "Total training time " << setprecision(6)
<< timer.elapsed() << " secs." << endl;
svm.test(imin, imax, xtrain, ytrain, "train: ");
if (tmax >= tmin)
svm.test(tmin, tmax, xtest, ytest, "test: ");
}
}
开发者ID:AnryYang,项目名称:cpp_algorithms,代码行数:42,代码来源:svmsgd2.cpp
示例14: main
int main(int argc, const char **argv)
{
parse(argc, argv);
config(argv[0]);
if (trainfile)
load_datafile(trainfile, xtrain, ytrain, dims, normalize, maxtrain);
if (testfile)
load_datafile(testfile, xtest, ytest, dims, normalize);
cout << "# Number of features " << dims << "." << endl;
// prepare svm
int imin = 0;
int imax = xtrain.size() - 1;
int tmin = 0;
int tmax = xtest.size() - 1;
SvmSgd svm(dims, lambda);
Timer timer;
// determine eta0 using sample
int smin = 0;
int smax = imin + min(1000, imax);
// train
Timer totalTimer, overheadtimer, exetimer;
totalTimer.start();
//winnie, initial wDivisor and wBias
timeval t1, t4, t5, t6, t7, t8;
overheadtimer.start();
if(sample_file){
int sample_size = 500;
int bin_num = 20;
int num_compare = 49;
int dimension = dims - 1; //The first feature is the classification, does not count in sampling.
gettimeofday(&t1, NULL);
Sampling<double> selector(imax, 0 ,
dimension, sample_size, bin_num, num_compare);
selector.do_sampling(sample_file);
gettimeofday(&t4, NULL);
selector.calc_ecdf();
gettimeofday(&t5, NULL);
// std::cout << "test init kmeans " << std::endl;
//step3a, do database search
if(num_compare <= 0){
cerr << "Number of comparison is less than or equal to 0" << endl;
return -1;
}
else{
//TODO: make the comparison choose the second best result, when we use data base that contains dataset itself
//winnie, prerun several iterations, and log some information
int prerun_iters = 3;
FVector old_w(dimension);
svm.determineEta0(smin, smax, xtrain, ytrain);
for(int i = 0; i < prerun_iters; i ++ ){
svm.get_w(old_w);
svm.train(imin, imax, xtrain, ytrain);
//svm.test(imin, imax, xtrain, ytrain, "train: ");
}
//get the idx of dimensions
map <double, int> delta_w;
svm.get_delta_w(old_w, delta_w);
//int reducedDimNum[8] = {1, 2, 3, 4, 8, 16, 32, 50};
int reducedDimNum[8] = {1, 3, 8, 16, 32, 50, 64, 128};
int selected_id[9];
multimap <double, int> error_dim; //error value and dimension
for(int iout = 0; iout < 8; iout++){
vector<int> reducedDimIdx(reducedDimNum[iout]);
map<double, int>::reverse_iterator rmit = delta_w.rbegin();
double sum_value = 0;
for(int i = 0; i < reducedDimNum[iout]; i ++){
reducedDimIdx[i] = rmit->second;
sum_value += rmit->first;
//cout << "reduceDim: " << reducedDimIdx[i] << " value " << rmit->first << endl;
rmit++;
}
cout << "sum_value: " << sum_value << " with dim num: " << reducedDimNum[iout] << endl;
//cout << "distancetype: " << distancetype << endl;
selected_id[iout] = selector.search_database('b', database_file, distancetype, reducedDimIdx);
gettimeofday(&t6, NULL);
if(selected_id[iout] < 0)
return -1;
else{
std::cout << "selected id: " << selected_id[iout] << std::endl;
//Do data customization, use norm.cpp program,
stringstream ss;//create a stringstream
ss << setfill('0') << setw(2) << selected_id[iout];
string filename = string(database_dir) + "/" + ss.str() + ".txt";
//.........这里部分代码省略.........
开发者ID:shanil-puri,项目名称:SysResearchLab,代码行数:101,代码来源:init_svmsgd.cpp
注:本文中的xvec_t类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论