class_docstr: Denormalize tensor images with mean and standard deviation.
  
  .. math::
      \text{input[channel] = (input[channel] * std[channel]) + mean[channel]}
  
  Where `mean` is :math:`(M_1, ..., M_n)` and `std` :math:`(S_1, ..., S_n)` for `n` channels,
  
  Args:
      mean: Mean for each channel.
      std: Standard deviations for each channel.
      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).
  
  Return:
      Denormalised tensor with same size as input :math:`(*, C, H, W)`.
  
  .. note::
      This function internally uses :func:`kornia.enhance.denormalize`.
  
  Examples:
  
      >>> norm = Denormalize(mean=torch.zeros(1, 4), std=torch.ones(1, 4))
      >>> x = torch.rand(1, 4, 3, 3)
      >>> out = norm(x)
      >>> out.shape
      torch.Size([1, 4, 3, 3])
code: def apply_transform(
      self,
      input: Tensor,
      params: Dict[str, Tensor],
      flags: Dict[str, Any],
      transform: Optional[Tensor] = None,
  ) -> Tensor:
      return denormalize(input, flags["mean"], flags["std"])
  
file_path: kornia/kornia/augmentation/_2d/intensity/denormalize.py
imports: from typing import Any, Dict, List, Optional, Tuple, Union
  import torch
  from torch import Tensor
  from kornia.augmentation._2d.intensity.base import IntensityAugmentationBase2D
  from kornia.enhance import denormalize
label_desc: Use image node_id 2 for calling the Denormalize obj's underlying member method code with example usage: obj.apply_transform(input, params, flags, transform) and returns: denormalize