mindspore.ops.SparseSoftmaxCrossEntropyWithLogits ================================================== .. image:: https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source.svg :target: https://gitee.com/mindspore/mindspore/blob/master/docs/api/api_python/ops/mindspore.ops.SparseSoftmaxCrossEntropyWithLogits.rst :alt: 查看源文件 .. py:class:: mindspore.ops.SparseSoftmaxCrossEntropyWithLogits(is_grad=False) 计算预测值和标签之间的稀疏softmax交叉熵。 将预测值设置为 `X` ,输入标签设置为 `Y` ,输出设置为 `loss` 。然后, .. math:: \begin{array}{ll} \\ p_{ij} = softmax(X_{ij}) = \frac{\exp(x_i)}{\sum_{j = 0}^{N-1}\exp(x_j)} \\ loss_{ij} = \begin{cases} -ln(p_{ij}), &j = y_i \cr 0, & j \neq y_i \end{cases} \\ loss = \sum_{ij} loss_{ij} \end{array} 参数: - **is_grad** (bool) - 如果为 ``True`` ,则返回计算的梯度。默认值: ``False`` 。 输入: - **logits** (Tensor) - 输入的预测值,其shape为 :math:`(N, C)` 。数据类型必须为float16或float32。 - **labels** (Tensor) - 输入的标签,其shape为 :math:`(N)` 。数据类型必须为int32或int64。 输出: Tensor,如果 `is_grad` 为 ``False`` ,则输出Tensor是损失值,是一个Tensor;如果 `is_grad` 为 ``True`` ,则输出记录的是输入的梯度,其shape与 `logits` 相同。 异常: - **TypeError** - 如果 `is_grad` 不是bool。 - **TypeError** - 如果 `logits` 的数据类型既不是float16也不是float32。 - **TypeError** - 如果 `labels` 的数据类型既不是int32也不是int64。 - **ValueError** - 如果 :math:`logits.shape[0] != labels.shape[0]` 。