§
    ‚Štj;>  ã                   ó$  — d Z ddlZddlmZ ddlmZ ddlZddlmZ ddlm	Z	 ddl
mZ dd	lmZmZ dd
lmZ ddlmZ ddlmZmZmZ ddlmZ  ej        e¦  «        Ze G d„ de¦  «        ¦   «         Z G d„ dej        ¦  «        Z	 d&dej        dej        dej        dej        dej        dz  de de fd„Z! G d„ dej        ¦  «        Z" G d„ dej        ¦  «        Z# G d „ d!e¦  «        Z$ G d"„ d#ej        ¦  «        Z% G d$„ d%ej        ¦  «        Z&dS )'zTPyTorch IdeficsVision model: a copy of CLIPVisionModel using a simpler config objecté    N)ÚCallable)Ú	dataclass)Únné   )ÚACT2FN)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithPooling)ÚALL_ATTENTION_FUNCTIONS)ÚUnpack)ÚModelOutputÚTransformersKwargsÚloggingé   )ÚIdeficsVisionConfigc                   ó¬   — e Zd ZU dZdZej        dz  ed<   dZej        dz  ed<   dZ	e
ej        df         dz  ed<   dZe
ej        df         dz  ed<   dS )ÚIdeficsVisionModelOutputaÝ  
    Base class for vision model's outputs that also contains image embeddings of the pooling of the last hidden states.

    Args:
        image_embeds (`torch.FloatTensor` of shape `(batch_size, output_dim)` *optional* returned when model is initialized with `with_projection=True`):
            The image embeddings obtained by applying the projection layer to the pooler_output.
        last_hidden_state (`torch.FloatTensor` of shape `(batch_size, sequence_length, hidden_size)`):
            Sequence of hidden-states at the output of the last layer of the model.
        hidden_states (`tuple(torch.FloatTensor)`, *optional*, returned when `output_hidden_states=True` is passed or when `config.output_hidden_states=True`):
            Tuple of `torch.FloatTensor` (one for the output of the embeddings, if the model has an embedding layer, +
            one for the output of each layer) of shape `(batch_size, sequence_length, hidden_size)`.

            Hidden-states of the model at the output of each layer plus the optional initial embedding outputs.
        attentions (`tuple(torch.FloatTensor)`, *optional*, returned when `output_attentions=True` is passed or when `config.output_attentions=True`):
            Tuple of `torch.FloatTensor` (one for each layer) of shape `(batch_size, num_heads, sequence_length,
            sequence_length)`.

            Attentions weights after the attention softmax, used to compute the weighted average in the self-attention
            heads.
    NÚimage_embedsÚlast_hidden_state.Úhidden_statesÚ
attentions)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚtorchÚFloatTensorÚ__annotations__r   r   Útupler   © ó    ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/idefics/vision.pyr   r   '   s“   € € € € € € ðð ð* .2€L�%Ô# dÑ*Ð1Ð1Ñ1Ø26Ð�uÔ(¨4Ñ/Ð6Ð6Ñ6Ø:>€M�5˜Ô*¨CÐ/Ô0°4Ñ7Ð>Ð>Ñ>Ø7;€J��eÔ'¨Ð,Ô-°Ñ4Ð;Ð;Ñ;Ð;Ð;r!   r   c                   óz   ‡ — e Zd Zdefˆ fd„Zdej        dededej        fd„Zdd	ej	        d
e
dej        fd„Zˆ xZS )ÚIdeficsVisionEmbeddingsÚconfigc                 óz  •— t          ¦   «                              ¦   «          || _        |j        | _        |j        | _        |j        | _        t          j        t          j
        | j        ¦  «        ¦  «        | _        t          j        |j        | j        | j        | j        d¬¦  «        | _        | j        | j        z  dz  | _        | j        dz   | _        t          j        | j        | j        ¦  «        | _        |                      dt          j        | j        ¦  «                             d¦  «        d¬¦  «         d S )NF)Úin_channelsÚout_channelsÚkernel_sizeÚstrideÚbiasé   r   Úposition_ids)r   éÿÿÿÿ)Ú
