예제 #1
0
DataBase* PqModel::getDataBase(DataSet* ds ){
    DataBase* db = new DataBase();
    db->setFtrNum(ds->getFeatureNum());
    db->setCoarseK(m_coarse_k);
    coarseIdx(ds,db);
    pq(ds,db);

    db->setFtrFileName(ds->m_vfilename);
    int* ftrFileIdx= ivec_new_0(ds->getFeatureNum());
    memcpy(ftrFileIdx,ds->m_featureFileIdx,ds->getFeatureNum());
    db->setFtrFileIdx(ftrFileIdx);
    return db;
}
예제 #2
0
DataBase* PqModel::trainModel(DataSet*ds,char* centroid_file) {
    DataBase *db = new DataBase();
    db->setFtrNum(ds->getFeatureNum());
    db->setCoarseK(m_coarse_k);
    ifstream ifile(centroid_file,ios::binary);
    if(!ifile.good()){
        ifile.close();
        cout<<"->coarse index without coarse.centroids file !"<<endl;
        trainAndCoarseIdx(ds,db);
       // writeCentroids(centroid_file);
    }
    else{
        ifile.close();
        cout<<"->coarse index with coarse.centroids file !"<<endl;
        trainAndCoarseIdxWithCentroid(ds,db,centroid_file);
    }
    trainAndPq(ds,db);

    db->setFtrFileName(ds->m_vfilename);
    int* ftrFileIdx= ivec_new_0(ds->getFeatureNum());
    memcpy(ftrFileIdx,ds->m_featureFileIdx,ds->getFeatureNum());
    db->setFtrFileIdx(ftrFileIdx);
    return db;
}