
    Ng                     L   d Z ddlZddlmZ ddlmc mZ ddlmZm	Z	m
Z
 ddlmZ ddlmZmZ 	 	 dd
ee         dee         dee         dedef
dZ G d dej                  Z	 	 dd
ee         dee         dee         dee         def
dZ G d dej                  ZddZdS )zN AvgPool2d w/ Same Padding

Hacked together by / Copyright 2020 Ross Wightman
    N)ListTupleOptional   )	to_2tuple)pad_sameget_padding_valuer   r   FTkernel_sizestridepadding	ceil_modecount_include_padc                 V    t          | ||          } t          j        | ||d||          S Nr
   )r   F
avg_pool2d)xr   r   r   r   r   s         S/var/www/html/ai-engine/env/lib/python3.11/site-packages/timm/layers/pool2d_same.pyavg_pool2d_samer      s0     	K((A<;	CTUUU    c                   0     e Zd ZdZd	def fdZd Z xZS )
AvgPool2dSamez; Tensorflow like 'SAME' wrapper for 2D average pooling
    Nr   FTr   c                     t          |          }t          |          }t          t          |                               ||d||           d S r   )r   superr   __init__)selfr   r   r   r   r   	__class__s         r   r   zAvgPool2dSame.__init__   sJ    ,,6""mT""++KTefffffr   c                     t          || j        | j                  }t          j        || j        | j        | j        | j        | j                  S N)r   r   r   r   r   r   r   r   r   r   s     r   forwardzAvgPool2dSame.forward   sH    Q($+66|tdlDNDLbd d 	dr   )Nr   FT__name__
__module____qualname____doc__intr   r"   __classcell__r   s   @r   r   r      sq         g gC g g g g g g
d d d d d d dr   r   r   r   dilationc                 v    t          | ||t          d                     } t          j        | ||d||          S Ninf)valuer
   )r   floatr   
max_pool2d)r   r   r   r   r,   r   s         r   max_pool2d_samer3   #   s<     	Ke}===A<;)LLLr   c                   0     e Zd ZdZd	def fdZd Z xZS )
MaxPool2dSamez7 Tensorflow like 'SAME' wrapper for 2D max pooling
    Nr   r   Fr   c                     t          |          }t          |          }t          |          }t          t          |                               ||d||           d S r   )r   r   r5   r   )r   r   r   r   r,   r   r   s         r   r   zMaxPool2dSame.__init__-   sW    ,,6""X&&mT""++KS\]]]]]r   c                     t          || j        | j        t          d                     }t	          j        || j        | j        d| j        | j                  S r.   )r   r   r   r1   r   r2   r,   r   r!   s     r   r"   zMaxPool2dSame.forward3   sJ    Q($+eEll]KKK|At/fdmUYUcdddr   )Nr   r   Fr#   r*   s   @r   r5   r5   *   sq         ^ ^C ^ ^ ^ ^ ^ ^e e e e e e er   r5   c                 T   |p|}|                     dd          }t          ||fd|i|\  }}|r7| dk    rt          |fd|i|S | dk    rt          |fd|i|S J d|              | dk    rt	          j        |f||d|S | dk    rt	          j        |f||d|S J d|              )	Nr    r   avgmaxFzUnsupported pool type )r   r   )popr	   r   r5   nn	AvgPool2d	MaxPool2d)	pool_typer   r   kwargsr   
is_dynamics         r   create_pool2drC   8   s   "{FjjB''G+G[ZZZSYZZGZ ? FFVFvFFF% FFVFvFFF>>9>>>>><VFGVVvVVV%<VFGVVvVVV>>9>>>>>r   )r
   FT)r
   r+   Fr    )r'   torchtorch.nnr=   torch.nn.functional
functionalr   typingr   r   r   helpersr   r   r   r	   r(   boolr   r>   r   r3   r?   r5   rC    r   r   <module>rL      s                    ( ( ( ( ( ( ( ( ( (       0 0 0 0 0 0 0 0 X^GKV VDI VtCy V4PS9 V#V@DV V V Vd d d d dBL d d d LR8=M MS	M+/9M?CCyMs)M15M M M Me e e e eBL e e e? ? ? ? ? ?r   