code: def zca_whiten(
      inp: Tensor,
      dim: int = 0,
      unbiased: bool = True,
      eps: float = 1e-6,
  ) -> Tensor:
      r"""Apply ZCA whitening transform.
  
      See :class:`~kornia.color.ZCAWhitening` for details.
  
      Args:
          inp: input data tensor.
          dim: Specifies the dimension that serves as the samples dimension.
          unbiased: Whether to use the unbiased estimate of the covariance matrix.
          eps: a small number used for numerical stability.
  
      Returns:
          Whiten Input data.
  
      .. note::
         See a working example `here <https://colab.sandbox.google.com/github/kornia/tutorials/
         blob/master/source/zca_whitening.ipynb>`__.
  
      Examples:
          >>> x = torch.tensor([[0,1],[1,0],[-1,0]], dtype = torch.float32)
          >>> zca_whiten(x)
          tensor([[ 0.0000,  1.1547],
                  [ 1.0000, -0.5773],
                  [-1.0000, -0.5773]])
      """
      if not isinstance(inp, Tensor):
          raise TypeError(
              f"Input type is not a Tensor. Got {type(inp)}"
          )
  
      if not isinstance(eps, float):
          raise TypeError(f"eps type is not a float. Got{type(eps)}")
  
      if not isinstance(unbiased, bool):
          raise TypeError(
              f"unbiased type is not bool. Got{type(unbiased)}"
          )
  
      if not isinstance(dim, int):
          raise TypeError(
              f"Argument 'dim' must be of type int. Got {type(dim)}"
          )
  
      transform, mean, _ = zca_mean(inp, dim, unbiased, eps, False)
  
      inp_whiten = linear_transform(inp, transform, mean, dim)
  
      return inp_whiten
  
file_path: kornia/kornia/enhance/zca.py
imports: from typing import List, Optional, Tuple
  import torch
  from kornia.core import Module, Tensor, concatenate, tensor
label_desc: Use image node_id 2 for calling a global function with example usage: zca_whiten(inp, dim, unbiased, eps) and returns: inp_whiten