class_docstr: Shuffle the channels of a batch of multi-dimensional images.
  
  .. image:: _static/img/RandomChannelShuffle.png
  
  Args:
      same_on_batch: apply the same transformation across the batch.
      p: probability of applying the transformation.
      keepdim: whether to keep the output shape the same as input ``True`` or broadcast it
        to the batch form ``False``.
  
  Examples:
      >>> rng = torch.manual_seed(0)
      >>> img = torch.arange(1*2*2*2.).view(1,2,2,2)
      >>> RandomChannelShuffle()(img)
      tensor([[[[4., 5.],
                [6., 7.]],
      <BLANKLINE>
               [[0., 1.],
                [2., 3.]]]])
  
  To apply the exact augmenation again, you may take the advantage of the previous parameter state:
      >>> input = torch.randn(1, 3, 32, 32)
      >>> aug = RandomChannelShuffle(p=1.)
      >>> (aug(input) == aug(input, params=aug._params)).all()
      tensor(True)
code: def generate_parameters(
      self, shape: Tuple[int, ...]
  ) -> Dict[str, Tensor]:
      B, C, _, _ = shape
      channels = torch.rand(B, C).argsort(dim=1)
      return {"channels": channels}
  
file_path: kornia/kornia/augmentation/_2d/intensity/channel_shuffle.py
imports: from typing import Any, Dict, Optional, Tuple
  import torch
  from kornia.augmentation._2d.intensity.base import IntensityAugmentationBase2D
  from kornia.core import Tensor
label_desc: Use image node_id 2 for calling the RandomChannelShuffle obj's underlying member method code with example usage: obj.generate_parameters(shape) and returns: dict