Implémentation de la matrice de similarité cos [Pytorch, Tensorflow]

La similitude cos (cosinus) est l'une des méthodes d'apprentissage du contraste telles que SimCLR qui est utilisée comme indice de similitude dans l'espace des fonctionnalités.

Comme il a été implémenté respectivement par Tensorflow et Pytorch, enregistrez-le sous forme de mémo. (Pour votre référence)

Pytorch

# input_la taille est(batchsize*Nombre de dimensions)

def cosine_matrix(a, b):
    dot = torch.matmul(a, torch.t(b))
    norm = torch.matmul(torch.norm(a, dim=1).unsqueeze(-1), torch.norm(b, dim=0).unsqueeze(0))
    return dot / norm

Tensorflow

def cosine_matrix(a, b):
    a_normed, _ = tf.linalg.normalize(a, axis=-1)
    b_normed, _ = tf.linalg.normalize(b, axis=-1)
    matrix = tf.matmul(a_normed, b_normed, transpose_b=True)
    return matrix

Recommended Posts

Implémentation de la matrice de similarité cos [Pytorch, Tensorflow]
Résumé de l'implémentation de base par PyTorch
Résumé de Tensorflow / Keras
Implémentation de la séquence de Fibonacci