很抱歉问这样一个新手问题,但我确实非常急需关于如何使用多探针LSH的指导,所以我自己没有做太多研究。我知道有一个叫做LSHKIT的库实现了这个算法,但我很难搞清楚如何使用它。目前,我有几千个296维的特征向量,每个向量代表一张图片。向量用于查询用户输入的图片,以检索最相似的图片。我用来计算向量之间距离的方法是欧几里得距离。
我知道这可能是一个相当新手的问题,但你们有关于如何实现多探针LSH的知识吗?我对任何回答或回应都非常感激。
— 更新 —
我尝试使用提供的工具fitdata为我的数据创建模型,但它似乎无法读取我的文件。我使用的输入格式是这样的,浮点数大小:4,数据数量:20,维度:297,以及我的297维浮点数数组。然而,它给我返回了这个错误
gsl: init_source.c:29: ERROR: matrix dimension n1 must be positive integerDefault GSL error handler invoked.Aborted
你们有任何关于如何为fitdata创建输入的想法吗?
— 更新 —
抱歉更新晚了,尝试使用lsh后。你可以使用text2bin来格式化数据供fitdata使用。文本文件包含图像或音频文件的特征向量,每行代表一个向量。之后,使用mplsh-tune来获取M和W参数。为了构建索引,你可以使用scan工具来抽样一组所需的查询,然后你可以使用mplsh-run来获取索引。现在我正在尝试弄清楚如何使用索引以及如何将库链接到我的代码中。你们对此有任何想法吗?
回答:
让我推荐你去看谱哈希,它在性能上大大超过了LSH。额外奖励:他们在网站上提供了matlab代码,你可以使用它或者用它来验证你自己的实现。另外,实施起来也更容易。