persistent)ÚsuperÚ__init__r%   Úhidden_sizeÚ	embed_dimÚ
image_sizeÚ
patch_sizer   Ú	Parameterr   ÚrandnÚclass_embeddingÚConv2dÚnum_channelsÚpatch_embeddingÚnum_patchesÚnum_positionsÚ	EmbeddingÚposition_embeddingÚregister_bufferÚarangeÚexpand©Úselfr%   Ú	__class__s     €r"   r1   z IdeficsVisionEmbeddings.__init__F   s  ø€ Ý‰Œ×ÒÑÔÐØˆŒØÔ+ˆŒØ Ô+ˆŒØ Ô+ˆŒå!œ|­E¬K¸¼Ñ,GÔ,GÑHÔHˆÔå!œyØÔ+ØœØœØ”?Øð 
ñ  
ô  
ˆÔð !œO¨t¬Ñ>À1ÑDˆÔØ!Ô-°Ñ1ˆÔÝ"$¤,¨tÔ/AÀ4Ä>Ñ"RÔ"RˆÔØ×Ò˜^­U¬\¸$Ô:LÑ-MÔ-M×-TÒ-TÐU\Ñ-]Ô-]ÐjoÐÑpÔpÐpÐpÐpr!   Ú
embeddingsÚheightÚwidthÚreturnc                 óà  — |j         d         dz
  }|                      | j        ¦  «        }|j         d         dz
  }||k    r||k    r|S |dd…df         }|dd…dd…f         }|j         d         }	|| j        j        z  }
|| j        j        z  }|
dz   |dz   }}
t          j        |¦  «        }|                     dt          |¦  «        t          |¦  «        |	¦  «        }| 	                    dddd¦  «        }|j
        t          j        k    }|r9t                               d¦  «         |                     t          j        ¦  «        }t"          j                             ||
|z  ||z  fd	d
¬¦  «        }|r|                     t          j        ¦  «        }t          |
¦  «        |j         d         k    st          |¦  «        |j         d         k    rJt)          dt          |
¦  «        t          |¦  «        f› d|j         d         |j         d         f› d�¦  «        ‚| 	                    dddd¦  «                             dd|	¦  «        }t          j        |                     d¦  «        |fd¬¦  «        S )a#  
        This method allows to interpolate the pre-trained position encodings, to be able to use the model on higher
        resolution images.

        Source:
        https://github.com/facebookresearch/dino/blob/de9ee3df6cf39fac952ab558447af1fa1365362a/vision_transformer.py#L174
        r   Nr   r.   gš™™™™™¹?r   r,   zËUpcasting patch_pos_embed to fp32 for interpolation since `upsample_bicubic2d_out_frame` in nn.functional.interpolate is not implemented for 'torch.bfloat16' dtype. This will result in a slight overhead.ÚbicubicF)Úscale_factorÚmodeÚalign_cornerséþÿÿÿzNumber of patches for images (z/) don't match the shape of position embedding (ú)©Údim)Úshaper?   r-   r%   r5   ÚmathÚsqrtÚreshapeÚintÚpermuteÚdtyper   Úbfloat16ÚloggerÚwarning_onceÚtoÚfloatr   Ú
