
    kh
                        d Z ddlZddlZddlmZmZmZmZ ddlZddl	m
c mZ ddlmZ  ej                  e      Z	 	 	 	 	 ddej$                  dee   deee      d	ed
ededefdZ	 	 	 ddej$                  dee   d
ededef
dZy)zQ Position Embedding Utilities

Hacked together by / Copyright 2022 Ross Wightman
    N)ListTupleOptionalUnion   )	to_2tupleposembnew_sizeold_sizenum_prefix_tokensinterpolation	antialiasverbosec                    | j                   d   }|d   |d   z  |z   }||k(  r|d   |d   k(  r| S |%t        t        j                  ||z
              }	|	|	f}|r| d d d |f   | d d |d f   } }
nd | } }
| j                   d   }| j                  }| j                         } | j                  d|d   |d   d      j                  dddd      } t        j                  | |||      } | j                  dddd      j                  dd|      } | j                  |      } |
t        j                  |
| gd      } t        j                  j                         s|rt        j!                  d| d	| d
       | S )Nr   r         sizemoder   )dimResized position embedding:  to .)shapeintmathsqrtdtypefloatreshapepermuteFinterpolatetotorchcatjitis_scripting_loggerinfo)r	   r
   r   r   r   r   r   num_pos_tokensnum_new_tokenshwposemb_prefix	embed_dim
orig_dtypes                Q/var/www/teggl/fontify/venv/lib/python3.12/site-packages/timm/layers/pos_embed.pyresample_abs_pos_embedr3      s    \\!_Na[8A;.1BBN'HQK8A;,F>,==>?r6 &q*<+<*<'< =vaIZI[F[?\v $fv R IJ\\^F^^Ax{HQK<DDQ1aPF]]6}PYZF^^Aq!Q'//2yAFYYz"F  M62:99!!#3H:T(1MNM    c                 :   |d   | j                   d   k(  r|d   | j                   d   k(  r| S | j                  }| j                         } | j                  d| j                   d   | j                   d   | j                   d         j	                  dddd      } t        j                  | |||      } | j	                  dddd      j                  |      } t        j                  j                         s+|r)t        j                  d	| j                   dd  d
| d       | S )Nr   r   r   r   r   r   r   r   r   )r   r   r    r!   r"   r#   r$   r%   r&   r(   r)   r*   r+   )r	   r
   r   r   r   r1   s         r2   resample_abs_pos_embed_nhwcr8   <   s     {fll2&&8A;&,,r:J+JJ\\^F^^Av||B/b1A6<<PRCST\\]^`acdfghF]]6}PYZF^^Aq!Q'**:6F99!!#3FLLB4G3HXJVWXYMr4   )Nr   bicubicTF)r9   TF)__doc__loggingr   typingr   r   r   r   r&   torch.nn.functionalnn
functionalr#   helpersr   	getLogger__name__r*   Tensorr   strboolr3   r8    r4   r2   <module>rG      s      / /    
'

H
% )-!"&((s)( 49%( 	(
 ( ( (\ 's)  	
 r4   