如何在python中重塑128维图像矢量

如何在python中重塑128维图像矢量,python,opencv,vector,Python,Opencv,Vector,我试图计算两幅图像之间的欧几里德距离。为此,我首先获取图像的128d数组,然后使用cv2.norm()获取距离。代码如下: embedder = cv2.dnn.readNetFromTorch(<model_path>) embedder.setInput(faceBlob) unknown_vector = embedder.forward() ### # SOME CODE ### for i in range(len(known_embeddings["embedding

我试图计算两幅图像之间的
欧几里德距离。为此,我首先获取图像的
128d
数组,然后使用
cv2.norm()
获取距离。代码如下:

embedder = cv2.dnn.readNetFromTorch(<model_path>)
embedder.setInput(faceBlob)
unknown_vector = embedder.forward()

###
# SOME CODE
###

for i in range(len(known_embeddings["embeddings"])):
    known_vector = known_embeddings["embeddings"][i]
    distance = cv2.norm(unknown_vector, known_vector)

从上面看,它们的形状不同。如何转换
未知_向量
以匹配
已知_向量
的形状。请帮忙。谢谢

您不应该在不必要的地方使用循环。尽可能使用矢量化操作

此外,我不确定您为什么要使用
opencv
pytorch
,我认为单独使用
pytorch
就足以完成这项任务(如果没有,请在评论中澄清),请参见以下内容:

import torch

embedding = torch.nn.Embedding(1000, 50)
example_vector = torch.randn(50)

# Broadcast to (1000, 50) automatically, result is of shape 1000
distances = torch.norm(example_vector.reshape(1, -1) - embedding.weight, dim=1)
距离
包含
示例_向量
到每个嵌入的距离,您可以从中获取
torch.max
,或
min
或任何您想要的内容

import torch

embedding = torch.nn.Embedding(1000, 50)
example_vector = torch.randn(50)

# Broadcast to (1000, 50) automatically, result is of shape 1000
distances = torch.norm(example_vector.reshape(1, -1) - embedding.weight, dim=1)