Ë
    éÓ^j·  ã                   ó`   — d Z ddlmZ ddlmc mZ ddlmZmZ  G d„ dej                  «      Z
y)z? Median Pool
Hacked together by / Copyright 2020 Ross Wightman
é    Né   )Ú	to_2tupleÚ	to_4tuplec                   ó0   ‡ — e Zd ZdZdˆ fd„	Zd„ Zd„ Zˆ xZS )ÚMedianPool2daH   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         ‰| �  «        t        |«      | _        t        |«      | _        t        |«      | _        || _        y )N)ÚsuperÚ__init__r   ÚkÚstrider   ÚpaddingÚsame)ÚselfÚkernel_sizer   r   r   Ú	__class__s        €úb/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/layers/median_pool.pyr
   zMedianPool2d.__init__   s9   ø€ Ü‰ÑÔÜ˜;Ó'ˆŒÜ Ó'ˆŒÜ  Ó)ˆŒØˆ�	ó    c                 óH  — | j                   �r|j                  «       dd  \  }}|| j                  d   z  dk(  r*t        | j                  d   | j                  d   z
  d«      }n,t        | j                  d   || j                  d   z  z
  d«      }|| j                  d   z  dk(  r*t        | j                  d   | j                  d   z
  d«      }n,t        | j                  d   || j                  d   z  z
  d«      }|dz  }||z
  }|dz  }||z
  }	||||	f}
|
S | j
                  }
|
S )Né   r   r   )r   Úsizer   Úmaxr   r   )r   ÚxÚihÚiwÚphÚpwÚplÚprÚptÚpbr   s              r   Ú_paddingzMedianPool2d._padding   s  € Ø�9‹9Ø—V‘V“X˜a˜b�\‰FˆB�Ø�D—K‘K ‘NÑ" aÒ'Ü˜Ÿ™ ™ T§[¡[°¡^Ñ3°QÓ7‘ä˜Ÿ™ ™ b¨4¯;©;°q©>Ñ&9Ñ:¸AÓ>�Ø�D—K‘K ‘NÑ" aÒ'Ü˜Ÿ™ ™ T§[¡[°¡^Ñ3°QÓ7‘ä˜Ÿ™ ™ b¨4¯;©;°q©>Ñ&9Ñ:¸AÓ>�Ø�q‘ˆBØ�b‘ˆBØ�q‘ˆBØ�b‘ˆBØ˜2˜r 2Ð&ˆGð ˆð —l‘lˆGØˆr   c                 ó�  — t        j                  || j                  |«      d¬«      }|j                  d| j                  d   | j
                  d   «      j                  d| j                  d   | j
                  d   «      }|j                  «       j                  |j                  «       d d dz   «      j                  d	¬
«      d   }|S )NÚreflect)Úmoder   r   é   r   é   )éÿÿÿÿr'   )Údim)
ÚFÚpadr!   Úunfoldr   r   Ú
contiguousÚviewr   Úmedian)r   r   s     r   ÚforwardzMedianPool2d.forward-   sž   € Ü�E‰E�!�T—]‘] 1Ó%¨IÔ6ˆØ�H‰H�Q˜Ÿ™˜q™	 4§;¡;¨q¡>Ó2×9Ñ9¸!¸T¿V¹VÀA¹YÈÏÉÐTUÉÓWˆØ�L‰L‹N×Ñ §¡£¨¨! ¨uÑ 4Ó5×<Ñ<ÀÐ<ÓDÀQÑGˆØˆr   )r%   r   r   F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   r!   r/   Ú__classcell__)r   s   @r   r   r   	   s   ø„ ñõòö(r   r   )r3   Útorch.nnÚnnÚtorch.nn.functionalÚ
functionalr)   Úhelpersr   r   ÚModuler   © r   r   ú<module>r<      s(   ðñõ ß Ð ß )ô(�2—9‘9õ (r   