From c69b39a9f149cc6b5c7270d7d864fb677bc83b34 Mon Sep 17 00:00:00 2001 From: Joe Zhao Date: Mon, 11 May 2015 18:38:39 +0800 Subject: RidFile tested --- main.cpp | 2 +- model/rankaccu.cpp | 1 + model/ranksvmtn.cpp | 27 ++++++++++++++++++++------- tools/dataProvider.h | 11 +++++++++-- tools/fileDataProvider.h | 6 +++++- 5 files changed, 36 insertions(+), 11 deletions(-) diff --git a/main.cpp b/main.cpp index 5c977d2..4f080bb 100644 --- a/main.cpp +++ b/main.cpp @@ -25,7 +25,7 @@ int train(DataProvider &dp) { DataList D; LOG(INFO)<<"Training started"; - dp.getAllData(D); + dp.getAllDataSet(D); LOG(INFO)<<"Read "<train(D); vector L; diff --git a/model/rankaccu.cpp b/model/rankaccu.cpp index 910e3e0..73b5d18 100644 --- a/model/rankaccu.cpp +++ b/model/rankaccu.cpp @@ -134,6 +134,7 @@ void rank_CMC(DataList &D,const std::vector pred,CMC & cmc) { for (int k=j;k<=i;++k) if (orig[pred_rank[k]]>0) { + cout< &rank,const VectorXd &corr,cons x=x+p*alpha; res=res-q*alpha; ++step; + if (step > cg_maxiter) + { + LOG(INFO) << "CG force terminated by maxiter"; + break; + } r_2=r_1; } return 0; @@ -138,6 +144,7 @@ int line_search(const VectorXd &w,const MatrixXd &D,const VectorXd &corr,const v VectorXd grad; VectorXd Hs; vector rank(D.rows()); + int iter = 0; for (int i=0;i cg_maxiter) + { + LOG(INFO) << "line search force terminated by maxiter"; + break; + } } return 0; } @@ -179,14 +192,12 @@ int train_orig(int fsize, MatrixXd &D,const vector &A1,const vector &A iter+=1; if (iter> maxiter) { - LOG(INFO)<< "Maxiter :"< &dat = D.getData(); for (i=0;irank>0?0.5:-0.5; - for (j = 0; j < D.getfSize(); ++j) - Data(i, j) = dat[i]->feature(j); + + for (j = 0; j < D.getfSize(); ++j){ + Data(i, j) = dat[i]->feature(j);} + } i=j=0; while (irank = d->rank; dat->qid = d->qid; - dat->feature = d->feature; + dat->feature.resize(d->feature.rows()); + for (int i=0;ifeature.rows();++i) + { + dat->feature(i)=d->feature(i); + } return dat; } inline std::vector& getData(){ @@ -59,7 +63,7 @@ public: DataProvider():eof(false){}; bool EOFile(){return eof;} - void getAllData(DataList &out){\ + void getAllDataSet(DataList &out){\ out.clear(); DataList buf; while (!EOFile()) @@ -68,9 +72,12 @@ public: // won't work as data are discarded with every call to getDataSet // out.getData().insert(out.getData().end(),buf.getData().begin(),buf.getData().end()); for (int i=0;i & dat = d.getData(); for (int i=0;irank=1; dat[i]->qid=std::to_string(qid); + dat[i]->rank=qid; } else { @@ -103,12 +106,13 @@ public: e->feature.resize(d.getfSize()); e->qid=std::to_string(qid); for (int j = 0; j < fsize; ++j) { - e->feature(i) = fabs(dat[i]->feature(j) -dat[pos]->feature(j)); + e->feature(j) = fabs(dat[i]->feature(j) -dat[pos]->feature(j)); } out.addEntry(e); } dat[pos]->qid=std::to_string(qid); ++qid; + dat[pos]->rank=qid; while (posrank!=-1) ++pos; if (pos==d.getSize()) -- cgit v1.2.3-70-g09d2