code: def poisson(
      lam: Union[float, torch.Tensor],
      *,
      shape: Optional[Union[ivy.NativeShape, Sequence[int]]] = None,
      device: torch.device = None,
      dtype: torch.dtype,
      seed: Optional[int] = None,
      fill_value: Optional[Union[float, int]] = 0,
      out: Optional[torch.Tensor] = None,
  ):
      lam = torch.tensor(lam, device=device, dtype=torch.float32)
      if seed:
          torch.manual_seed(seed)
      if shape is None:
          return _poisson_with_neg_lam(lam, fill_value, device, dtype)
      shape = torch.tensor(shape, device=device, dtype=torch.int32)
      list_shape = shape.tolist()
      _check_shapes_broadcastable(lam.shape, list_shape)
      lam = torch.broadcast_to(lam, list_shape)
      return _poisson_with_neg_lam(lam, fill_value, device, dtype)
  
file_path: ivy/ivy/functional/backends/torch/experimental/random.py
imports: from typing import Optional, Union, Sequence
  import torch
  import ivy
  from ivy.func_wrapper import with_unsupported_dtypes
  from ..None import backend_version
  from ivy.functional.ivy.random import _check_bounds_and_get_shape, _check_shapes_broadcastable
label_desc: Use image node_id 5 for calling a global function with example usage: poisson(lam) and returns: _poisson_with_neg_lam, _poisson_with_neg_lam