| View source on GitHub |
Computes the cosine similarity between the labels and predictions.
Inherits From: Mean, Metric, Layer, Module
tf.keras.metrics.CosineSimilarity(
name='cosine_similarity', dtype=None, axis=-1
)
cosine similarity = (a . b) / ||a|| ||b||
See: Cosine Similarity.
This metric keeps the average cosine similarity between predictions and labels over a stream of data.
| Args | |
|---|---|
name | (Optional) string name of the metric instance. |
dtype | (Optional) data type of the metric result. |
axis | (Optional) Defaults to -1. The dimension along which the cosine similarity is computed. |
# l2_norm(y_true) = [[0., 1.], [1./1.414], 1./1.414]]] # l2_norm(y_pred) = [[1., 0.], [1./1.414], 1./1.414]]] # l2_norm(y_true) . l2_norm(y_pred) = [[0., 0.], [0.5, 0.5]] # result = mean(sum(l2_norm(y_true) . l2_norm(y_pred), axis=1)) # = ((0. + 0.) + (0.5 + 0.5)) / 2 m = tf.keras.metrics.CosineSimilarity(axis=1) m.update_state([[0., 1.], [1., 1.]], [[1., 0.], [1., 1.]]) m.result().numpy() 0.49999997
m.reset_states()
m.update_state([[0., 1.], [1., 1.]], [[1., 0.], [1., 1.]],
sample_weight=[0.3, 0.7])
m.result().numpy()
0.6999999
Usage with compile() API:
model.compile(
optimizer='sgd',
loss='mse',
metrics=[tf.keras.metrics.CosineSimilarity(axis=1)])
reset_statesreset_states()
Resets all of the metric state variables.
This function is called between epochs/steps, when a metric is evaluated during training.
resultresult()
Computes and returns the metric value tensor.
Result computation is an idempotent operation that simply calculates the metric value using the state variables.
update_state
update_state(
y_true, y_pred, sample_weight=None
)
Accumulates metric statistics.
y_true and y_pred should have the same shape.
| Args | |
|---|---|
y_true | Ground truth values. shape = [batch_size, d0, .. dN]. |
y_pred | The predicted values. shape = [batch_size, d0, .. dN]. |
sample_weight | Optional sample_weight acts as a coefficient for the metric. If a scalar is provided, then the metric is simply scaled by the given value. If sample_weight is a tensor of size [batch_size], then the metric for each sample of the batch is rescaled by the corresponding element in the sample_weight vector. If the shape of sample_weight is [batch_size, d0, .. dN-1] (or can be broadcasted to this shape), then each metric element of y_pred is scaled by the corresponding value of sample_weight. (Note on dN-1: all metric functions reduce by 1 dimension, usually the last axis (-1)). |
| Returns | |
|---|---|
| Update op. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/keras/metrics/CosineSimilarity