functionalÚinterpolateÚ
ValueErrorÚviewÚcatÚ	unsqueeze)rD   rF   rG   rH   r<   Ú	pos_embedr=   Úclass_pos_embedÚpatch_pos_embedr3   Únum_h_patchesÚnum_w_patchesÚsqrt_num_positionsÚfp32_upcastings                 r"   Úinterpolate_pos_encodingz0IdeficsVisionEmbeddings.interpolate_pos_encoding]   s©  € ð !Ô& qÔ)¨AÑ-ˆØ×+Ò+¨DÔ,=Ñ>Ô>ˆ	Ø!œ¨Ô*¨QÑ.ˆØ˜-Ò'Ð'¨F°eªO¨OØÐØ# A A A q Dœ/ˆØ# A A A q r r EÔ*ˆàÔ$ RÔ(ˆ	Ø $¤+Ô"8Ñ8ˆØ ¤Ô!7Ñ7ˆð (5°sÑ':¸MÈCÑ<O�}ˆÝ!œY }Ñ5Ô5ÐØ)×1Ò1°!µSÐ9KÑ5LÔ5LÍcÐRdÑNeÔNeÐgpÑqÔqˆØ)×1Ò1°!°Q¸¸1Ñ=Ô=ˆØ(Ô.µ%´.Ò@ˆØð 	>Ý×Òðhñô ð ð .×0Ò0µ´Ñ=Ô=ˆOÝœ-×3Ò3ØØ'Ð*<Ñ<¸mÐN`Ñ>`ÐaØØð	 4ñ 
ô 
ˆð ð 	AØ-×0Ò0µ´Ñ@Ô@ˆOÝˆ}ÑÔ Ô!6°rÔ!:Ò:Ð:½cÀ-Ñ>PÔ>PÐTcÔTiÐjlÔTmÒ>mÐ>mÝðhµ°]Ñ1CÔ1CÅSÈÑEWÔEWÐ0Xð hð hØ0?Ô0EÀbÔ0IÈ?ÔK`ÐacÔKdÐ/eðhð hð hñô ð ð *×1Ò1°!°Q¸¸1Ñ=Ô=×BÒBÀ1ÀbÈ)ÑTÔTˆÝŒy˜/×3Ò3°AÑ6Ô6¸ÐHÈaÐPÑPÔPÐPr!   FÚpixel_valuesrl   c                 ó<  — |j         \  }}}}|s<|| j        k    s|| j        k    r&t          d|› d|› d| j        › d| j        › d�	¦  «        ‚| j        j        j        }|                      |                     |¬¦  «        ¦  «        }|                     d¦  «                             dd¦  «        }| j	         
                    |dd¦  «        }	t          j        |	|gd¬	¦  «        }
|r|
|                      |
||¦  «        z   }
n|
|                      | j        ¦  «        z   }
|
S )
NzInput image size (Ú*z) doesn't match model (z8). You should try to set `interpolate_pos_encoding=True`)rY   r,   r   r.   rQ   )rS   r4   ra   r;   ÚweightrY   r]   ÚflattenÚ	transposer8   rB   r   rc   rl   r?   r-   )rD   rm   rl   Ú
batch_sizer:   rG   rH   Útarget_dtypeÚpatch_embedsÚclass_embedsrF   s              r"   ÚforwardzIdeficsVisionEmbeddings.forwardŽ   sc  € Ø2>Ô2DÑ/ˆ
�L &¨%Ø'ð 	Ø˜œÒ(Ð(¨E°T´_Ò,DÐ,DÝ ðu¨ð uð u°%ð uð uØœðuð uØ+/¬?ðuð uð uñô ð ð
 Ô+Ô2Ô8ˆØ×+Ò+¨L¯OªOÀ,¨OÑ,OÔ,OÑPÔPˆà#×+Ò+¨AÑ.Ô.×8Ò8¸¸AÑ>Ô>ˆàÔ+×2Ò2°:¸qÀ"ÑEÔEˆÝ”Y ¨lÐ;ÀÐCÑCÔCˆ
ð $ð 	QØ# d×&CÒ&CÀJÐPVÐX]Ñ&^Ô&^Ñ^ˆJˆJà# d×&=Ò&=¸dÔ>OÑ&PÔ&PÑPˆJàÐr!   )F)r   r   r   r   r1   r   ÚTensorrW   rl   r   Úboolrw   Ú__classcell__©rE   s   @r"   r$   r$   E   sÂ   ø€ € € € € ðqÐ2ð qð qð qð qð qð qð./Q°5´<ð /QÈð /QÐUXð /QÐ]bÔ]ið /Qð /Qð /Qð /Qðbð  EÔ$5ð ÐQUð ÐbgÔbnð ð ð ð ð ð ð ð r!   r$   ç        ÚmoduleÚqueryÚkeyÚvalueÚattention_maskÚscalingÚdropoutc                 óÀ  — t          j        ||                     dd¦  «        ¦  «        |z  }|�||z   }t          j                             |dt           j        ¬¦  «                             |j        ¦  «        }t          j         	                    ||| j
        ¬¦  «        }t          j        ||¦  «        }	|	                     dd¦  «                             ¦   «         }	|	|fS )Nr.   rO   )rR   rY   )ÚpÚtrainingr   r,   )r   Úmatmulrr   r   r_   ÚsoftmaxÚfloat32r]   rY   rƒ   r†   Ú
contiguous)
r}   r~   r   r€   r�   r‚   rƒ   ÚkwargsÚattn_weightsÚattn_outputs
             r"   Úeager_attention_forwardrŽ   ©   sÃ   € õ ”<  s§}¢}°R¸Ñ'<Ô'<Ñ=Ô=ÀÑG€LØÐ!Ø# nÑ4ˆå”=×(Ò(¨¸2ÅUÄ]Ð(ÑSÔS×VÒVÐW\ÔWbÑcÔc€LÝ”=×(Ò(¨¸È6Ì?Ð(Ñ[Ô[€Lå”,˜|¨UÑ3Ô3€KØ×'Ò'¨¨1Ñ-Ô-×8Ò8Ñ:Ô:€Kà˜Ð$Ð$r!   c                   ó”   ‡ — e Zd ZdZdefˆ fd„Z	 d
dej        dej        dz  dee	         de
ej        ej        dz  f         fd	„Zˆ xZS )ÚIdeficsVisionAttentionz=Multi-headed attention from 'Attention Is All You Need' paperr%   c                 ó‚  •— t          ¦   «                              ¦   «          || _        |j        | _        |j        | _        | j        | j        z  | _        | j        | j        z  | j        k    r t          d| j        › d| j        › d�¦  «        ‚| j        dz  | _	        |j
        | _        d| _        t          j        | j        | j        ¦  «        | _        t          j        | j        | j        ¦  «        | _        t          j        | j        | j        ¦  «        | _        t          j        | j        | j        ¦  «        | _        d S )Nz;embed_dim must be divisible by num_heads (got `embed_dim`: z and `num_heads`: z).g      à¿F)r0   r1   r%   r2   r3   Únum_attention_headsÚ	num_headsÚhead_dimra   ÚscaleÚattention_dropoutrƒ   Ú	is_causalr   ÚLinearÚk_projÚv_projÚq_projÚout_projrC   s     €r"   r1   zIdeficsVisionAttention.__init__Ã   s  ø€ Ý‰Œ×ÒÑÔÐØˆŒØÔ+ˆŒØÔ3ˆŒØœ¨$¬.Ñ8ˆŒØŒ=˜4œ>Ñ)¨T¬^Ò;Ð;Ýð'ÈdÌnð 'ð 'Ø”Nð'ð 'ð 'ñô ð ð ”] DÑ(ˆŒ
ØÔ/ˆŒØˆŒå”i ¤°´Ñ?Ô?ˆŒÝ”i ¤°´Ñ?Ô?ˆŒÝ”i ¤°´Ñ?Ô?ˆŒÝœ	 $¤.°$´.ÑAÔAˆŒˆˆr!   Nr   r�   r‹   rI   c                 óÄ  — |j         dd…         }g |¢d‘| j        ‘R }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|                     |¦  «                             dd¦  «        }|                     |¦  «                             dd¦  «        }|                     |¦  «                             dd¦  «        }t          j        | j	        j
        t          ¦  «        }	 |	| ||||f| j        | j        | j        sdn| j        dœ|¤Ž\  }
} |
j        g |¢d‘R Ž                      ¦   «         }
|                      |
¦  «        }
|
|fS )z#Input shape: Batch x Time x ChannelNr.   r   r,   r|   )r—   r‚   rƒ   )rS   r”   r›   r™   rš   rb   rr   r   Úget_interfacer%   Ú_attn_implementationrŽ   r—   r•   r†   rƒ   rV   rŠ   rœ   )rD   r   r�   r‹   Úinput_shapeÚhidden_shapeÚqueriesÚkeysÚvaluesÚattention_interfacer�   rŒ   s               r"   rw   zIdeficsVisionAttention.forward×   s�  € ð $Ô)¨#¨2¨#Ô.ˆà8˜Ð8 bÐ8¨$¬-Ð8Ð8ˆØ—+’+˜mÑ,Ô,ˆØ�{Š{˜=Ñ)Ô)ˆØ—’˜]Ñ+Ô+ˆà—,’,˜|Ñ,Ô,×6Ò6°q¸!Ñ<Ô<ˆØ�yŠy˜Ñ&Ô&×0Ò0°°AÑ6Ô6ˆØ—’˜\Ñ*Ô*×4Ò4°Q¸Ñ:Ô:ˆå(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð %8Ð$7ØØØØØð
%
ð ”nØ”JØ#œ}Ð>�C�C°$´,ð
%
ð 
%
ð ð
%
ð 
%
Ñ!ˆ�\ð *�kÔ)Ð;¨;Ð;¸Ð;Ð;Ð;×FÒFÑHÔHˆØ—m’m KÑ0Ô0ˆØ˜LÐ(Ð(r!   ©N)r   r   r   r   r   r1   r   rx   r   r   r   rw   rz   r{   s   @r"   r�   r�   À   s¸   ø€ € € € € ØGÐGðBÐ2ð Bð Bð Bð Bð Bð Bð. /3ð%)ð %)à”|ð%)ð œ tÑ+ð%)ð Ð+Ô,ð	%)ð
 
ˆuŒ|˜Uœ\¨DÑ0Ð0Ô	1ð%)ð %)ð %)ð %)ð %)ð %)ð %)ð %)r!   r�   c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚIdeficsVisionMLPc                 ó  •— t          ¦   «                              ¦   «          || _        t          |j                 | _        t          j        |j        |j	        ¦  «        | _
        t          j        |j	        |j        ¦  «        | _        d S r¦   )r0   r1   r%   r   Ú
hidden_actÚactivation_fnr   r˜   r2   Úintermediate_sizeÚfc1Úfc2rC   s     €r"   r1   zIdeficsVisionMLP.__init__  sf   ø€ Ý‰Œ×ÒÑÔÐØˆŒÝ# FÔ$5Ô6ˆÔÝ”9˜VÔ/°Ô1IÑJÔJˆŒÝ”9˜VÔ5°vÔ7IÑJÔJˆŒˆˆr!   r   rI   c                 ó„   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|S r¦   )r­   r«   r®   )rD   r   s     r"   rw   zIdeficsVisionMLP.forward  s=   € ØŸš Ñ/Ô/ˆØ×*Ò*¨=Ñ9Ô9ˆØŸš Ñ/Ô/ˆØÐr!   )r   r   r   r1   r   rx   rw   rz   r{   s   @r"   r¨   r¨      sc   ø€ € € € € ðKð Kð Kð Kð Kð U¤\ð °e´lð ð ð ð ð ð ð ð r!   r¨   c                   óf   ‡ — e Zd Zdefˆ fd„Zdej        dej        dee         dej	        fd„Z
ˆ xZS )ÚIdeficsVisionEncoderLayerr%   c                 óD  •— t          ¦   «                              ¦   «          |j        | _        t	          |¦  «        | _        t          j        | j        |j        ¬¦  «        | _	        t          |¦  «        | _        t          j        | j        |j        ¬¦  «        | _        d S ©N)Úeps)r0   r1   r2   r3   r�   Ú	self_attnr   Ú	LayerNormÚlayer_norm_epsÚlayer_norm1r¨   ÚmlpÚlayer_norm2rC   s     €r"   r1   z"IdeficsVisionEncoderLayer.__init__  s   ø€ Ý‰Œ×ÒÑÔÐØÔ+ˆŒÝ/°Ñ7Ô7ˆŒÝœ<¨¬¸FÔ<QÐRÑRÔRˆÔÝ# FÑ+Ô+ˆŒÝœ<¨¬¸FÔ<QÐRÑRÔRˆÔÐÐr!   r   r�   r‹   rI   c                 óÆ   — |}|                       |¦  «        } | j        d||dœ|¤Ž\  }}||z   }|}|                      |¦  «        }|                      |¦  «        }||z   }|S )N)r   r�   r    )r¸   rµ   rº   r¹   )rD   r   r�   r‹   ÚresidualÚ_s         r"   rw   z!IdeficsVisionEncoderLayer.forward  s“   € ð !ˆà×(Ò(¨Ñ7Ô7ˆØ)˜4œ>ð 
Ø'Ø)ð
ð 
ð ð
ð 
Ñˆ�qð
 ! =Ñ0ˆà ˆØ×(Ò(¨Ñ7Ô7ˆØŸš Ñ/Ô/ˆØ  =Ñ0ˆàÐr!   )r   r   r   r   r1   r   rx   r   r   r   rw   rz   r{   s   @r"   r±   r±     s“   ø€ € € € € ðSÐ2ð Sð Sð Sð Sð Sð Sðà”|ðð œðð Ð+Ô,ð	ð
 
Ô	ðð ð ð ð ð ð ð r!   r±   c                   ó\   ‡ — e Zd ZdZdefˆ fd„Z	 d	dej        dz  dee	         de
fd„Zˆ xZS )
ÚIdeficsVisionEncoderz¿
    Transformer encoder consisting of `config.num_hidden_layers` self attention layers. Each layer is a
    [`IdeficsVisionEncoderLayer`].

    Args:
        config: IdeficsVisionConfig
    r%   c                 óÔ   •‡— t          ¦   «                              ¦   «          ‰| _        t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        d| _        d S )Nc                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS r    )r±   )Ú.0r½   r%   s     €r"   ú
<listcomp>z1IdeficsVisionEncoder.__init__.<locals>.<listcomp>>  s"   ø€ Ð$pÐ$pÐ$pÈ1Õ%>¸vÑ%FÔ%FÐ$pÐ$pÐ$pr!   F)	r0   r1   r%   r   Ú
ModuleListÚrangeÚnum_hidden_layersÚlayersÚgradient_checkpointingrC   s    `€r"   r1   zIdeficsVisionEncoder.__init__;  sb   øø€ Ý‰Œ×ÒÑÔÐØˆŒÝ”mÐ$pÐ$pÐ$pÐ$pÕPUÐV\ÔVnÑPoÔPoÐ$pÑ$pÔ$pÑqÔqˆŒØ&+ˆÔ#Ð#Ð#r!   Nr�   r‹   rI   c                 óN   — |}| j         D ]} |||fi |¤Ž}Œt          |¬¦  «        S )N)r   )rÇ   r	   )rD   Úinputs_embedsr�   r‹   r   Úencoder_layers         r"   rw   zIdeficsVisionEncoder.forwardA  s^   € ð &ˆØ!œ[ð 	ð 	ˆMØ)˜MØØðð ð ðð ˆMˆMõ Ø+ð
ñ 
ô 
ð 	
r!   r¦   )r   r   r   r   r   r1   r   rx   r   r   r	   rw   rz   r{   s   @r"   r¿   r¿   2  s˜   ø€ € € € € ðð ð,Ð2ð ,ð ,ð ,ð ,ð ,ð ,ð /3ð
ð 
ð œ tÑ+ð
ð Ð+Ô,ð	
ð
 
ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r!   r¿   c                   óZ   ‡ — e Zd Zdefˆ fd„Z	 	 d	dej        dz  dedz  dee	z  fd„Z
ˆ xZS )
ÚIdeficsVisionTransformerr%   c                 ó4  •— t          ¦   «                              ¦   «          || _        |j        }t	          |¦  «        | _        t          j        ||j        ¬¦  «        | _	        t          |¦  «        | _        t          j        ||j        ¬¦  «        | _        d S r³   )r0   r1   r%   r2   r$   rF   r   r¶   r·   Úpre_layrnormr¿   ÚencoderÚpost_layernorm)rD   r%   r3   rE   s      €r"   r1   z!IdeficsVisionTransformer.__init__V  s€   ø€ Ý‰Œ×ÒÑÔÐØˆŒØÔ&ˆ	å1°&Ñ9Ô9ˆŒÝœL¨¸Ô8MÐNÑNÔNˆÔÝ+¨FÑ3Ô3ˆŒÝ œl¨9¸&Ô:OÐPÑPÔPˆÔÐÐr!   NFrm   rl   rI   c                 ó  — |€t          d¦  «        ‚|                      ||¬¦  «        }|                      |¦  «        } | j        dd|i|¤Ž}|j        }|dd…ddd…f         }|                      |¦  «        }t          ||¬¦  «        S )z
        Returns:

        Nz You have to specify pixel_values)rl   rÊ   r   )r   Úpooler_outputr    )ra   rF   rÏ   rÐ   r   rÑ   r
   )rD   rm   rl   r‹   r   Úencoder_outputsr   Úpooled_outputs           r"   rw   z IdeficsVisionTransformer.forwarda  s½   € ð ÐÝÐ?Ñ@Ô@Ð@àŸš¨ÐOg˜ÑhÔhˆØ×)Ò)¨-Ñ8Ô8ˆà+7¨4¬<ð ,
