gpt4 book ai didi

php - 计算平方欧氏距离

转载 作者:行者123 更新时间:2023-11-29 02:00:36 27 4
gpt4 key购买 nike

我有一个返回 16 个元素的数组的 exe。我必须使用 php 将这个数组传递给 Mysql 来计算欧几里得距离。我在 MySQL 中的表是这样的。

    id |img_id | features_1|features_2|features_3|features_4|features_5|features_6|features_7|...upto features_16
1 1 0.389 0.4567 0.8981 0.2345
2 2 0.9878 0.4567 0.56122 0.4532
3 3
4 4
......................

所以每张图片我有 16 个特征,现在我有 30,000 张图片,img_id 最多为 30,000。我必须计算数组与通过 php 传递的 exe 和数据库中的数据的欧氏距离,并返回欧氏距离最小的 6 个图像的 img_id。即假设我有一个来自 exe A[0.458,0.234,0.4567,0.2398] 的数组,我必须用这个数组计算每个 img_id 的距离,即对于 img_id=1,距离将为 ((0.458-0.389)^2+(0.234- 0.4567)^2+(0.4567-0.8981)^2+(0.2398-0.2345)^2) 我必须对所有 30,000 张图像重复此过程并返回距离最小的 6 个 img_id。什么是高效快速的计算方法?

最佳答案

因为 php 很慢,你应该像这样直接在 SQL 中执行此操作:

SELECT * FROM tablename 
ORDER BY ABS(f1 - :f1) + ABS(f2 - :f2) + ... DESC
LIMIT 6;

请注意,我使用的是绝对范数而不是欧几里得范数,如果您对实际值不感兴趣,这没有任何区别(因为在具有有限维度的向量空间中,所有范数都是等效的)。 sqlite for eample 不提供 SQUARE 函数并且一直写 (f1 - :f1) * (f1 - :f1) 很烦人,所以我想这是一个不错的解决方案。

关于php - 计算平方欧氏距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16006763/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com