code: def _validate_poisson_nll_params(
      input,
      label,
      epsilon,
      reduction,
      allowed_dtypes=["float16", "float32", "float64"],
  ):
      # Validate dtypes
      for parameter, name in zip([input, label], ["input", "label"]):
          if parameter.dtype not in allowed_dtypes:
              raise TypeError(
                  f"The dtype of '{name}' in poisson_nll_loss should be one of"
                  f" {allowed_dtypes}, but received {parameter.dtype}."
              )
  
      # Validate epsilon
      if epsilon <= 0:
          raise ValueError(
              "The value of `epsilon` in poisson_nll_loss should be positive, but"
              f" received {epsilon}, which is not allowed."
          )
  
      # Validate reduction
      if reduction not in ["sum", "mean", "none"]:
          raise ValueError(
              "The value of 'reduction' in poisson_nll_loss should be 'sum', 'mean' or"
              f" 'none', but received {reduction}, which is not allowed."
          )
  
      # Validate shape
      if input.shape != label.shape:
          raise ValueError(
              f"The shape of 'input' ({input.shape}) must be the same as the shape of"
              f" 'label' ({label.shape})."
          )
  
      return True
  
file_path: ivy/ivy/functional/backends/jax/experimental/losses.py
imports: import jax.numpy
  from typing import Optional
  from ivy.functional.backends.jax import JaxArray
  from ivy.func_wrapper import with_supported_device_and_dtypes
  from .None import backend_version
label_desc: Use image node_id 5 for calling a global function with example usage: _validate_poisson_nll_params(input, label, epsilon, reduction, allowed_dtypes) and returns: True