# sigmoid_cross_entropy_with_logits¶

paddle.fluid.layers.loss. sigmoid_cross_entropy_with_logits ( x, label, ignore_index=- 100, name=None, normalize=False ) [source]

SigmoidCrossEntropyWithLogits Operator.

This measures the element-wise probability error in classification tasks in which each class is independent. This can be thought of as predicting labels for a data-point, where labels are not mutually exclusive. For example, a news article can be about politics, technology or sports at the same time or none of these.

The logistic loss is given as follows:

$$loss = -Labels * \log(\sigma(X)) - (1 - Labels) * \log(1 - \sigma(X))$$

We know that $$\sigma(X) = \\frac{1}{1 + \exp(-X)}$$. By substituting this we get:

$$loss = X - X * Labels + \log(1 + \exp(-X))$$

For stability and to prevent overflow of $$\exp(-X)$$ when X < 0, we reformulate the loss as follows:

$$loss = \max(X, 0) - X * Labels + \log(1 + \exp(-\|X\|))$$

Both the input X and Labels can carry the LoD (Level of Details) information. However the output only shares the LoD with input X.

Parameters
• x (Tensor) – a 2-D tensor with shape N x D, where N is the batch size and D is the number of classes. This input is a tensor of logits computed by the previous operator. Logits are unscaled log probabilities given as log(p/(1-p)) The data type should be float32 or float64.

• label (Tensor) – a 2-D tensor of the same type and shape as X. This input is a tensor of probabalistic labels for each logit.

• ignore_index (int) – Specifies a target value that is ignored and does not contribute to the input gradient.

• name (str|None) – The default value is None. Normally there is no need for user to set this property. For more information, please refer to Name

• normalize (bool) – If true, divide the output by the number of targets != ignore_index.

Returns

(Tensor, default Tensor<float>), a 2-D tensor with shape N x D of elementwise logistic losses

Return type

out(Tensor)

Examples

import paddle

input = paddle.rand(shape=, dtype='float32')
label = paddle.rand(shape=, dtype='float32')
loss = paddle.fluid.layers.sigmoid_cross_entropy_with_logits(input, label,
ignore_index=-1, normalize=True)
print(loss)