**Cosine similarity** measures the similarity between vectors by calculating the cosine angle between the two vectors.

`TensorFlow`

provides `tf.keras.losses.cosine_similarity`

function to compute cosine
similarity between labels and predictions.

**Cosine similarity** is a number number between **-1 and 1**. Cosine values closer to -1 indicate greater similarity and values closer to 1 indicate greater dissimilarity.

Let's understand `tf.keras.losses.cosine_similarity`

with below examples

` ````
import tensorflow as tf
y_true = [[1., 1.], [1., 1.]]
y_pred = [[1., 1.], [-1., -1.]]
consine_sim_tensor = tf.keras.losses.cosine_similarity(y_true, y_pred, axis=1)
print(consine_sim_tensor.numpy())
```

Output

` ````
[-0.99999994 0.99999994]
```

From the above output we can see as the first element in both `y_true`

and `y_pred`

is same hence cosine similarity is approaching to -1, while second element is opposite in `y_true`

and `y_pred`

hence cosine similarity value is approaching to 1.

` ````
import tensorflow as tf
tensor_1 = [.34, .45, .67, .65]
tensor_list = [[.34, .45, .67, .65], [.14, .35, .67, .65],
[.54, .95, .07, .5], [.64, .75, .81, .05], [.34, .45, .67, .65]]
cosine_sim_values = tf.keras.losses.cosine_similarity(
tensor_1,
tensor_list,
axis=-1)
print(cosine_sim_values.numpy())
```

Output

` ````
[-1. -0.9804376 -0.74875045 -0.8115672 -1. ]
```

In the above output first and fifth values are -1 because tensor_1 and first and fifth element of tensor_list are identical.

Similar Articles