faiss 建立索引並儲存。如果用indexhnswflat,就採用indexidmap進行對映。
這裡的距離不是ip,是l2
#include "index_io.h"
//#include "indexivf.h"
//#include "indexivfflat.h"
#include "indexhnsw.h"
//#include "indexivfpq.h"
#include "metaindexes.h"
const char* output_file;
uint64_t fea_dim;
uint64_t img_num;
float *img_fea = new float[fea_dim*img_num];
// value the img_fea
// ...
// method flatip
//faiss::indexflatip index(fea_dim);
img_fea);
// method hnsw
faiss::indexhnswflat index_hsnw(fea_dim, 32);
faiss::indexidmap index(&index_hsnw);
long *ids = new long [img_num];
for (auto n=0; n<(long)img_num; n++)
index.add_with_ids(img_num, img_fea, ids);
file *fr;
fr=fopen(output_file,"wb");
faiss::write_index(&index, fr);
delete img_fea;
其中add_with_ids的定義如下,因此可以呼叫如上。
template void indexidmaptemplate::add_with_ids
(idx_t n, const typename indext::component_t * x,
const typename indext::idx_t *xids)
期間報錯如下
note: virtual void faiss::indexidmap::add_with_ids(faiss::index::idx_t, const float*, const long int*)
需要 long,改了就ok了。
C 建立XML檔案並儲存
隨著xml的普及以及在動態web應用程式中大量應用,如何通過.net建立,刪除,修改xml檔案變的也來也重要了。乙個簡單的概念是,xml檔案跟大的文字檔案並沒有什麼區別,同時它是先於.net出現,很多asp的開發者,當他需要程式輸出xml檔案的時候,通常都是用response.write 方法輸出為...
oracle建立儲存過程並呼叫
儲過程 stored procedure 是在大型資料庫系統中,一組為了完成特定功能的sql 語句集,儲存在資料庫中,經過第一次編譯後再次呼叫不需要再次編譯,使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它。儲存過程是資料庫中的乙個重要物件。create or replace...
lucene建立索引並搜尋mysql資料庫
lucene結合資料庫步驟 1 寫一段傳統的jdbc程式,將每條的使用者資訊從資料庫讀取出來 2 針對每條使用者記錄,建立乙個lucene document document doc new document 並根據你的需要,將使用者資訊的各個字段對應luncene document中的field ...