昇腾社区首页
中文
注册

数据集创建

IVFast index的聚类部分是一个自监督的AI聚类模型。由于AI聚类模型的训练需要GPU设备(如V100或T4)且只能出厂训练一次,为保障更好的泛化性,建议使用较大的数据集,如10m(256维,fp32)的特征作为训练集。同时可创建一套或多套不同的数据集作为验证集,包含base(25m个256维fp32的特征),query(N个256维fp32的特征)及GT,数据目录参见如下。

data_path
   |--- learn10m.npy  //"learn10m" 为训练集的名称
   |--- data_name1    //验证集1名称
   |--- base.npy
   |--- query.npy
   |--- gt.npy
   |--- data_name2    //验证集2名称
   |--- base.npy
   |--- query.npy
   |--- gt.npy

所有数据在保存之前要做归一化,参考Faiss的归一化方式normalize_L2(learn),确保所有向量的norm=1,配合IP距离计算方式。

表1 术语与定义

术语

描述

learn10m

用于训练AI模型的数据,大小建议为10000000*256,数据类型为float32。

base

用于底库构建,大小为25000000*256,数据类型为float32。

query

待检索的查询特征,大小为10000*256,数据类型为float32。

gt

查询特征在256维底库中,属于同一目标的底库offset,大小为N*100,数据类型为int64。

当前读取数据的接口为np.load,因此,上述四个部分的数据需保存为npy格式,特征保存示例:

from faiss import normalize_L2
normalize_L2(learn10m)
normalize_L2(base)
normalize_L2(query)
np.save("learn10m.npy", learn.astype("float32"))
np.save("base.npy", base.astype("float32"))
np.save("query.npy", query.astype("float32"))
np.save("gt.npy", gt.astype("int64"))