code: def sigmoid_cross_entropy_logits(
      logits: JaxArray, labels: Union[JaxArray, int]
  ) -> JaxArray:
      """Computes the sigmoid cross-entropy loss.
  
      Args:
          logits: (batch, ..., #class) tensor of logits.
          labels: (batch, ..., #class) tensor of label probabilities (e.g. labels.sum(axis=-1) must be 1)
  
      Returns:
          (batch, ...) tensor of the cross-entropies for each entry.
      """
  
      FUNC_NAME = "sigmoid_cross_entropy_logits"
      if logits.shape != labels.shape:
          warnings.warn(
              " {} {} : arg1 {} and arg2 {}".format(
                  WARN_SHAPE_MISMATCH,
                  FUNC_NAME,
                  logits.shape,
                  labels.shape,
              )
          )
      return (
          jn.maximum(logits, 0)
          - logits * labels
          + jn.log(1 + jn.exp(-jn.abs(logits)))
      )
  
file_path: objax/objax/functional/loss.py
imports: from typing import Union, Iterable, Optional
  import jax.numpy
  from objax.functional.core import logsumexp
  from objax.typing import JaxArray
  import warnings
label_desc: Use image node_id 7 for calling a global function with example usage: sigmoid_cross_entropy_logits(logits, labels) and returns: unknown