
    Ng
                        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dS )zQ Position Embedding Utilities

Hacked together by / Copyright 2022 Ross Wightman
    N)ListTupleOptionalUnion   )	to_2tuplebicubicTFposembnew_sizeold_sizenum_prefix_tokensinterpolation	antialiasverbosec                 D   | 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        }|                                 } |                     d|d         |d         d                              dddd          } t          j	        | |||          } |                     dddd                              dd|          } | 
                    |          } |
t          j        |
| gd          } t          j                                        s#|r!t                              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/html/ai-engine/env/lib/python3.11/site-packages/timm/layers/pos_embed.pyresample_abs_pos_embedr4      s    \!_Na[8A;.1BBN''HQK8A;,F,F>,==>>??r6 - &qqq*<+<*<'< =vaaaIZI[I[F[?\v $fv R IJ\\^^F^^Ax{HQK<<DDQ1aPPF]6}PYZZZF^^Aq!Q''//2yAAFYYz""F  M62:::9!!## O OMHMM(MMMNNNM    c                 \   |d         | j         d         k    r|d         | j         d         k    r| S | j        }|                                 } |                     d| j         d         | j         d         | j         d                                       dddd          } t          j        | |||          } |                     dddd                              |          } t          j	        
                                s0|r.t                              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   r2   s         r3   resample_abs_pos_embed_nhwcr9   <   s     {fl2&&&8A;&,r:J+J+JJ\\^^F^^Av|B/b1A6<PRCSTT\\]^`acdfghhF]6}PYZZZF^^Aq!Q''**:66F9!!## Z ZXFLB4GXXXXXXYYYMr5   )Nr   r	   TF)r	   TF)__doc__loggingr   typingr   r   r   r   r'   torch.nn.functionalnn
functionalr$   helpersr   	getLogger__name__r+   Tensorr   strboolr4   r9    r5   r3   <module>rG      sm      / / / / / / / / / / / /                
'
H
%
% )-!"&( ((s)( 49%( 	(
 ( ( ( ( ( (\ ' s)  	
      r5   