code: def poisson_nll_loss(
      input: np.ndarray,
      target: np.ndarray,
      *,
      log_input: bool = True,
      full: bool = False,
      eps: float = 1e-8,
      reduction: str = "mean",
  ) -> np.ndarray:
      input_arr = np.asarray(input)
      target_arr = np.asarray(target, dtype=input.dtype)
  
      _validate_poisson_nll_params(
          input_arr, target_arr, eps, reduction
      )
  
      if log_input:
          loss = np.exp(input_arr) - target_arr * input_arr
      else:
          loss = input_arr - target_arr * np.log(input_arr + eps)
  
      if full:
          point_five = np.array(0.5, dtype=target_arr.dtype)
          two_pi = np.array(2 * np.pi, dtype=target_arr.dtype)
          striling_approx_term = (
              (target_arr * np.log(target_arr))
              - target_arr
              + (point_five * np.log(two_pi * target_arr))
          )
          zeroes = np.zeros_like(target_arr, dtype=target_arr.dtype)
          ones = np.ones_like(target_arr, dtype=target_arr.dtype)
          cond = np.logical_and(
              target_arr >= zeroes, target_arr <= ones
          )
          loss = loss + np.where(cond, zeroes, striling_approx_term)
      return _apply_loss_reduction(loss, reduction)
  
file_path: ivy/ivy/functional/backends/numpy/experimental/losses.py
imports: import numpy
  from typing import Optional
  from ivy.functional.backends.numpy.helpers import _scalar_output_to_0d_array
  from ivy.func_wrapper import with_unsupported_dtypes, with_supported_device_and_dtypes
  from .None import backend_version
label_desc: Use image node_id 6 for calling a global function with example usage: poisson_nll_loss(input, target) and returns: _apply_loss_reduction