Keras余弦相似度-正或负

问题描述 投票:1回答:1

我正在训练模型,我的损失函数是余弦相似度:

model.compile(optimizer='adam', 
              loss=tf.keras.losses.cosine_similarity, 
              metrics=[tf.keras.metrics.CosineSimilarity(axis=1)])

在Keras中,“余弦相似度” loss应该收敛到-1吗?

另一方面,“余弦相似度” metric应该朝向1,以获得更好的准确性,对吗?

提前感谢!

python tensorflow keras deep-learning cosine-similarity
1个回答
0
投票

因为这被实现为loss,并且我们在训练过程中将loss最小化,所以符号是倒置的,因此当您最小化loss(朝向-1)时,实际的相似性朝1最大化。我也认为Stable发行版中的文档有些混乱,请参见Nightly documentation和此示例:

y_true = [[0., 1.], [1., 1.], [1., 1.]]
y_pred = [[1., 0.], [1., 1.], [-1., -1.]]
loss = tf.keras.losses.cosine_similarity(y_true, y_pred, axis=1)
loss.numpy()
array([-0., -0.999, 0.999], dtype=float32)
© www.soinside.com 2019 - 2024. All rights reserved.