o
    پi
                     @   s   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
  mZ ddlmZ eeZ					dd	ejd
ee deee  dedededefddZ			dd	ejd
ee dededef
d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                 C   sL  | j d }|d |d  | }||kr|d |d kr| S |d u r.tt|| }	|	|	f}|rF| 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d|} | 
|} |
d urtj|
| gdd} tj s|rt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_dtype r1   I/home/ubuntu/.local/lib/python3.10/site-packages/timm/layers/pos_embed.pyresample_abs_pos_embed   s,   

,

$
r3   c                 C   s   |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d|} tj	
 s^|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   r0   r1   r1   r2   resample_abs_pos_embed_nhwc<   s   $."r6   )Nr   r   TF)r   TF)__doc__loggingr   typingr   r   r   r   r%   torch.nn.functionalnn
functionalr"   helpersr   	getLogger__name__r)   Tensorr   strboolr3   r6   r1   r1   r1   r2   <module>   sT    


.