class_docstr: Module, which estimates the dominant gradient orientation of the given patches, in radians.
  
  Zero angle points towards right.
  
  Args:
      patch_size: size of the (square) input patch.
      num_angular_bins: number of histogram bins.
      eps: for safe division, and arctan.
class_docstr_tok: ["Module",",","which","estimates","the","dominant","gradient","orientation","of","the","given","patches",",","in","radians",".","Zero","angle","points","towards","right",".","Args",":","patch_size",":","size","of","the","(","square",")","input","patch",".","num_angular_bins",":","number","of","histogram","bins",".","eps",":","for","safe","division",",","and","arctan","."]
code: def __repr__(self) -> str:
      return f"{self.__class__.__name__}(patch_size={self.patch_size}, num_ang_bins={self.num_ang_bins}, eps={self.eps})"
  
imports: from typing import Dict, Optional
  import torch
  import torch.nn.functional
  from torch import nn
  from kornia.constants import pi
  from kornia.core.check import KORNIA_CHECK_LAF, KORNIA_CHECK_SHAPE
  from kornia.filters import SpatialGradient, get_gaussian_discrete_kernel1d, get_gaussian_kernel2d
  from kornia.geometry import rad2deg
  from kornia.utils.helpers import map_location_to_cpu
  from .laf import extract_patches_from_pyramid, get_laf_orientation, set_laf_orientation
label_desc: Use image node_id 2 for calling the PatchDominantGradientOrientation obj's underlying member method code with example usage: obj.__repr__() and returns: self, str, self, str, self, str, self, str