class_docstr: Module that extract patches from tensors and stack them.
  
  In the simplest case, the output value of the operator with input size
  :math:`(B, C, H, W)` is :math:`(B, N, C, H_{out}, W_{out})`.
  
  where
    - :math:`B` is the batch size.
    - :math:`N` denotes the total number of extracted patches stacked in
    - :math:`C` denotes the number of input channels.
    - :math:`H`, :math:`W` the input height and width of the input in pixels.
    - :math:`H_{out}`, :math:`W_{out}` denote to denote to the patch size
      defined in the function signature.
      left-right and top-bottom order.
  
  * :attr:`window_size` is the size of the sliding window and controls the
    shape of the output tensor and defines the shape of the output patch.
  * :attr:`stride` controls the stride to apply to the sliding window and
    regulates the overlapping between the extracted patches.
  * :attr:`padding` controls the amount of implicit zeros-paddings on both
    sizes at each dimension.
  
  The parameters :attr:`window_size`, :attr:`stride` and :attr:`padding` can
  be either:
  
      - a single ``int`` -- in which case the same value is used for the
        height and width dimension.
      - a ``tuple`` of two ints -- in which case, the first `int` is used for
        the height dimension, and the second `int` for the width dimension.
  
  Args:
      window_size: the size of the sliding window and the output patch size.
      stride: stride of the sliding window.
      padding: Zero-padding added to both side of the input.
  
  Shape:
      - Input: :math:`(B, C, H, W)`
      - Output: :math:`(B, N, C, H_{out}, W_{out})`
  
  Returns:
      the tensor with the extracted patches.
  
  Examples:
      >>> input = torch.arange(9.).view(1, 1, 3, 3)
      >>> patches = extract_tensor_patches(input, (2, 3))
      >>> input
      tensor([[[[0., 1., 2.],
                [3., 4., 5.],
                [6., 7., 8.]]]])
      >>> patches[:, -1]
      tensor([[[[3., 4., 5.],
                [6., 7., 8.]]]])
class_docstr_tok: ["Module","that","extract","patches","from","tensors","and","stack","them",".","In","the","simplest","case",",","the","output","value","of","the","operator","with","input","size",":","math",":","`","(","B",",","C",",","H",",","W",")","`","is",":","math",":","`","(","B",",","N",",","C",",","H_","{","out","}",",","W_","{","out","}",")","`",".","where","-",":","math",":","`","B","`","is","the","batch","size",".","-",":","math",":","`","N","`","denotes","the","total","number","of","extracted","patches","stacked","in","-",":","math",":","`","C","`","denotes","the","number","of","input","channels",".","-",":","math",":","`","H","`",",",":","math",":","`","W","`","the","input","height","and","width","of","the","input","in","pixels",".","-",":","math",":","`","H_","{","out","}","`",",",":","math",":","`","W_","{","out","}","`","denote","to","denote","to","the","patch","size","defined","in","the","function","signature",".","left-right","and","top-bottom","order",".","*",":","attr",":","`","window_size","`","is","the","size","of","the","sliding","window","and","controls","the","shape","of","the","output","tensor","and","defines","the","shape","of","the","output","patch",".","*",":","attr",":","`","stride","`","controls","the","stride","to","apply","to","the","sliding","window","and","regulates","the","overlapping","between","the","extracted","patches",".","*",":","attr",":","`","padding","`","controls","the","amount","of","implicit","zeros-paddings","on","both","sizes","at","each","dimension",".","The","parameters",":","attr",":","`","window_size","`",",",":","attr",":","`","stride","`","and",":","attr",":","`","padding","`","can","be","either",":","-","a","single","``","int","``","--","in","which","case","the","same","value","is","used","for","the","height","and","width","dimension",".","-","a","``","tuple","``","of","two","ints","--","in","which","case",",","the","first","`","int","`","is","used","for","the","height","dimension",",","and","the","second","`","int","`","for","the","width","dimension",".","Args",":","window_size",":","the","size","of","the","sliding","window","and","the","output","patch","size",".","stride",":","stride","of","the","sliding","window",".","padding",":","Zero-padding","added","to","both","side","of","the","input",".","Shape",":","-","Input",":",":","math",":","`","(","B",",","C",",","H",",","W",")","`","-","Output",":",":","math",":","`","(","B",",","N",",","C",",","H_","{","out","}",",","W_","{","out","}",")","`","Returns",":","the","tensor","with","the","extracted","patches",".","Examples",":",">",">",">","input","=","torch.arange","(","9",".",")",".view","(","1",",","1",",","3",",","3",")",">",">",">","patches","=","extract_tensor_patches","(","input",",","(","2",",","3",")",")",">",">",">","input","tensor","(","[","[","[","[","0.",",","1.",",","2",".","]",",","[","3.",",","4.",",","5",".","]",",","[","6.",",","7.",",","8",".","]","]","]","]",")",">",">",">","patches","[",":",",","-1","]","tensor","(","[","[","[","[","3.",",","4.",",","5",".","]",",","[","6.",",","7.",",","8",".","]","]","]","]",")"]
code: def forward(self, input: Tensor) -> Tensor:
      return extract_tensor_patches(
          input,
          self.window_size,
          stride=self.stride,
          padding=self.padding,
      )
  
file_path: kornia/kornia/contrib/extract_patches.py
imports: import math
  from typing import Optional, Tuple, Union, cast
  import torch
  import torch.nn.functional
  from torch.nn.modules.utils import _pair
  from kornia.core import Module, Tensor, pad
label_desc: Use image node_id 2 for calling the ExtractTensorPatches obj's underlying member method code with example usage: obj.forward(input) and returns: extract_tensor_patches