
    kh                     V    d dl mZmZmZ d dlZd dlmZ  G d dej                        Zy)    )OptionalTupleUnionNc            	            e Zd ZU dZej
                  j                  e   ed<   	 	 	 	 d	de	de
dedef fdZdeej                  eej                  eej                     f   f   fdZ xZS )
PatchDropoutzO
    https://arxiv.org/abs/2212.00794 and https://arxiv.org/pdf/2208.07220
    return_indicesprobnum_prefix_tokensorderedc                 z    t         |           d|cxk  rdk  sJ  J || _        || _        || _        || _        y )Nr         ?)super__init__r	   r
   r   r   )selfr	   r
   r   r   	__class__s        U/var/www/teggl/fontify/venv/lib/python3.12/site-packages/timm/layers/patch_dropout.pyr   zPatchDropout.__init__   sC     	D~2~~~	!2,    returnc           	         | j                   r| j                  dk(  r| j                  r|d fS |S | j                  r+|d d d | j                  f   |d d | j                  d f   }}nd }|j                  d   }|j                  d   }t        dt        |d| j                  z
  z              }t        j                  t        j                  |||j                        d      d d d |f   }| j                  r|j                  d      d   }|j                  d|j                  d      j                  d|j                  d	d  z               }|t        j                   ||fd      }| j                  r||fS |S )
Ng        r      r   )device)dim)r   r      )trainingr	   r   r
   shapemaxinttorchargsortrandnr   r   sortgather	unsqueezeexpandcat)r   xprefix_tokensBLnum_keepkeep_indicess          r   forwardzPatchDropout.forward   s^   }}		R""$wH!! $;T%;%;$;!;<a4CYCYCZ@Z>[1M MGGAJGGAJq#a2		>234}}U[[Aahh%GRPQRT]U]T]Q]^<< (,,,4Q7LHHQ..r299(QWWQR[:PQR$		=!,!4Al?"r   )g      ?r   FF)__name__
__module____qualname____doc__r   jitFinalbool__annotations__floatr   r   r   Tensorr   r   r-   __classcell__)r   s   @r   r   r      s     IIOOD)) %&!#(--  #- 	-
 !-E%,,ellHU\\DZ6Z0["[\ r   r   )	typingr   r   r   r   torch.nnnnModuler    r   r   <module>r>      s!    ) )  .299 .r   