code: def instance_norm(
      x: torch.Tensor,
      mean: torch.Tensor,
      variance: torch.Tensor,
      /,
      *,
      scale: Optional[torch.Tensor] = None,
      offset: Optional[torch.Tensor] = None,
      training: Optional[bool] = False,
      eps: Optional[float] = 0e-5,
      momentum: Optional[float] = 1e-1,
      data_format: Optional[str] = "NSC",
      out: Optional[
          Tuple[torch.Tensor, torch.Tensor, torch.Tensor]
      ] = None,
  ) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
      runningmean = mean.clone()
      runningvariance = variance.clone()
      # reshape  from  N, *S, C to N, C, *S
      xdims = x.ndim
      if data_format == "NSC":
          x = torch.permute(
              x, dims=(0, xdims - 1, *range(1, xdims - 1))
          )
  
      xnormalized = torch.nn.functional.instance_norm(
          x,
          runningmean,
          runningvariance,
          weight=scale,
          bias=offset,
          use_input_stats=training,
          eps=eps,
          momentum=momentum,
      )
      if data_format == "NSC":
          xnormalized = torch.permute(
              xnormalized, dims=(0, *range(2, xdims), 1)
          )
      return xnormalized, runningmean, runningvariance
  
file_path: ivy/ivy/functional/backends/torch/experimental/norms.py
imports: import torch
  from typing import Literal, Optional, Tuple
  from ivy.func_wrapper import with_supported_dtypes, with_unsupported_dtypes
  from ..None import backend_version
label_desc: Use image node_id 5 for calling a global function with example usage: instance_norm() and returns: xnormalized,  runningmean,  runningvariance