U
    ¯Ê¹j=  ã                   @   sÜ   d Z ddlZddlmZmZ ddlZddlm  mZ	 de
e
e
e
dœdd„Ze
e
e
e
dœd	d
„Zde
e
e
dœdd„Zdee
 ee
 ee
 ee
 ee
 dœdd„Zdee
 ee
 ee
 edœdd„Zeeef dœdd„ZdS )zD Padding Helpers

Hacked together by / Copyright 2020 Ross Wightman
é    N)ÚListÚTupleé   )Úkernel_sizeÚstrideÚdilationÚreturnc                 K   s   |d || d   d }|S )Nr   é   © )r   r   r   Ú_Úpaddingr
   r
   úR/var/www/html/bwave/python/venv/lib/python3.8/site-packages/timm/layers/padding.pyÚget_padding   s    r   ©Úxr   r   r   c                 C   sr   t | tjƒr>tj| |  ¡ d | |d |  d |  dd�S tt | | ¡d | |d |  d |  dƒS d S )Nr   r   )Úmin)Ú
isinstanceÚtorchZTensorÚclampÚceilÚmaxÚmathr   r
   r
   r   Úget_same_padding   s    2r   )r   r   r   c                 K   s   |dko|| d  d dkS )Nr   r	   r   r
   )r   r   r   r   r
   r
   r   Úis_static_pad   s    r   ©r   r   )Ú
input_sizer   r   r   r   c           
      C   s`   | \}}|\}}t |||d |d ƒ}t |||d |d ƒ}	|	d |	|	d  |d ||d  gS )Nr   r   r	   )r   )
r   r   r   r   ÚihÚiwZkhÚkwÚpad_hÚpad_wr
   r
   r   Úpad_same_arg   s
    r!   )r   r   r   Úvaluec           	      C   s|   |   ¡ dd … \}}t||d |d |d ƒ}t||d |d |d ƒ}tj| |d ||d  |d ||d  f|d�} | S )Néþÿÿÿr   r   r	   )r"   )Úsizer   ÚFÚpad)	r   r   r   r   r"   r   r   r   r    r
   r
   r   Úpad_same-   s
    0r'   )r   c                 K   sd   d}t | tƒr\|  ¡ } | dkrBt|f|Žr8t|f|Ž} q\d} d}n| dkrPd} nt|f|Ž} | |fS )NFZsamer   TZvalid)r   ÚstrÚlowerr   r   )r   r   ÚkwargsZdynamicr
   r
   r   Úget_padding_value;   s    
r+   )r   r   )r   r   )r   )r   r   )Ú__doc__r   Útypingr   r   r   Ztorch.nn.functionalÚnnZ
functionalr%   Úintr   r   r   r!   Úfloatr'   Úboolr+   r
   r
   r
   r   Ú<module>   s0    üû  ûû