计算的距离的嵌入图像对一组嵌入图像

0

的问题

如何获得适当距离的嵌入图像的针对列表/组的另一个嵌入图像的?

我有一个pretrained模型,用来提取嵌入图像,并且我希望得到距离的图像对其他几个图像,即

Embedding (1028,) against Embedding (5, 1028)

我在尝试做一个图像的相似性的试验im使用余弦的相似性指标,从Tensorflow计算两个之间的距离的嵌入,以及它的工作原理以及在1-1计算即

Embedding_1 = (1028,)
Embedding_2 = (1028,)
metrics.CosineSimilarity(Embedding_1, Embedding_2)

但是我可以弄清楚如何做到这一点1-N距离计算。

Embedding_1 = (1028,)
Embedding_Group = [(1028,),(1028,),(1028,),(1028,),(1028,)]
1

最好的答案

1

这可以与 广播. 迭代过图片和计算距离,为每个人对是不好的想法,在这种情况下,因为它不能并行(除非你知道怎么做是你自己)。

import tensorflow as tf

embedding = tf.constant([1., 1.]) # your shape here is (1028,) instead of (2,)
embedding_group = tf.constant([[1., 1.], [1., 2.], [0., 1.]]) # your shape here is (5, 1028) instead of (3, 2)
norm_embedding = tf.nn.l2_normalize(embedding[None, ...], axis=-1)
norm_embedding_group = tf.nn.l2_normalize(embedding_group, axis=-1)
similarity = tf.reduce_sum(norm_embedding * norm_embedding_group, axis=-1) # cosine similarity of same shape as number of samples

print(norm_embedding.numpy())
print(norm_embedding_group.numpy())
print(similarity.numpy())
# [[0.7071067 0.7071067]]
# [[0.7071067  0.7071067 ]
#  [0.44721356 0.8944271 ]
#  [0.         1.        ]]
# [0.9999998  0.94868314 0.7071067 ]
2021-11-22 13:22:59

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................