
    Ng                     ^    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
dS )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
       r   r   Fc                     t          t          |                                            t          |          | _        t          |          | _        t          |          | _        || _        d S )N)	superr   __init__r   kstrider   paddingsame)selfkernel_sizer   r   r   	__class__s        S/var/www/html/ai-engine/env/lib/python3.11/site-packages/timm/layers/median_pool.pyr   zMedianPool2d.__init__   sW    lD!!**,,,;'''' ))			    c                 @   | j         r|                                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}
n| 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 	#VVXXabb\FBDKN"a''T[^3Q77b4;q>&9:A>>DKN"a''T[^3Q77b4;q>&9:A>>qBbBqBbB2r2&GGlGr   c                    t          j        ||                     |          d          }|                    d| j        d         | j        d                                       d| j        d         | j        d                   }|                                                    |                                d d         dz             	                    d	
          d         }|S )Nreflect)moder   r   r   r      )r'   )dim)
Fpadr"   unfoldr   r   
contiguousviewr   median)r   r   s     r   forwardzMedianPool2d.forward-   s    E!T]]1%%I666HHQq	4;q>2299!TVAYTUWWLLNN!u 455<<<DDQGr   )r   r   r   F)__name__
__module____qualname____doc__r   r"   r/   __classcell__)r   s   @r   r   r   	   se                (      r   r   )r3   torch.nnnntorch.nn.functional
functionalr)   helpersr   r   Moduler    r   r   <module>r<      s                    ) ) ) ) ) ) ) )( ( ( ( (29 ( ( ( ( (r   