class_docstr: Base class to represent the So2 group.
  
  The SO(2) is the group of all rotations about the origin of two-dimensional Euclidean space
  :math:`R^2` under the operation of composition.
  See more: https://en.wikipedia.org/wiki/Orthogonal_group#Special_orthogonal_group
  
  We internally represent the rotation by a complex number.
  
  Example:
      >>> real = torch.tensor([1.0])
      >>> imag = torch.tensor([2.0])
      >>> So2(torch.complex(real, imag))
      Parameter containing:
      tensor([1.+2.j], requires_grad=True)
docstr: Returns the adjoint matrix of shape :math:`(B, 2, 2)`.
  
  Example:
      >>> s = So2.identity()
      >>> s.adjoint()
      tensor([[1., -0.],
              [0., 1.]], grad_fn=<StackBackward0>)
docstr_tok: ["Returns","the","adjoint","matrix","of","shape",":","math",":","`","(","B",",","2",",","2",")","`",".","Example",":",">",">",">","s","=","So2.identity","(",")",">",">",">","s.adjoint","(",")","tensor","(","[","[","1.",",","-0",".","]",",","[","0.",",","1",".","]","]",",","grad_fn=","<","StackBackward0",">",")"]
code: def adjoint(self) -> Tensor:
      """Returns the adjoint matrix of shape :math:`(B, 2, 2)`.
  
      Example:
          >>> s = So2.identity()
          >>> s.adjoint()
          tensor([[1., -0.],
                  [0., 1.]], grad_fn=<StackBackward0>)
      """
      batch_size = len(self.z) if len(self.z.shape) > 0 else None
      return self.identity(
          batch_size, self.z.device, self.z.real.dtype
      ).matrix()
  
imports: from __future__ import annotations
  from typing import Optional, overload
  from kornia.core import Device, Dtype, Module, Parameter, Tensor, complex, rand, stack, tensor, zeros_like
  from kornia.core.check import KORNIA_CHECK, KORNIA_CHECK_IS_TENSOR
  from kornia.geometry.liegroup._utils import check_so2_matrix, check_so2_matrix_shape, check_so2_t_shape, check_so2_theta_shape, check_so2_z_shape
  from kornia.geometry.vector import Vector2
label_desc: Use image node_id 17 for calling the So2 obj's underlying member method code with example usage: obj.adjoint() and returns: self