
    RЦiy
                        S r SSKrSSKrSSKJrJrJrJr  SSKrSSK	J
s  Jr  SSKJr  \R                  " \5      r\R$                  R&                  \     SS\R(                  S\\   S\\\      S	\S
\S\S\4S jj5       5       r\R$                  R&                  \   SS\R(                  S\\   S
\S\S\4
S jj5       5       rg)zPPosition Embedding Utilities

Hacked together by / Copyright 2022 Ross Wightman
    N)ListTupleOptionalUnion   )register_notrace_functionposembnew_sizeold_sizenum_prefix_tokensinterpolation	antialiasverbosec                    U R                   S   nUS   US   -  U-   nX:X  a  US   US   :X  a  U $ Uc$  [        [        R                  " Xs-
  5      5      n	X4nU(       a  U S S 2S U24   U S S 2US 24   p
OS U p
U R                   S   nU R                  nU R                  5       n U R                  SUS   US   S5      R                  SSSS5      n [        R                  " XXES9n U R                  SSSS5      R                  SSU5      n U R                  U5      n U
b  [        R                  " X/SS9n [        R                  R                  5       (       d#  U(       a  [        R!                  SU S	U S
35        U $ )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                T/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/timm/layers/pos_embed.pyresample_abs_pos_embedr3      sy    \\!_Na[8A;.1BBN'HQK8A;,F>=>?6 &q*<+<*<'< =vaIZI[F[?\v $fv R IJ\\^F^^Ax{HQK<DDQ1aPF]]6}ZF^^Aq!Q'//2yAFYYz"F  M2:99!!##3H:T(1MNM    c                 J   US   U R                   S   :X  a  US   U R                   S   :X  a  U $ U R                  nU R                  5       n U R                  SU R                   S   U R                   S   U R                   S   5      R	                  SSSS5      n [
        R                  " XX#S9n U R	                  SSSS5      R                  U5      n [        R                  R                  5       (       d0  U(       a)  [        R                  S	U R                   SS  S
U S35        U $ )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}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#   _fxr   	getLogger__name__r*   fxwrapTensorr   strboolr3   r8    r4   r2   <module>rI      s"     / /    *


H
%  )-!"&((s)( 49%( 	(
 ( ( (  (V  's)  	
   r4   