code: def rgb_to_grayscale(
      image: Tensor, rgb_weights: Optional[Tensor] = None
  ) -> Tensor:
      r"""Convert a RGB image to grayscale version of image.
  
      .. image:: _static/img/rgb_to_grayscale.png
  
      The image data is assumed to be in the range of (0, 1).
  
      Args:
          image: RGB image to be converted to grayscale with shape :math:`(*,3,H,W)`.
          rgb_weights: Weights that will be applied on each channel (RGB).
              The sum of the weights should add up to one.
      Returns:
          grayscale version of the image with shape :math:`(*,1,H,W)`.
  
      .. note::
         See a working example `here <https://kornia.github.io/tutorials/nbs/color_conversions.html>`__.
  
      Example:
          >>> input = torch.rand(2, 3, 4, 5)
          >>> gray = rgb_to_grayscale(input) # 2x1x4x5
      """
      KORNIA_CHECK_IS_TENSOR(image)
  
      if len(image.shape) < 3 or image.shape[-3] != 3:
          raise ValueError(
              f"Input size must have a shape of (*, 3, H, W). Got {image.shape}"
          )
  
      if rgb_weights is None:
          # 8 bit images
          if image.dtype == torch.uint8:
              rgb_weights = torch.tensor(
                  [76, 150, 29], device=image.device, dtype=torch.uint8
              )
          # floating point images
          elif image.dtype in (
              torch.float16,
              torch.float32,
              torch.float64,
          ):
              rgb_weights = torch.tensor(
                  [0.299, 0.587, 0.114],
                  device=image.device,
                  dtype=image.dtype,
              )
          else:
              raise TypeError(f"Unknown data type: {image.dtype}")
      else:
          # is tensor that we make sure is in the same device/dtype
          rgb_weights = rgb_weights.to(image)
  
      # unpack the color image channels with RGB order
      r: Tensor = image[..., 0:1, :, :]
      g: Tensor = image[..., 1:2, :, :]
      b: Tensor = image[..., 2:3, :, :]
  
      w_r, w_g, w_b = rgb_weights.unbind()
      return w_r * r + w_g * g + w_b * b
  
file_path: kornia/kornia/color/gray.py
imports: from __future__ import annotations
  from typing import Optional
  import torch
  from kornia.color.rgb import bgr_to_rgb
  from kornia.core import Module, Tensor, concatenate
  from kornia.core.check import KORNIA_CHECK_IS_TENSOR
label_desc: Use image node_id 2 for calling a global function with example usage: rgb_to_grayscale(image, rgb_weights) and returns: unknown