Ë
    éÓ^j�  ã                   ó&  — d Z ddlZddlmZmZmZ ddlZddlmc m	Z
 ddlmZ ddededed	eeee   f   fd
„Zdedededefd„Zddededefd„Z	 ddee   dee   dee   dee   d	ee   f
d„Z	 	 ddee   dee   dee   defd„Zd	eeef   fd„Zy)zD Padding Helpers

Hacked together by / Copyright 2020 Ross Wightman
é    N)ÚListÚTupleÚUnioné   )Ú	to_2tupleÚkernel_sizeÚstrideÚdilationÚreturnc           
      ó   — t        | ||fD �cg c]  }t        |t        t        f«      ‘Œ c}«      rBt	        | «      t	        |«      t	        |«      }}} t        | ||«      D �cg c]
  }t        |Ž ‘Œ c}S |dz
  || dz
  z  z   dz  }|S c c}w c c}w )Nr   é   )ÚanyÚ
isinstanceÚtupleÚlistr   ÚzipÚget_padding)r   r	   r
   Ú_ÚvÚaÚpaddings          ú^/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/layers/padding.pyr   r      s�   € Ü
°;ÀÈÐ2QÖR¨QŒJ�qœ5¤$˜-Õ(ÒRÔSÜ(1°+Ó(>Ä	È&Ó@QÔS\Ð]eÓSf˜X�VˆÜ),¨[¸&À(Ó)KÖL A”˜Q’ÒLÐLØ˜‘
˜h¨+¸©/Ñ:Ñ:¸qÑ@€GØ€Nùò	 SùâLs   �BÁ!BÚxc                 ó  — t        | t        j                  «      r=t        j                  | |z  j	                  «       dz
  |z  |dz
  |z  z   dz   | z
  d¬«      S t        t        j                  | |z  «      dz
  |z  |dz
  |z  z   dz   | z
  d«      S )Nr   r   )Úmin)r   ÚtorchÚTensorÚclampÚceilÚmaxÚmath)r   r   r	   r
   s       r   Úget_same_paddingr"      s“   € Ü�!”U—\‘\Ô"Ü�{‰{˜Q ™Z×-Ñ-Ó/°!Ñ3°vÑ=ÀÈqÁÐT\Ñ@\Ñ\Ð_`Ñ`ÐcdÑdÐjkÔlÐlä”D—I‘I˜a &™jÓ)¨AÑ-°Ñ7¸;È¹?ÈhÑ:VÑVÐYZÑZÐ]^Ñ^Ð`aÓbÐbó    c           
      ó6  — t        | ||fD �cg c]  }t        |t        t        f«      ‘Œ c}«      rKt	        | «      t	        |«      t	        |«      }}} t        t        | ||«      D �cg c]
  }t        |Ž ‘Œ c}«      S |dk(  xr || dz
  z  dz  dk(  S c c}w c c}w )Nr   r   r   )r   r   r   r   r   Úallr   Úis_static_pad)r   r	   r
   r   r   r   s         r   r&   r&       s”   € Ü
°;ÀÈÐ2QÖR¨QŒJ�qœ5¤$˜-Õ(ÒRÔSÜ(1°+Ó(>Ä	È&Ó@QÔS\Ð]eÓSf˜X�VˆÜ¬s°;ÀÈÓ/QÖR¨!”M 1Ò%ÒRÓSÐSØ�Q‰;ÒB˜H¨°a©Ñ8¸AÑ=ÀÑBÐBùò SùâRs   �BÁ&B©r   r   Ú
input_sizec                 ó–   — | \  }}|\  }}t        |||d   |d   «      }t        |||d   |d   «      }	|	dz  |	|	dz  z
  |dz  ||dz  z
  gS )Nr   r   r   )r"   )
r(   r   r	   r
   ÚihÚiwÚkhÚkwÚpad_hÚpad_ws
             r   Úpad_same_argr0   '   so   € ð �F€BˆØ�F€BˆÜ˜R  V¨A¡Y°¸±Ó<€EÜ˜R  V¨A¡Y°¸±Ó<€EØ�Q‰J˜ ¨¡
Ñ*¨E°Q©J¸ÀÈÁ
Ñ8JÐKÐKr#   Úvaluec           	      óê   — | j                  «       dd  \  }}t        ||d   |d   |d   «      }t        ||d   |d   |d   «      }t        j                  | |dz  ||dz  z
  |dz  ||dz  z
  f|¬«      } | S )Néþÿÿÿr   r   r   )r1   )Úsizer"   ÚFÚpad)	r   r   r	   r
   r1   r*   r+   r.   r/   s	            r   Úpad_samer7   5   sŒ   € ð �V‰V‹X�b�cˆ]�F€BˆÜ˜R ¨Q¡°¸±¸HÀQ¹KÓH€EÜ˜R ¨Q¡°¸±¸HÀQ¹KÓH€EÜ	�‰ˆa�%˜1‘*˜e e¨q¡jÑ0°%¸1±*¸eÀeÈqÁjÑ>PÐQÐY^Ô_€AØ€Hr#   c                 óÎ   — d}t        | t        «      rP| j                  «       } | dk(  r$t        |fi |¤Žrt	        |fi |¤Ž} | |fS d} d}| |fS | dk(  rd} | |fS t	        |fi |¤Ž} | |fS )NFÚsamer   TÚvalid)r   ÚstrÚlowerr&   r   )r   r   ÚkwargsÚdynamics       r   Úget_padding_valuer?   C   sž   € Ø€GÜ�'œ3Ôà—-‘-“/ˆØ�fÒä˜[Ñ3¨FÒ3ä% kÑ<°VÑ<�ð �GÐÐð �Ø�ð �GÐÐð ˜ÒàˆGð �GÐÐô " +Ñ8°Ñ8ˆGØ�GÐÐr#   )r'   )r'   r   )Ú__doc__r!   Útypingr   r   r   r   Útorch.nn.functionalÚnnÚ
functionalr5   Úhelpersr   Úintr   r"   r&   r0   Úfloatr7   Úboolr?   © r#   r   ú<module>rJ      s>  ðñó ß %Ñ %ã ß Ð å ñ˜Sð ¨#ð ¸Sð ÈeÐTWÐY]Ð^aÑYbÐTbÑNcó ðc˜ð c¨#ð c°sð cÀcó cñC˜sð C¨Cð C¸só Cð %ñ	
LØ˜‘Ið
Là˜#‘Yð
Lð �S‘	ð
Lð �s‘)ð	
Lð
 
ˆ#�Yó
Lð$ %Øñà˜#‘Yðð �S‘	ðð �s‘)ð	ð
 óð¸¸uÀd¸{Ñ9Kô r#   