
    Ng                     T    d dl mZmZmZ d dlZd dlmZ  G d dej                  ZdS )    )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      ?   Fprobnum_prefix_tokensorderedc                     t                                                       d|cxk    rdk     sn J || _        || _        || _        || _        d S )Nr         ?)super__init__r   r   r   r   )selfr   r   r   r   	__class__s        U/var/www/html/ai-engine/env/lib/python3.11/site-packages/timm/layers/patch_dropout.pyr   zPatchDropout.__init__   sZ     	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|                    d          d         }|                    d|                    d                              d|j        d	d          z                       }|t          j        ||fd          }| j        r||fS |S )
Ng        r   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4CYCZCZ@Z>[1MM MGAJGAJq#a2	>23344}U[Aah%G%G%GRPPPQRQRQRT]U]T]Q]^< 	8 (,,,44Q7LHHQ..r2299(QWQRR[:PQQRR$	=!,!444A 	#l?"r   )r	   r
   FF)__name__
__module____qualname____doc__r    jitFinalbool__annotations__floatr   r   r   Tensorr   r   r.   __classcell__)r   s   @r   r   r      s           IOD)))) %&!#(- --  #- 	-
 !- - - - - -E%,elHU\DZ6Z0["[\        r   r   )	typingr   r   r   r    torch.nnnnModuler    r   r   <module>r?      st    ) ) ) ) ) ) ) ) ) )       . . . . .29 . . . . .r   