mindspore.ops.SoftmaxCrossEntropyWithLogits
============================================

.. image:: https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/r2.3.1/resource/_static/logo_source.svg
    :target: https://gitee.com/mindspore/mindspore/blob/r2.3.1/docs/api/api_python/ops/mindspore.ops.SoftmaxCrossEntropyWithLogits.rst
    :alt: 查看源文件


.. py:class:: mindspore.ops.SoftmaxCrossEntropyWithLogits

    使用one-hot编码获取预测值和真实之间的softmax交叉熵。

    SoftmaxCrossEntropyWithLogits算法的更新公式如下:

    .. math::
        \begin{array}{ll} \\
            p_{ij} = softmax(X_{ij}) = \frac{\exp(x_i)}{\sum_{j = 0}^{N-1}\exp(x_j)} \\
            loss_{ij} = -\sum_j{Y_{ij} * ln(p_{ij})}
        \end{array}

    其中 :math:`X` 代表 `logits` 。 :math:`Y` 代表 `label` 。 :math:`loss` 代表 `output` 。

    输入:
        - **logits** (Tensor) - 输入预测值,其shape为 :math:`(N, C)` ,数据类型为float16或float32。
        - **labels** (Tensor) - 输入真实值,其shape为 :math:`(N, C)` ,数据类型与 `logits` 的相同。

    输出:
        两个Tensor(loss, dlogits)组成的tuple, `loss` 的shape为 :math:`(N,)` , `dlogits` 的shape与 `logits` 的相同。

    异常:
        - **TypeError** - `logits` 或  `labels` 的数据类型既不是float16也不是float32。
        - **TypeError** - `logits` 或  `labels` 不是Tensor。
        - **ValueError** - `logits` 的shape与 `labels` 的不同。