
    RЦi                     `    S r SSKJr  SSKJs  Jr  SSKJrJr   " S S\R                  5      r
g)z>Median Pool
Hacked together by / Copyright 2020 Ross Wightman
    N   )	to_2tuple	to_4tuplec                   <   ^  \ rS rSrSrSU 4S jjrS rS rSrU =r	$ )MedianPool2d	   a/  Median pool (usable as median filter when stride=1) module.

Args:
     kernel_size: size of pooling kernel, int or 2-tuple
     stride: pool stride, int or 2-tuple
     padding: pool padding, int or 4-tuple (l, r, t, b) as in pytorch F.pad
     same: override padding and enforce same padding, boolean
c                    > [         TU ]  5         [        U5      U l        [        U5      U l        [        U5      U l        X@l        g )N)super__init__r   kstrider   paddingsame)selfkernel_sizer   r   r   	__class__s        V/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/timm/layers/median_pool.pyr   MedianPool2d.__init__   s7    ;'' )	    c                 D   U R                   (       Ga  UR                  5       SS  u  p#X R                  S   -  S:X  a*  [        U R                  S   U R                  S   -
  S5      nO+[        U R                  S   X R                  S   -  -
  S5      nX0R                  S   -  S:X  a*  [        U R                  S   U R                  S   -
  S5      nO+[        U R                  S   X0R                  S   -  -
  S5      nUS-  nXV-
  nUS-  nXH-
  n	XgX4n
U
$ U R
                  n
U
$ )N   r   r   )r   sizer   maxr   r   )r   xihiwphpwplprptpbr   s              r   _paddingMedianPool2d._padding   s   999VVXab\FBKKN"a'T[[^3Q7b;;q>&9:A>KKN"a'T[[^3Q7b;;q>&9:A>qBBqBBr&G  llGr   c                    [         R                  " XR                  U5      SS9nUR                  SU R                  S   U R
                  S   5      R                  SU R                  S   U R
                  S   5      nUR                  5       R                  UR                  5       S S S-   5      R                  S	S
9S   nU$ )Nreflect)moder   r      r      )r*   )dim)
Fpadr#   unfoldr   r   
contiguousviewr   median)r   r   s     r   forwardMedianPool2d.forward-   s    EE!]]1%I6HHQq	4;;q>299!TVVAYTUWLLN!u 45<<<DQGr   )r   r   r   r   )r(   r   r   F)
__name__
__module____qualname____firstlineno____doc__r   r#   r2   __static_attributes____classcell__)r   s   @r   r   r   	   s    ( r   r   )r8   torch.nnnntorch.nn.functional
functionalr,   helpersr   r   Moduler    r   r   <module>rB      s(       )(299 (r   