code: def spatial_expectation2d(
      input: Tensor, normalized_coordinates: bool = True
  ) -> Tensor:
      r"""Compute the expectation of coordinate values using spatial probabilities.
  
      The input heatmap is assumed to represent a valid spatial probability distribution,
      which can be achieved using :func:`~kornia.geometry.subpixel.spatial_softmax2d`.
  
      Args:
          input: the input tensor representing dense spatial probabilities with shape :math:`(B, N, H, W)`.
          normalized_coordinates: whether to return the coordinates normalized in the range
            of :math:`[-1, 1]`. Otherwise, it will return the coordinates in the range of the input shape.
  
      Returns:
         expected value of the 2D coordinates with shape :math:`(B, N, 2)`. Output order of the coordinates is (x, y).
  
      Examples:
          >>> heatmaps = torch.tensor([[[
          ... [0., 0., 0.],
          ... [0., 0., 0.],
          ... [0., 1., 0.]]]])
          >>> spatial_expectation2d(heatmaps, False)
          tensor([[[1., 2.]]])
      """
      _validate_batched_image_tensor_input(input)
  
      batch_size, channels, height, width = input.shape
  
      # Create coordinates grid.
      grid = create_meshgrid(
          height, width, normalized_coordinates, input.device
      )
      grid = grid.to(input.dtype)
  
      pos_x = grid[..., 0].reshape(-1)
      pos_y = grid[..., 1].reshape(-1)
  
      input_flat = input.view(batch_size, channels, -1)
  
      # Compute the expectation of the coordinates.
      expected_y = torch.sum(pos_y * input_flat, -1, keepdim=True)
      expected_x = torch.sum(pos_x * input_flat, -1, keepdim=True)
  
      output = concatenate([expected_x, expected_y], -1)
  
      return output.view(batch_size, channels, 2)
  
file_path: kornia/kornia/geometry/subpix/dsnt.py
imports: from __future__ import annotations
  import torch
  from kornia.core import Tensor, concatenate, softmax
  from kornia.core.check import KORNIA_CHECK_IS_TENSOR, KORNIA_CHECK_SHAPE
  from kornia.utils.grid import create_meshgrid
label_desc: Use image node_id 3 for calling a global function with example usage: spatial_expectation2d(input, normalized_coordinates) and returns: output