ð ,
Ø'ð,
àð,
ð ,
ˆð
 ,Ô=ÐØ)¨!¨!¨!¨Q°°°¨'Ô2ˆØ×+Ò+¨MÑ:Ô:ˆå)Ø/Ø'ð
ñ 
ô 
ð 	
r!   )NF)r   r   r   r   r1   r   r   ry   r   r
   rw   rz   r{   s   @r"   rÍ   rÍ   U  s›   ø€ € € € € ðQÐ2ð Qð Qð Qð Qð Qð Qð 26Ø05ð
ð 
àÔ'¨$Ñ.ð
ð #'¨¡+ð
ð
 
Ð+Ñ	+ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r!   rÍ   )r|   )'r   rT   Úcollections.abcr   Údataclassesr   r   r   Úactivationsr   Úmodeling_layersr   Úmodeling_outputsr	   r
   Úmodeling_utilsr   Úprocessing_utilsr   Úutilsr   r   r   Úconfiguration_ideficsr   Ú
get_loggerr   r[   r   ÚModuler$   rx   r^   rŽ   r�   r¨   r±   r¿   rÍ   r    r!   r"   ú<module>rá      sÒ  ðð [Ð Zà €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø !Ð !Ð !Ð !Ð !Ð !à €€€Ø Ð Ð Ð Ð Ð à !Ð !Ð !Ð !Ð !Ð !Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø &Ð &Ð &Ð &Ð &Ð &ðð ð ð ð ð ð ð ð ð ð
 7Ð 6Ð 6Ð 6Ð 6Ð 6ð 
ˆÔ	˜HÑ	%Ô	%€ð ð<ð <ð <ð <ð <˜{ñ <ô <ñ „ð<ð:`ð `ð `ð `ð `˜bœiñ `ô `ð `ðV ð%ð %ØŒIð%àŒ<ð%ð 
Œð%ð Œ<ð	%ð
 ”L 4Ñ'ð%ð ð%ð ð%ð %ð %ð %ð.<)ð <)ð <)ð <)ð <)˜RœYñ <)ô <)ð <)ð@ð ð ð ð �r”yñ ô ð ð ð ð ð ð Ð :ñ ô ð ðD
ð 
ð 
ð 
ð 
˜2œ9ñ 
ô 
ð 
ðF(
ð (
ð (
ð (
ð (
˜rœyñ (
ô (
ð (
ð (
ð (
r!   