mindspore.mint.nn.functional.cosine_embedding_loss
- mindspore.mint.nn.functional.cosine_embedding_loss(input1, input2, target, margin=0.0, reduction='mean')[源代码]
余弦相似度损失函数,用于测量两个Tensor之间的相似性。
给定两个Tensor \(x1\) 和 \(x2\) ,以及一个Tensor标签 \(y\) (正样本的值为1,负样本的值为-1),公式如下:
\[\begin{split}loss(x_1, x_2, y) = \begin{cases} 1-cos(x_1, x_2), & \text{if } y = 1\\ \max(0, cos(x_1, x_2)-margin), & \text{if } y = -1\\ \end{cases}\end{split}\]- 参数:
input1 (Tensor) - 输入Tensor,shape为 \((N, D)\) 或 \((D)\) ,其中 \(N\) 代表批量大小,\(D\) 代表嵌入维度。
input2 (Tensor) - 输入Tensor,shape为 \((N, D)\) 或 \((D)\) 。数据类型与 input1 相同,shape需与 input1 一致或满足广播规则。
target (Tensor) - 标签Tensor,输入值为1或-1。shape为 \((N)\) 或 \(()\) 。
margin (float,可选) - 指定负样本运算中的调节因子,取值范围[-1.0, 1.0],范围外的取值不会报错,但无实际意义。默认值:
0.0。reduction (str,可选) - 指定应用于输出结果的规约计算方式,可选
"none"、"mean"、"sum",默认值:"mean"。"none":不应用规约方法。"mean":计算输出元素的平均值。"sum":计算输出元素的总和。
- 返回:
Tensor或Scalar。如果 reduction 为
"none",返回一个shape与 target 相同的Tensor;否则,将返回一个Scalar。- 异常:
ValueError - reduction 不为
"none"、"mean"或"sum"。ValueError - input1 和 input2 的形状不匹配。
ValueError - target 的形状和 input1 及 input2 的形状不匹配。
- 支持平台:
Ascend
样例:
>>> import mindspore >>> import numpy as np >>> from mindspore import Tensor, mint >>> input1 = Tensor(np.array([[0.3, 0.8], [0.4, 0.3]]), mindspore.float32) >>> input2 = Tensor(np.array([[0.4, 1.2], [-0.4, -0.9]]), mindspore.float32) >>> target = Tensor(np.array([1, -1]), mindspore.int32) >>> output = mint.nn.functional.cosine_embedding_loss(input1, input2, target) >>> print(output) 0.0003425479