Le calcul de la distance de l'image de l'incorporation à l'encontre d'un groupe de plongements de l'image

0

La question

Comment obtenir la distance d'une image à l'intégration par rapport à une liste ou d'un groupe d'une autre image de l'incorporation?

J'ai un pré-entraîné modèle que j'utilise pour extraire les incorporations à partir d'images, et je voudrais obtenir la distance d'une image par rapport à quelques autres images c'est à dire

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

Je suis en train de faire une image de similarité expérience où im à l'aide de la métrique de similarité Cosinus de Tensorflow pour calculer la distance entre deux incorporation, et il fonctionne bien sur un 1-de-1 calcul c'est à dire

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

mais je ne peux pas comprendre comment le faire sur un 1-à-N distance de calcul.

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

La meilleure réponse

1

Il pourrait être fait avec de la radiodiffusion. Itération sur les images et le calcul de la distance pour chaque paire est une mauvaise idée dans ce cas puisqu'il ne sera pas parallélisé (sauf si vous savez comment faire vous-même).

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

Dans d'autres langues

Cette page est dans d'autres langues

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