mindspore.ops.SoftmaxCrossEntropyWithLogits
- class mindspore.ops.SoftmaxCrossEntropyWithLogits[源代码]
使用one-hot编码获取预测值和真实之间的softmax交叉熵。
SoftmaxCrossEntropyWithLogits算法的更新公式如下:
其中
代表 logits 。 代表 label 。 代表 output 。- 输入:
logits (Tensor) - 输入预测值,其shape为
,数据类型为float16或float32。labels (Tensor) - 输入真实值,其shape为
,数据类型与 logits 的相同。
- 输出:
两个Tensor( loss , dlogits )组成的tuple, loss 的shape为
, dlogits 的shape与 logits 的相同。- 异常:
TypeError - logits 或 labels 的数据类型既不是float16也不是float32。
TypeError - logits 或 labels 不是Tensor。
ValueError - logits 的shape与 labels 的不同。
- 支持平台:
Ascend
GPU
CPU
样例:
>>> import mindspore >>> from mindspore import Tensor, ops >>> logits = Tensor([[2, 4, 1, 4, 5], [2, 1, 2, 4, 3]], mindspore.float32) >>> labels = Tensor([[0, 0, 0, 0, 1], [0, 0, 0, 1, 0]], mindspore.float32) >>> softmax_cross = ops.SoftmaxCrossEntropyWithLogits() >>> loss, dlogits = softmax_cross(logits, labels) >>> print(loss) [0.5899297 0.52374405] >>> print(dlogits) [[ 0.02760027 0.20393994 0.01015357 0.20393994 -0.44563377] [ 0.08015892 0.02948882 0.08015892 -0.4077012 0.21789455]]