code: def shear(
      tensor: torch.Tensor,
      shear: torch.Tensor,
      mode: str = "bilinear",
      padding_mode: str = "zeros",
      align_corners: bool = False,
  ) -> torch.Tensor:
      r"""Shear the tensor.
  
      .. image:: _static/img/shear.png
  
      Args:
          tensor: The image tensor to be skewed with shape of :math:`(B, C, H, W)`.
          shear: tensor containing the angle to shear
            in the x and y direction. The tensor must have a shape of
            (B, 2), where B is batch size, last dimension contains shx shy.
          mode: interpolation mode to calculate output values
            ``'bilinear'`` | ``'nearest'``.
          padding_mode: padding mode for outside grid values
            ``'zeros'`` | ``'border'`` | ``'reflection'``.
          align_corners: interpolation flag.
  
      Returns:
          The skewed tensor with shape same as the input.
  
      Example:
          >>> img = torch.rand(1, 3, 4, 4)
          >>> shear_factor = torch.tensor([[0.5, 0.0]])
          >>> out = shear(img, shear_factor)
          >>> print(out.shape)
          torch.Size([1, 3, 4, 4])
      """
      if not isinstance(tensor, torch.Tensor):
          raise TypeError(
              f"Input tensor type is not a torch.Tensor. Got {type(tensor)}"
          )
  
      if not isinstance(shear, torch.Tensor):
          raise TypeError(
              f"Input shear type is not a torch.Tensor. Got {type(shear)}"
          )
  
      if len(tensor.shape) not in (3, 4):
          raise ValueError(
              f"Invalid tensor shape, we expect CxHxW or BxCxHxW. Got: {tensor.shape}"
          )
  
      # compute the translation matrix
      shear_matrix: torch.Tensor = _compute_shear_matrix(shear)
  
      # warp using the affine transform
      return affine(
          tensor,
          shear_matrix[..., :2, :3],
          mode,
          padding_mode,
          align_corners,
      )
  
imports: from typing import Optional, Tuple, Union
  import torch
  from torch import nn
  from kornia.core import ones, ones_like, zeros
  from kornia.filters import gaussian_blur2d
  from kornia.utils import _extract_device_dtype
  from kornia.utils.image import perform_keep_shape_image
  from kornia.utils.misc import eye_like
  from .imgwarp import get_affine_matrix2d, get_projective_transform, get_rotation_matrix2d, warp_affine, warp_affine3d
label_desc: Use image node_id 14 for calling a global function with example usage: shear(tensor, shear, mode, padding_mode, align_corners) and returns: affine