结构体 faiss::ProgressiveDimClustering
-
struct ProgressiveDimClustering : public faiss::ProgressiveDimClusteringParameters
使用渐进维度的 K-means 聚类
聚类首先发生在维度 1 中,然后以指数方式增加维度,直到 d(I 步)。 这通常在 PCA 变换之后应用(可选)。 参考
“用于高维近似的改进残差向量量化
最近邻搜索”
刘世聪、卢洪涛、邵俊茹,AAAI'15
https://arxiv.org/abs/1509.05195
公共函数
-
ProgressiveDimClustering(int d, int k)
-
ProgressiveDimClustering(int d, int k, const ProgressiveDimClusteringParameters &cp)
-
void train(idx_t n, const float *x, ProgressiveDimIndexFactory &factory)
-
inline virtual ~ProgressiveDimClustering()
公共成员
-
size_t d
向量的维度
-
size_t k
质心数量
-
std::vector<float> centroids
质心 (k * d)
-
std::vector<ClusteringIterationStats> iteration_stats
聚类每次迭代的统计信息
-
int progressive_dim_steps
增量步数
-
bool apply_pca
对输入应用 PCA
-
int niter = 25
聚类迭代次数
-
int nredo = 1
重新进行聚类这么多次,并保留具有最佳目标的聚类
-
bool verbose = false
-
bool spherical = false
是否在每次迭代后对质心进行归一化(对内积聚类有用)
-
bool int_centroids = false
每次迭代后将质心坐标四舍五入为整数?
-
bool update_index = false
每次迭代后重新训练索引?
-
bool frozen_centroids = false
使用作为输入提供的质心的子集,并且在迭代期间不更改它们
-
int min_points_per_centroid = 39
如果每个质心提供的训练向量少于此数量,则写入警告。 请注意,每个质心的点少于 1 个会引发异常。
-
int max_points_per_centroid = 256
限制数据集大小,否则训练集会被二次采样
-
int seed = 1234
随机数生成器的种子。 负值会导致使用 std::high_resolution_clock 为内部 rng 播种。
-
size_t decode_block_size = 32768
当训练集被编码时,codec 解码器的批处理大小
-
bool check_input_data_for_NaNs = true
是否检查输入数据中是否存在 NaN 值
-
bool use_faster_subsampling = false
是否使用基于 splitmix64 的随机数生成器进行子采样,速度更快,但可能会选择重复的点。
-
ProgressiveDimClustering(int d, int k)