+
    œ°³j®™  ã                   óæ  € R t ^ RIHt ^ RIHt ^ RIHt ^ RIt^ RIHt ^RI	H
t ^RIHt ^RIHt ^R	IHt ^R
IHtHtHt ^RIHtHt ^RIHt ^RIHtHtHtHtH t  ^RI!H"t"H#t# ^RI$H%t% ^RI&H't'H(t(H)t) ]PT                  ! ]+4      t,R R lt-R R lt.R R lt/]! RR7      ] ! R R]4      4       4       t0]! RR7      ] ! R R]4      4       4       t1]] ! R R]4      4       4       t2 ! R  R!]Pf                  4      t4 ! R" R#]Pf                  4      t5RAR$ R% llt6 ! R& R']Pf                  4      t7 ! R( R)]Pf                  4      t8 ! R* R+]4      t9R, R- lt:] ! R. R/]4      4       t; ! R0 R1]Pf                  4      t<]! R2R7       ! R3 R4];4      4       t=]! R5R7       ! R6 R7];4      4       t>] ! R8 R9];4      4       t?] ! R: R;];4      4       t@] ! R< R=];4      4       tA]! R>R7       ! R? R@];4      4       tB. RBOtCR# )CzPyTorch CLIP model.)ÚCallable)Ú	dataclass)ÚAnyN)Únn)Úinitialization)ÚACT2FN)Úcreate_causal_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithPoolingÚImageClassifierOutput)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚModelOutputÚTransformersKwargsÚauto_docstringÚloggingÚ	torch_int)Úcan_return_tupleÚmerge_with_config_defaults)Úcapture_outputs)Ú
CLIPConfigÚCLIPTextConfigÚCLIPVisionConfigc                óX   € V ^8„  d   QhR\         P                  R\         P                  /# )é   ÚlogitsÚreturn©ÚtorchÚTensor)Úformats   "Úg/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/clip/modeling_clip.pyÚ__annotate__r$   /   s&   € ÷ `ñ `œUŸ\™\ð `¬e¯l©lñ `ó    c                 ó”   € \         P                  P                  V \        P                  ! \        V 4      V P                  R 7      4      # )©Údevice)r   Ú
functionalÚcross_entropyr    ÚarangeÚlenr(   )r   s   &r#   Úcontrastive_lossr-   /   s/   € Ü�=‰=×&Ñ& v¬u¯|ª|¼CÀ»KÐPV×P]ÑP]Ô/^Ó_Ð_r%   c                óX   € V ^8„  d   QhR\         P                  R\         P                  /# )r   Ú
similarityr   r   )r"   s   "r#   r$   r$   3   s"   € ÷ -ñ -¬E¯L©Lð -¼U¿\¹\ñ -r%   c                 ó`   € \        V 4      p\        V P                  4      pW,           R ,          # )g       @)r-   ÚT)r/   Úcaption_lossÚ
image_losss   &  r#   Úimage_text_contrastive_lossr4   3   s(   € Ü# JÓ/€LÜ! *§,¡,Ó/€JØÕ%¨Õ,Ð,r%   c                óX   € V ^8„  d   QhR\         P                  R\         P                  /# )r   Útensorr   r   )r"   s   "r#   r$   r$   9   s"   € ÷ ñ œUŸ\™\ð ¬e¯l©lñ r%   c                ó”   € \         P                  ! V ^4      p\         P                  ! VRRR7      p\         P                  ! VR4      pV# )z±
This method is equivalent to tensor.norm(p=2, dim=-1, keepdim=True) and used to make
model `executorch` exportable. See issue https://github.com/pytorch/executorch/issues/3566
T)ÚdimÚkeepdimç      à?éÿÿÿÿ)r    ÚpowÚsum)r6   Úsquare_tensorÚ
sum_tensorÚnormed_tensors   &   r#   Ú_get_vector_normrA   9   s<   € ô
 —I’I˜f aÓ(€MÜ—’˜=¨b¸$Ô?€JÜ—I’I˜j¨#Ó.€MØÐr%   z}
    Base class for vision model's outputs that also contains image embeddings of the pooling of the last hidden states.
    )Úcustom_introc                   ó@   a € ] tR t^Dt o RtRtRtRtRtV 3R lt	Rt
V tR# )ÚCLIPVisionModelOutputzì
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.
Nc                óú   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[S[ P                  R3,          R,          ;R&   S[S[ P                  R3,          R,          ;R&   # )r   NÚimage_embedsÚlast_hidden_state.Úhidden_statesÚ
attentions©r    ÚFloatTensorÚtuple)r"   Ú__classdict__s   "€r#   r$   Ú"CLIPVisionModelOutput.__annotate__D   sy   ø‡ ‚ ñ ×#Ñ# dÕ*Ñ1ñ ñ ×(Ñ(¨4Õ/Ñ6ñ ñ ™×*Ñ*¨CÐ/Õ0°4Õ7Ñ>ñ ñ ‘e×'Ñ'¨Ð,Õ-°Õ4Ñ;ò r%   © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rF   rG   rH   rI   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©rM   s   @r#   rD   rD   D   s(   ø‡ € ñð
 .2€LØ26ÐØ:>€MØ7;€J÷ ƒ r%   rD   ze
    Base class for text model's outputs that also contains a pooling of the last hidden states.
    c                   ó@   a € ] tR t^Vt o RtRtRtRtRtV 3R lt	Rt
V tR# )ÚCLIPTextModelOutputzê
text_embeds (`torch.FloatTensor` of shape `(batch_size, output_dim)` *optional* returned when model is initialized with `with_projection=True`):
    The text embeddings obtained by applying the projection layer to the pooler_output.
Nc                óú   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[S[ P                  R3,          R,          ;R&   S[S[ P                  R3,          R,          ;R&   # )r   NÚtext_embedsrG   .rH   rI   rJ   )r"   rM   s   "€r#   r$   Ú CLIPTextModelOutput.__annotate__V   sy   ø‡ ‚ ñ ×"Ñ" TÕ)Ñ0ñ ñ ×(Ñ(¨4Õ/Ñ6ñ ñ ™×*Ñ*¨CÐ/Õ0°4Õ7Ñ>ñ ñ ‘e×'Ñ'¨Ð,Õ-°Õ4Ñ;ò r%   rO   )rP   rQ   rR   rS   rT   r\   rG   rH   rI   rU   rV   rW   rX   s   @r#   rZ   rZ   V   s(   ø‡ € ñð
 -1€KØ26ÐØ:>€MØ7;€J÷ ƒ r%   rZ   c                   ó^   a € ] tR t^ht o RtRtRtRtRtRt	Rt
RtV 3R lR ltV 3R ltRtV tR# )Ú
CLIPOutputae  
loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `return_loss` is `True`):
    Contrastive loss for image-text similarity.
logits_per_image (`torch.FloatTensor` of shape `(image_batch_size, text_batch_size)`):
    The scaled dot product scores between `image_embeds` and `text_embeds`. This represents the image-text
    similarity scores.
logits_per_text (`torch.FloatTensor` of shape `(text_batch_size, image_batch_size)`):
    The scaled dot product scores between `text_embeds` and `image_embeds`. This represents the text-image
    similarity scores.
text_embeds (`torch.FloatTensor` of shape `(batch_size, output_dim`):
    The text embeddings obtained by applying the projection layer to the pooled output of [`CLIPTextModel`].
image_embeds (`torch.FloatTensor` of shape `(batch_size, output_dim`):
    The image embeddings obtained by applying the projection layer to the pooled output of [`CLIPVisionModel`].
text_model_output (`BaseModelOutputWithPooling`):
    The output of the [`CLIPTextModel`].
vision_model_output (`BaseModelOutputWithPooling`):
    The output of the [`CLIPVisionModel`].
Nc                ó0   <€ V ^8„  d   QhRS[ S[,          /# ©r   r   )rL   r   )r"   rM   s   "€r#   r$   ÚCLIPOutput.__annotate__†   s   ø€ ÷ _ñ _™%¡�*ñ _r%   c                ó’   € \         ;QJ d"    . R  V P                  4        4       F  NK  	  5# ! R  V P                  4        4       4      # )c              3   ór   "  € T F-  p\        V\        4      '       d   VP                  4       MTx € K/  	  R # 5i©N)Ú
isinstancer   Úto_tuple)Ú.0Úvs   & r#   Ú	<genexpr>Ú&CLIPOutput.to_tuple.<locals>.<genexpr>‡   s)   é € Ð^ÑP]È1¤Z°´;×%?Ò%?�Q—Z‘Z”\ÀQÔFÓP]ùs   ‚57)rL   Úvalues©Úselfs   &r#   rg   ÚCLIPOutput.to_tuple†   s8   € ßŒuÑ^ÐPT×P[ÑP[ÔP]Ó^�uÐ^ˆuÑ^ÐPT×P[ÑP[ÔP]Ó^Ó^Ð^r%   c                ó  <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[;R&   S[;R&   # )	r   NÚlossÚlogits_per_imageÚlogits_per_textr\   rF   Útext_model_outputÚvision_model_output)r    rK   r   )r"   rM   s   "€r#   r$   rb   h   s—   ø‡ ‚ ñ, ×
Ñ
˜dÕ
"Ñ)ñ- ñ. ×'Ñ'¨$Õ.Ñ5ñ/ ñ0 ×&Ñ&¨Õ-Ñ4ñ1 ñ2 ×"Ñ" TÕ)Ñ0ñ3 ñ4 ×#Ñ# dÕ*Ñ1ñ5 ñ6 2Ñ8ñ7 ñ8 4Ñ:ò9 r%   rO   )rP   rQ   rR   rS   rT   rq   rr   rs   r\   rF   rt   ru   rg   rU   rV   rW   rX   s   @r#   r_   r_   h   sE   ø‡ € ñð& &*€DØ15ÐØ04€OØ,0€KØ-1€LØ48ÐØ6:Ð÷_ð _÷= ƒ r%   r_   c                   óf   a a€ ] tR t^Št oV3R lV 3R lltV3R lR ltRV3R lR lltRtVtV ;t	# )	ÚCLIPVisionEmbeddingsc                ó    <€ V ^8„  d   QhRS[ /# ©r   Úconfig©r   )r"   rM   s   "€r#   r$   Ú!CLIPVisionEmbeddings.__annotate__‹   s   ø€ ÷ jñ jÑ/ñ jr%   c                ó  <€ \         SV `  4        Wn        VP                  V n        VP
                  V n        VP                  V n        \        P                  ! \        P                  ! V P                  4      4      V n        \        P                  ! VP                  V P                  V P                  V P                  R R7      V n        V P
                  V P                  ,          ^,          V n        V P                  ^,           V n        \        P"                  ! V P                   V P                  4      V n        \        P&                  ! \        P(                  ! V P                   4      P+                  R4      R R7      V n        R# )F)Úin_channelsÚout_channelsÚkernel_sizeÚstrideÚbias©Ú
persistentN©é   r;   )ÚsuperÚ__init__rz   Úhidden_sizeÚ	embed_dimÚ
image_sizeÚ
patch_sizer   Ú	Parameterr    ÚrandnÚclass_embeddingÚConv2dÚnum_channelsÚpatch_embeddingÚnum_patchesÚnum_positionsÚ	EmbeddingÚposition_embeddingÚBufferr+   ÚexpandÚposition_ids©rn   rz   Ú	__class__s   &&€r#   rˆ   ÚCLIPVisionEmbeddings.__init__‹   s  ø€ Ü‰ÑÔØŒØ×+Ñ+ˆŒØ ×+Ñ+ˆŒØ ×+Ñ+ˆŒä!Ÿ|š|¬E¯KªK¸¿¹Ó,GÓHˆÔä!ŸyšyØ×+Ñ+ØŸ™ØŸ™Ø—?‘?Øô 
ˆÔð !ŸO™O¨t¯©Õ>À1ÕDˆÔØ!×-Ñ-°Õ1ˆÔÜ"$§,¢,¨t×/AÑ/AÀ4Ç>Á>Ó"RˆÔÜŸIšI¤e§l¢l°4×3EÑ3EÓ&F×&MÑ&MÈgÓ&VÐchÔiˆÖr%   c                óZ   <€ V ^8„  d   QhRS[ P                  RS[RS[RS[ P                  /# )r   Ú
embeddingsÚheightÚwidthr   )r    r!   Úint)r"   rM   s   "€r#   r$   r|   ¡   s;   ø€ ÷ 'Dñ 'D±5·<±<ð 'DÉð 'DÑUXð 'DÑ]b×]iÑ]iñ 'Dr%   c                ó  € VP                   ^,          ^,
          pV P                  P                  P                  ^ 4      pVP                   ^,          ^,
          p\        P
                  P                  4       '       g(   WF8X  d"   W#8X  d   V P                  V P                  4      # VR,          pVR,          pVP                   R,          p	W P                  ,          p
W0P                  ,          p\        VR,          4      pVP                  ^WÌV	4      pVP                  ^ ^^^4      p\        P                  P                  VW«3RRR7      pVP                  ^ ^^^4      P                  ^RV	4      p\        P                   ! Wx3^R7      # )	aÐ  
This method allows to interpolate the pre-trained position encodings, to be able to use the model on higher resolution
images. This method is also adapted to support torch.jit tracing.

Adapted from:
- https://github.com/facebookresearch/dino/blob/de9ee3df6cf39fac952ab558447af1fa1365362a/vision_transformer.py#L174-L194, and
- https://github.com/facebookresearch/dinov2/blob/e1277af2ba9496fbadf7aec6eba56e8d882d1e35/dinov2/models/vision_transformer.py#L179-L211
r:   ÚbicubicF)ÚsizeÚmodeÚalign_corners©r8   )ºNNN:Nr†   N)r¨   ºr†   NNr;   )Úshaper–   ÚweightÚ	unsqueezer    ÚjitÚ
is_tracingr™   rŒ   r   ÚreshapeÚpermuter   r)   ÚinterpolateÚviewÚcat)rn   rž   rŸ   r    r“   r–   r”   Úclass_pos_embedÚpatch_pos_embedr8   Ú
new_heightÚ	new_widthÚsqrt_num_positionss   &&&&         r#   Úinterpolate_pos_encodingÚ-CLIPVisionEmbeddings.interpolate_pos_encoding¡   s[  € ð !×&Ñ& qÕ)¨AÕ-ˆØ!×4Ñ4×;Ñ;×EÑEÀaÓHÐØ*×0Ñ0°Õ3°aÕ7ˆô �y‰y×#Ñ#×%Ò%¨+Ô*FÈ6Ì?Ø×*Ñ*¨4×+<Ñ+<Ó=Ð=à,¨UÕ3ˆØ,¨UÕ3ˆà×Ñ˜rÕ"ˆàŸ™Õ.ˆ
ØŸ_™_Õ,ˆ	ä& }°cÕ'9Ó:ÐØ)×1Ñ1°!Ð5GÐ]`ÓaˆØ)×1Ñ1°!°Q¸¸1Ó=ˆäŸ-™-×3Ñ3ØØÐ(ØØð	 4ó 
ˆð *×1Ñ1°!°Q¸¸1Ó=×BÑBÀ1ÀbÈ#ÓNˆä�yŠy˜/Ð;ÀÔCÐCr%   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   Úpixel_valuesr   )r    rK   r!   )r"   rM   s   "€r#   r$   r|   Ê   s(   ø€ ÷ ñ ¡E×$5Ñ$5ð ÑZ_×ZfÑZfñ r%   c                ó‚  € VP                   w  r4rVV'       gM   WPP                  8w  g   W`P                  8w  d-   \        R V RV RV P                   RV P                   R2	4      hV P                  P                  P
                  pV P                  VP                  VR7      4      pVP                  ^4      P                  ^^4      pV P                  P                  V^R4      p	\        P                  ! W˜.^R7      p
V'       d   W P                  W¥V4      ,           p
V
# W P                  V P                  4      ,           p
V
# )zInput image size (Ú*z) doesn't match model (z).)Údtyper§   r;   )rª   r‹   Ú
ValueErrorr’   r«   r¿   ÚtoÚflattenÚ	transposer�   r˜   r    r³   r¹   r–   r™   )rn   r¼   r¹   Ú
batch_sizeÚ_rŸ   r    Útarget_dtypeÚpatch_embedsÚclass_embedsrž   s   &&&        r#   ÚforwardÚCLIPVisionEmbeddings.forwardÊ   s$  € Ø'3×'9Ñ'9Ñ$ˆ
�vß'¨V·±Ô-FÈ%×SbÑSbÔJbÜØ$ V H¨A¨e¨WÐ4KÈDÏOÉOÐK\Ð\]Ð^b×^mÑ^mÐ]nÐnpÐqóð ð ×+Ñ+×2Ñ2×8Ñ8ˆØ×+Ñ+¨L¯O©OÀ,¨OÓ,OÓPˆØ#×+Ñ+¨AÓ.×8Ñ8¸¸AÓ>ˆà×+Ñ+×2Ñ2°:¸qÀ"ÓEˆÜ—Y’Y Ð;ÀÔCˆ
ß#Ø#×&CÑ&CÀJÐX]Ó&^Õ^ˆJð Ðð $×&=Ñ&=¸d×>OÑ>OÓ&PÕPˆJØÐr%   )
r�   rz   rŠ   r‹   r“   r”   r’   rŒ   r–   r™   ©F)
rP   rQ   rR   rS   rˆ   r¹   rÉ   rV   rW   Ú__classcell__©r›   rM   s   @@r#   rw   rw   Š   s-   ù‡ € ÷jó j÷,'Dð 'D÷R÷ ò r%   rw   c                   óT   a a€ ] tR t^Ýt oV3R lV 3R lltRV3R lR lltRtVtV ;t# )ÚCLIPTextEmbeddingsc                ó    <€ V ^8„  d   QhRS[ /# ry   ©r   )r"   rM   s   "€r#   r$   ÚCLIPTextEmbeddings.__annotate__Þ   s   ø€ ÷ vñ v™~ñ vr%   c                óh  <€ \         SV `  4        VP                  p\        P                  ! VP
                  V4      V n        \        P                  ! VP                  V4      V n        \        P                  ! \        P                  ! VP                  4      P                  R4      RR7      V n        R# )r†   Frƒ   Nr…   )r‡   rˆ   r‰   r   r•   Ú
vocab_sizeÚtoken_embeddingÚmax_position_embeddingsr–   r—   r    r+   r˜   r™   ©rn   rz   rŠ   r›   s   && €r#   rˆ   ÚCLIPTextEmbeddings.__init__Þ   s|   ø€ Ü‰ÑÔØ×&Ñ&ˆ	ä!Ÿ|š|¨F×,=Ñ,=¸yÓIˆÔÜ"$§,¢,¨v×/MÑ/MÈyÓ"YˆÔô ŸIšI¤e§l¢l°6×3QÑ3QÓ&R×&YÑ&YÐZaÓ&bÐotÔuˆÖr%   c                ó¬   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  /# )r   Ú	input_idsNr™   Úinputs_embedsr   )r    Ú
LongTensorrK   r!   )r"   rM   s   "€r#   r$   rÒ   è   sX   ø€ ÷ ñ á×#Ñ# dÕ*ðñ ×&Ñ&¨Õ-ðñ ×(Ñ(¨4Õ/ð	ñ
 
�‰ñr%   c                óh  € Ve   VP                   R,          MVP                   R,          pV P                  P                  P                   ^ ,          pWE8”  d   \        RV RV 24      hVf   V P                  RR V13,          pVf   V P                  V4      pV P                  V4      pW6,           pV# )NzRSequence length must be less than max_position_embeddings (got `sequence length`: z and max_position_embeddings: r¨   r;   éþÿÿÿ)rª   r–   r«   rÀ   r™   rÕ   )rn   rÚ   r™   rÛ   Ú
seq_lengthÚmax_position_embeddingÚposition_embeddingsrž   s   &&&&    r#   rÉ   ÚCLIPTextEmbeddings.forwardè   sÁ   € ð -6Ò,A�Y—_‘_ RÖ(À}×GZÑGZÐ[]ÕG^ˆ
Ø!%×!8Ñ!8×!?Ñ!?×!EÑ!EÀaÕ!HÐàÔ.ÜØdØ�,Ð<Ð=SÐ<TðVóð ð
 ÒØ×,Ñ,¨Q°°°¨^Õ<ˆLàÒ Ø ×0Ñ0°Ó;ˆMà"×5Ñ5°lÓCÐØ"Õ8ˆ
àÐr%   )r–   r™   rÕ   ©NNN©	rP   rQ   rR   rS   rˆ   rÉ   rV   rW   rÌ   rÍ   s   @@r#   rÏ   rÏ   Ý   s    ù‡ € ÷vó v÷÷ ò r%   rÏ   c                ó   € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R\        P                  R\        P                  R,          R\        R\        R	\
        \        ,          /# )
r   ÚmoduleÚqueryÚkeyÚvalueÚattention_maskNÚscalingÚdropoutÚkwargs)r   ÚModuler    r!   Úfloatr   r   )r"   s   "r#   r$   r$     sw   € ÷ %ñ %Ü�I‰Ið%ä�<‰<ð%ô 
�‰ð%ô �<‰<ð	%ô
 —L‘L 4Õ'ð%ô ð%ô ð%ô Ô'Õ(ñ%r%   c                 óÎ  € \         P                  ! WP                  RR4      4      V,          pVe	   W„,           p\        P                  P                  VR\         P                  R7      P                  VP                  4      p\        P                  P                  W†V P                  R7      p\         P                  ! Wƒ4      p	V	P                  ^^4      P                  4       p	W˜3# )r†   )r8   r¿   )ÚpÚtrainingr;   rÞ   )r    ÚmatmulrÃ   r   r)   ÚsoftmaxÚfloat32rÁ   r¿   rì   rò   Ú
contiguous)
ræ   rç   rè   ré   rê   rë   rì   rí   Úattn_weightsÚattn_outputs
   &&&&&&&,  r#   Úeager_attention_forwardrù     s°   € ô —<’< §}¡}°R¸Ó'<Ó=ÀÕG€LØÒ!Ø#Õ4ˆÜ—=‘=×(Ñ(¨¸2ÄUÇ]Á]Ð(ÓS×VÑVÐW\×WbÑWbÓc€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ó[€Lä—,’,˜|Ó3€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KØÐ$Ð$r%   c                   óX   a a€ ] tR tRt oRtV3R lV 3R lltRV3R lR lltRtVtV ;t	# )	ÚCLIPAttentioni  z=Multi-headed attention from 'Attention Is All You Need' paperc                ó0   <€ V ^8„  d   QhRS[ S[,          /# ry   ©r   r   )r"   rM   s   "€r#   r$   ÚCLIPAttention.__annotate__  s   ø€ ÷ Bñ BÑ/±.Õ@ñ Br%   c                ó˜  <€ \         SV `  4        Wn        VP                  V n        VP
                  V n        V P                  V P                  ,          V n        V P                  R,          V n        VP                  V n
        RV n        \        P                  ! V P                  V P                  4      V n        \        P                  ! V P                  V P                  4      V n        \        P                  ! V P                  V P                  4      V n        \        P                  ! V P                  V P                  4      V n        R# )r:   FNç      à¿)r‡   rˆ   rz   r‰   rŠ   Únum_attention_headsÚ	num_headsÚhead_dimÚscaleÚattention_dropoutrì   Ú	is_causalr   ÚLinearÚk_projÚv_projÚq_projÚout_projrš   s   &&€r#   rˆ   ÚCLIPAttention.__init__  sÍ   ø€ Ü‰ÑÔØŒØ×+Ñ+ˆŒØ×3Ñ3ˆŒØŸ™¨$¯.©.Õ8ˆŒØ—]‘] DÕ(ˆŒ
Ø×/Ñ/ˆŒØˆŒä—i’i §¡°·±Ó?ˆŒÜ—i’i §¡°·±Ó?ˆŒÜ—i’i §¡°·±Ó?ˆŒÜŸ	š	 $§.¡.°$·.±.ÓAˆŽr%   c                óÄ   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          RS[S[ P                  S[ P                  R,          3,          /# )r   rH   rê   Nrí   r   )r    r!   r   r   rL   )r"   rM   s   "€r#   r$   rþ   *  s]   ø€ ÷ %)ñ %)á—|‘|ð%)ñ Ÿ™ tÕ+ð%)ñ Ñ+Õ,ð	%)ñ
 
‰u�|‰|™UŸ\™\¨DÕ0Ð0Õ	1ñ%)r%   c                ó´  € VP                   RR p. VORNV P                  N5pV P                  V4      pV P                  V4      pV P	                  V4      pVP                  V4      P                  ^^4      pVP                  V4      P                  ^^4      pVP                  V4      P                  ^^4      p\        P                  ! V P                  P                  \        4      p	T	! V VVVV3RV P                  RV P                  '       g   RMV P                  /VB w  r«V
P                  ! . VORN5!  P!                  4       p
V P#                  V
4      p
W«3# )z#Input shape: Batch x Time x ChannelNrë   rì   ç        r;   )rª   r  r
  r  r	  r²   rÃ   r   Úget_interfacerz   Ú_attn_implementationrù   r  rò   rì   r¯   rö   r  )rn   rH   rê   rí   Úinput_shapeÚhidden_shapeÚqueriesÚkeysrl   Úattention_interfacerø   r÷   s   &&&,        r#   rÉ   ÚCLIPAttention.forward*  sR  € ð $×)Ñ)¨#¨2Ð.ˆà8˜Ð8 bÐ8¨$¯-©-Ñ8ˆØ—+‘+˜mÓ,ˆØ�{‰{˜=Ó)ˆØ—‘˜]Ó+ˆà—,‘,˜|Ó,×6Ñ6°q¸!Ó<ˆØ�y‰y˜Ó&×0Ñ0°°AÓ6ˆØ—‘˜\Ó*×4Ñ4°Q¸Ó:ˆä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØñ	%
ð —J‘Jð	%
ð  $Ÿ}Ÿ}˜}‘C°$·,±,ð	%
ð ñ	%
Ñ!ˆð "×)Ò)Ð;¨;Ð;¸Ó;×FÑFÓHˆØ—m‘m KÓ0ˆàÐ(Ð(r%   )rz   rì   rŠ   r  r  r  r  r  r
  r  r	  re   ©
rP   rQ   rR   rS   rT   rˆ   rÉ   rV   rW   rÌ   rÍ   s   @@r#   rû   rû     s#   ù‡ € ÙG÷Bó B÷%)÷ %)ò %)r%   rû   c                   óD   a a€ ] tR tRt oV 3R ltV3R lR ltRtVtV ;t# )ÚCLIPMLPiR  c                ó(  <€ \         SV `  4        Wn        \        VP                  ,          V n        \        P                  ! VP                  VP                  4      V n
        \        P                  ! VP                  VP                  4      V n        R # re   )r‡   rˆ   rz   r   Ú
hidden_actÚactivation_fnr   r  r‰   Úintermediate_sizeÚfc1Úfc2rš   s   &&€r#   rˆ   ÚCLIPMLP.__init__S  sb   ø€ Ü‰ÑÔØŒÜ# F×$5Ñ$5Õ6ˆÔÜ—9’9˜V×/Ñ/°×1IÑ1IÓJˆŒÜ—9’9˜V×5Ñ5°v×7IÑ7IÓJˆŽr%   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   rH   r   r   )r"   rM   s   "€r#   r$   ÚCLIPMLP.__annotate__Z  s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r%   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# re   )r  r  r   )rn   rH   s   &&r#   rÉ   ÚCLIPMLP.forwardZ  s4   € ØŸ™ Ó/ˆØ×*Ñ*¨=Ó9ˆØŸ™ Ó/ˆØÐr%   )r  rz   r  r   rä   rÍ   s   @@r#   r  r  R  s   ù‡ € õK÷÷ ð r%   r  c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚCLIPEncoderLayeria  c                ó0   <€ V ^8„  d   QhRS[ S[,          /# ry   rý   )r"   rM   s   "€r#   r$   ÚCLIPEncoderLayer.__annotate__b  s   ø€ ÷ Sñ SÑ/±.Õ@ñ Sr%   c                óJ  <€ \         SV `  4        VP                  V n        \	        V4      V n        \        P                  ! V P                  VP                  R 7      V n	        \        V4      V n        \        P                  ! V P                  VP                  R 7      V n        R# ©)ÚepsN)r‡   rˆ   r‰   rŠ   rû   Ú	self_attnr   Ú	LayerNormÚlayer_norm_epsÚlayer_norm1r  ÚmlpÚlayer_norm2rš   s   &&€r#   rˆ   ÚCLIPEncoderLayer.__init__b  sl   ø€ Ü‰ÑÔØ×+Ñ+ˆŒÜ& vÓ.ˆŒÜŸ<š<¨¯©¸F×<QÑ<QÔRˆÔÜ˜6“?ˆŒÜŸ<š<¨¯©¸F×<QÑ<QÔRˆÖr%   c                ó~   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[S[,          RS[ P                  /# )r   rH   rê   rí   r   )r    r!   r   r   rK   )r"   rM   s   "€r#   r$   r)  j  sG   ø€ ÷ ñ á—|‘|ðñ Ÿ™ðñ Ñ+Õ,ð	ñ
 
×	Ñ	ñr%   c                óÄ   € TpV P                  V4      pV P                  ! RR VRV/VB w  rWA,           pTpV P                  V4      pV P                  V4      pWA,           pV# )rH   rê   rO   )r0  r-  r2  r1  )rn   rH   rê   rí   ÚresidualrÅ   s   &&&,  r#   rÉ   ÚCLIPEncoderLayer.forwardj  s   € ð !ˆà×(Ñ(¨Ó7ˆØŸ>š>ñ 
Ø'ð
à)ð
ð ñ
Ñˆð
 !Õ0ˆà ˆØ×(Ñ(¨Ó7ˆØŸ™ Ó/ˆØ Õ0ˆàÐr%   )rŠ   r0  r2  r1  r-  rä   rÍ   s   @@r#   r'  r'  a  s    ù‡ € ÷Só S÷÷ ð r%   r'  c                óH   € V ^8„  d   QhR\         P                  R\        RR/# )r   ÚchildÚstdr   N)r   rî   rï   )r"   s   "r#   r$   r$   ‚  s%   € ÷ ,ñ ,œbŸi™ið ,¬eð ,¸ñ ,r%   c                ól   € \        V RR4      e%   \        P                  ! V P                  VR7       R# R# )z�Initialize `child.weight` if the child module still carries one. Guards against quantization methods that set `weight` to `None`.r«   N)r:  )ÚgetattrÚinitÚnormal_r«   )r9  r:  s   &&r#   Ú_init_child_weightr?  ‚  s(   € äˆu�h Ó%Ò1Ü�Š�U—\‘\ s×+ñ 2r%   c                   ó–   a a€ ] tR tRt oRtR	t. R
OtRtRtRt	Rt
RtR]R]/t]P                   ! 4       V 3R l4       tV3R ltRtVtV ;t# )ÚCLIPPreTrainedModeliˆ  ÚclipTrH   rI   c                ó¨	  <€ \         SV `  V4       V P                  P                  p\	        V\
        4      '       dœ   \        VP                  VR,          4       \        VP                  VR,          4       \        P                  ! VP                  \        P                  ! VP                  P                  R,          4      P                  R4      4       R# \	        V\         4      '       dî   \        P"                  ! VP$                  RVP&                  R,          V,          R7       \        VP(                  VP                  P*                  V,          4       \        VP                  VP                  P*                  V,          4       \        P                  ! VP                  \        P                  ! VP,                  4      P                  R4      4       R# \	        V\.        4      '       d¸   VP&                  R,          ^VP                  P0                  ,          R,          ,          V,          pVP&                  R,          V,          p\        VP2                  V4       \        VP4                  V4       \        VP6                  V4       \        VP8                  V4       R# \	        V\:        4      '       d§   VP                  P<                  R,          ^VP                  P0                  ,          R,          ,          V,          p^VP                  P<                  ,          R,          V,          p\        VP>                  V4       \        VP@                  V4       R# \	        V\B        4      '       d_   \        VPD                  VPF                  R,          V,          4       \        VPH                  VPJ                  R,          V,          4       R# \	        V\L        4      '       d;   \        VPH                  V P                  P<                  R,          V,          4       R# \	        V\N        4      '       d;   \        VPD                  V P                  P<                  R,          V,          4       R# \	        V\P        4      '       dE   \        VPR                  V P                  PT                  P<                  R,          V,          4       R# R# )zInitialize the weightsg{®Gáz”?r  )Úmeanr:  Nr;   r…   r   )+r‡   Ú_init_weightsrz   Úinitializer_factorrf   rÏ   r?  rÕ   r–   r=  Úcopy_r™   r    r+   rª   r˜   rw   r>  r�   rŠ   r’   Úinitializer_ranger”   rû   Únum_hidden_layersr
  r  r	  r  r  r‰   r  r   Ú	CLIPModelÚtext_projectionÚtext_embed_dimÚvisual_projectionÚvision_embed_dimÚCLIPVisionModelWithProjectionÚCLIPTextModelWithProjectionÚCLIPForImageClassificationÚ
classifierÚvision_config)rn   ræ   ÚfactorÚin_proj_stdÚout_proj_stdÚfc_stdr›   s   &&    €r#   rE  Ú!CLIPPreTrainedModel._init_weights™  s3  ø€ ô 	‰Ñ˜fÔ%Ø—‘×/Ñ/ˆÜ�fÔ0×1Ò1Ü˜v×5Ñ5°vÀµ}ÔEÜ˜v×8Ñ8¸&À4½-ÔHÜ�JŠJ�v×*Ñ*¬E¯LªL¸×9LÑ9L×9RÑ9RÐSUÕ9VÓ,W×,^Ñ,^Ð_fÓ,gÖhÜ˜Ô 4×5Ò5Ü�LŠL˜×/Ñ/°c¸v×?OÑ?OÐQUÕ?UÐX^Õ?^Õ_Ü˜v×5Ñ5°v·}±}×7VÑ7VÐY_Õ7_Ô`Ü˜v×8Ñ8¸&¿-¹-×:YÑ:YÐ\bÕ:bÔcÜ�JŠJ�v×*Ñ*¬E¯LªL¸×9MÑ9MÓ,N×,UÑ,UÐV]Ó,^Ö_Ü˜¤×.Ò.Ø!×+Ñ+¨TÕ1°q¸6¿=¹=×;ZÑ;ZÕ7ZÐ_cÕ6cÕdÐgmÕmˆKØ"×,Ñ,¨dÕ2°fÕ<ˆLÜ˜vŸ}™}¨kÔ:Ü˜vŸ}™}¨kÔ:Ü˜vŸ}™}¨kÔ:Ü˜vŸ™°Ö=Ü˜¤×(Ò(Ø!Ÿ=™=×4Ñ4°dÕ:ÀÀFÇMÁM×DcÑDcÕ@cÐhlÕ?lÕmÐpvÕvˆKØ˜&Ÿ-™-×3Ñ3Õ3¸Õ<¸vÕEˆFÜ˜vŸz™z¨6Ô2Ü˜vŸz™z¨;Ö7Ü˜¤	×*Ò*Ü˜v×5Ñ5°v×7LÑ7LÈdÕ7RÐU[Õ7[Ô\Ü˜v×7Ñ7¸×9PÑ9PÐRVÕ9VÐY_Õ9_Ö`Ü˜Ô =×>Ò>Ü˜v×7Ñ7¸¿¹×9PÑ9PÐRVÕ9VÐY_Õ9_Ö`Ü˜Ô ;×<Ò<Ü˜v×5Ñ5°t·{±{×7NÑ7NÐPTÕ7TÐW]Õ7]Ö^Ü˜Ô :×;Ò;Ü˜v×0Ñ0°$·+±+×2KÑ2K×2WÑ2WÐY]Õ2]Ð`fÕ2fÖgñ <r%   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # ry   ©r   )r"   rM   s   "€r#   r$   Ú CLIPPreTrainedModel.__annotate__ˆ  s   ø‡ ‚ áÑò r%   rO   )ÚimageÚtext)rÏ   r'  rw   )rP   rQ   rR   rS   Úbase_model_prefixÚinput_modalitiesÚ_no_split_modulesÚsupports_gradient_checkpointingÚ_supports_sdpaÚ_supports_flash_attnÚ_supports_flex_attnÚ_supports_attention_backendr'  rû   Ú_can_record_outputsr    Úno_gradrE  rU   rV   rW   rÌ   rÍ   s   @@r#   rA  rA  ˆ  sl   ù‡ € ð ÐØ(ÐÚZÐà&*Ð#Ø€NØÐØÐØ"&ÐàÐ)Ø�mðÐð
 ‡]‚]ƒ_ô!hó ð!h÷% … r%   rA  c                   óX   a a€ ] tR tRt oRtV3R lV 3R lltRV3R lR lltRtVtV ;t	# )	ÚCLIPEncoderi¾  z™
Transformer encoder consisting of `config.num_hidden_layers` self attention layers. Each layer is a
[`CLIPEncoderLayer`].

Args:
    config: CLIPConfig
c                ó    <€ V ^8„  d   QhRS[ /# ry   rZ  )r"   rM   s   "€r#   r$   ÚCLIPEncoder.__annotate__Ç  s   ø€ ÷ ,ñ ,™zñ ,r%   c                óÖ   <€ \         SV `  4        Wn        \        P                  ! \        VP                  4       Uu. uF  p\        V4      NK  	  up4      V n        R V n	        R# u upi )FN)
r‡   rˆ   rz   r   Ú
ModuleListÚrangerI  r'  ÚlayersÚgradient_checkpointing)rn   rz   rÅ   r›   s   && €r#   rˆ   ÚCLIPEncoder.__init__Ç  sS   ø€ Ü‰ÑÔØŒÜ—m’mÄuÈV×MeÑMeÔGfÓ$gÑGfÀ!Ô%5°fÖ%=ÑGfÑ$gÓhˆŒØ&+ˆÖ#ùò %hs   ½A&c                ó^   <€ V ^8„  d   QhRS[ P                  R,          RS[S[,          RS[/# )r   rê   Nrí   r   )r    r!   r   r   r
   )r"   rM   s   "€r#   r$   rk  Í  s:   ø€ ÷ 
ñ 
ñ Ÿ™ tÕ+ð
ñ Ñ+Õ,ð	
ñ
 
ñ
r%   c                óX   € TpV P                    F  pV! VV3/ VB pK  	  \        VR 7      # ))rG   )ro  r
   )rn   rÛ   rê   rí   rH   Úencoder_layers   &&&,  r#   rÉ   ÚCLIPEncoder.forwardÍ  sC   € ð &ˆØ!Ÿ[œ[ˆMÙ)ØØñð ñŠMñ )ô Ø+ô
ð 	
r%   )rz   rp  ro  re   r  rÍ   s   @@r#   ri  ri  ¾  s#   ù‡ € ñ÷,ó ,÷
÷ 
ò 
r%   ri  zI
    The text model from CLIP without any head or projection on top.
    c                   ó”   a a€ ] tR tRt oRtRtV3R lV 3R llt]]! RR7      ]	RV3R lR ll4       4       4       t
V3R	 ltR
tVtV ;t# )ÚCLIPTextModelià  rÕ   c                ó    <€ V ^8„  d   QhRS[ /# ry   rÑ   )r"   rM   s   "€r#   r$   ÚCLIPTextModel.__annotate__ê  s   ø€ ÷ 	ñ 	™~ñ 	r%   c                ó  <€ \         SV `  V4       VP                  p\        V4      V n        \        V4      V n        \        P                  ! W!P                  R 7      V n
        VP                  V n        V P                  4        R# r+  )r‡   rˆ   r‰   rÏ   rž   ri  Úencoderr   r.  r/  Úfinal_layer_normÚeos_token_idÚ	post_initr×   s   && €r#   rˆ   ÚCLIPTextModel.__init__ê  sd   ø€ Ü‰Ñ˜Ô Ø×&Ñ&ˆ	Ü,¨VÓ4ˆŒÜ" 6Ó*ˆŒÜ "§¢¨Y×<QÑ<QÔ RˆÔð #×/Ñ/ˆÔØ�‰Ör%   F©Útie_last_hidden_statesc          
      ó®   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[S[,          RS[/# ©r   rÚ   Nrê   r™   rí   r   )r    r!   r   r   r   )r"   rM   s   "€r#   r$   ry  ø  se   ø€ ÷ I
ñ I
á—<‘< $Õ&ðI
ñ Ÿ™ tÕ+ðI
ñ —l‘l TÕ)ð	I
ñ
 Ñ+Õ,ðI
ñ 
$ñI
r%   c           	     óž  € Vf   \        R4      hVP                  4       pVP                  RVR,          4      pV P                  WR7      p\	        V P
                  VVRR7      pVP                  RR4       V P                  ! RRVRVRR/VB pVP                  pV P                  V4      pV P                  ^8X  dw   V\        P                  ! VP                  ^ ,          VP                  R	7      VP                  \        P                   VP                  R
7      P#                  RR7      3,          p	M�V\        P                  ! VP                  ^ ,          VP                  R	7      VP                  \        P                   VP                  R
7      V P                  8H  P!                  4       P#                  RR7      3,          p	\%        VV	R7      # )aé  
Examples:

```python
>>> from transformers import AutoTokenizer, CLIPTextModel

>>> model = CLIPTextModel.from_pretrained("openai/clip-vit-base-patch32")
>>> tokenizer = AutoTokenizer.from_pretrained("openai/clip-vit-base-patch32")

>>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="pt")

>>> outputs = model(**inputs)
>>> last_hidden_state = outputs.last_hidden_state
>>> pooled_output = outputs.pooler_output  # pooled (EOS token) states
```NzYou have to specify input_ids)rÚ   r™   )rz   rÛ   rê   Úpast_key_valuesr  rÛ   rê   Tr'   )r¿   r(   r§   ©rG   Úpooler_outputr;   rO   )rÀ   r¤   r²   rž   r   rz   Úpopr{  rG   r|  r}  r    r+   rª   r(   rÁ   r¡   Úargmaxr   )
rn   rÚ   rê   r™   rí   r  rH   Úencoder_outputsrG   Úpooled_outputs
   &&&&,     r#   rÉ   ÚCLIPTextModel.forwardõ  s¯  € ð2 ÒÜÐ<Ó=Ð=à—n‘nÓ&ˆØ—N‘N 2 {°2¥Ó7ˆ	àŸ™°)˜ÓWˆä+Ø—;‘;Ø'Ø)Ø ô	
ˆð 	�
‰
�; Ô%Ø+/¯<ª<ñ ,
Ø'ð,
à)ð,
ð ð,
ð ñ	,
ˆð ,×=Ñ=ÐØ ×1Ñ1Ð2CÓDÐà×Ñ Ô!ð .Ü—’Ð.×4Ñ4°QÕ7Ð@Q×@XÑ@XÔYØ—‘¤5§9¡9Ð5F×5MÑ5M�ÓN×UÑUÐZ\ÐUÓ]ð_õ‰Mð .Ü—’Ð.×4Ñ4°QÕ7Ð@Q×@XÑ@XÔYð —‘¤E§I¡IÐ6G×6NÑ6N�ÓOÐSW×SdÑSdÑdß‘“ß‘˜B�“ð!õˆMô *Ø/Ø'ô
ð 	
r%   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # ry   rÑ   )r"   rM   s   "€r#   r$   ry  à  s   ø‡ ‚ ñ Ñò r%   )rž   r{  r}  r|  ©r]  rã   )rP   rQ   rR   rS   r_  Ú_input_embed_layerrˆ   r   r   r   rÉ   rU   rV   rW   rÌ   rÍ   s   @@r#   rw  rw  à  sU   ù‡ € ð !ÐØ*Ð÷	ó 	ð  Ù¨EÔ2Ø÷I
ñ I
ó ó 3ó  ðI
÷1 … r%   rw  zK
    The vision model from CLIP without any head or projection on top.
    c                   ó˜   a a€ ] tR tRt oRtRtRtV3R lV 3R llt]]	! RR7      ]
RV3R lR	 ll4       4       4       tV3R
 ltRtVtV ;t# )ÚCLIPVisionModeliD  r¼   r’   c                ó    <€ V ^8„  d   QhRS[ /# ry   r{   )r"   rM   s   "€r#   r$   ÚCLIPVisionModel.__annotate__O  s   ø€ ÷ ñ Ñ/ñ r%   c                ó6  <€ \         SV `  V4       VP                  p\        V4      V n        \
        P                  ! W!P                  R 7      V n        \        V4      V n
        \
        P                  ! W!P                  R 7      V n        V P                  4        R# r+  )r‡   rˆ   r‰   rw   rž   r   r.  r/  Úpre_layrnormri  r{  Úpost_layernormr~  r×   s   && €r#   rˆ   ÚCLIPVisionModel.__init__O  sk   ø€ Ü‰Ñ˜Ô Ø×&Ñ&ˆ	ä.¨vÓ6ˆŒÜŸLšL¨×8MÑ8MÔNˆÔÜ" 6Ó*ˆŒÜ Ÿlšl¨9×:OÑ:OÔPˆÔØ�‰Ör%   Fr€  c                ór   <€ V ^8„  d   QhRS[ P                  R,          RS[R,          RS[S[,          RS[/# ©r   r¼   Nr¹   rí   r   )r    rK   Úboolr   r   r   )r"   rM   s   "€r#   r$   r“  \  sH   ø€ ÷ +
ñ +
á×'Ñ'¨$Õ.ð+
ñ #'¨¥+ð+
ñ Ñ+Õ,ð	+
ñ
 
$ñ+
r%   c                óÖ   € V P                  WR7      pV P                  V4      pV P                  ! RRV/VB pVP                  pVR,          pV P	                  V4      p\        VVR7      # )a¨  
Example:

```python
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO
>>> from transformers import AutoProcessor, CLIPVisionModel

>>> model = CLIPVisionModel.from_pretrained("openai/clip-vit-base-patch32")
>>> processor = AutoProcessor.from_pretrained("openai/clip-vit-base-patch32")

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> inputs = processor(images=image, return_tensors="pt")

>>> outputs = model(**inputs)
>>> last_hidden_state = outputs.last_hidden_state
>>> pooled_output = outputs.pooler_output  # pooled CLS states
```)r¹   rÛ   r†  rO   )r¨   é    r¨   )rž   r•  r{  rG   r–  r   )rn   r¼   r¹   rí   rH   rŠ  rG   r‹  s   &&&,    r#   rÉ   ÚCLIPVisionModel.forwardY  s}   € ð> Ÿ™¨˜ÓhˆØ×)Ñ)¨-Ó8ˆà+/¯<ª<ñ ,
Ø'ð,
àñ,
ˆð
 ,×=Ñ=ÐØ)¨'Õ2ˆØ×+Ñ+¨MÓ:ˆä)Ø/Ø'ô
ð 	
r%   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # ry   r{   )r"   rM   s   "€r#   r$   r“  D  s   ø‡ ‚ ñ Ñò r%   )rž   r{  r–  r•  ©r\  ©NF)rP   rQ   rR   rS   Úmain_input_namer_  r�  rˆ   r   r   r   rÉ   rU   rV   rW   rÌ   rÍ   s   @@r#   r‘  r‘  D  sW   ù‡ € ð %€OØ!ÐØ*Ð÷ó ð  Ù¨EÔ2Ø÷+
ñ +
ó ó 3ó  ð+
÷1 … r%   r‘  c                   ó¼   a a€ ] tR tRt oV3R lV 3R llt]]RV3R lR ll4       4       t]]RV3R lR ll4       4       t]]RV3R lR	 ll4       4       t	R
t
VtV ;t# )rJ  iŠ  c                ó    <€ V ^8„  d   QhRS[ /# ry   rZ  )r"   rM   s   "€r#   r$   ÚCLIPModel.__annotate__Œ  s   ø€ ÷ ñ ™zñ r%   c                ó’  <€ \         SV `  V4       VP                  pVP                  pVP                  V n        VP
                  V n        VP
                  V n        \        P                  V4      V n
        \        P                  V4      V n        \        P                  ! V P                  V P                  R R7      V n        \        P                  ! V P                  V P                  R R7      V n        \        P"                  ! \$        P&                  ! V P(                  P*                  4      4      V n        V P/                  4        R# ©F)r‚   N)r‡   rˆ   Útext_configrS  Úprojection_dimr‰   rL  rN  rw  Ú_from_configÚ
text_modelr‘  Úvision_modelr   r  rM  rK  r�   r    r6   rz   Úlogit_scale_init_valueÚlogit_scaler~  )rn   rz   r§  rS  r›   s   &&  €r#   rˆ   ÚCLIPModel.__init__Œ  sé   ø€ Ü‰Ñ˜Ô à×(Ñ(ˆØ×,Ñ,ˆà$×3Ñ3ˆÔØ)×5Ñ5ˆÔØ -× 9Ñ 9ˆÔä'×4Ñ4°[ÓAˆŒÜ+×8Ñ8¸ÓGˆÔä!#§¢¨4×+@Ñ+@À$×BUÑBUÐ\aÔ!bˆÔÜ!Ÿyšy¨×)<Ñ)<¸d×>QÑ>QÐX]Ô^ˆÔÜŸ<š<¬¯ª°T·[±[×5WÑ5WÓ(XÓYˆÔð 	�‰Ör%   c                ó°   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[S[,          RS[S[,          /# )r   rÚ   rê   Nr™   rí   r   )r    r!   r   r   rL   r   )r"   rM   s   "€r#   r$   r¤  ¢  s_   ø€ ÷  ñ  á—<‘<ð ñ Ÿ™ tÕ+ð ñ —l‘l TÕ)ð	 ñ
 Ñ+Õ,ð ñ 
Ñ+Õ	+ñ r%   c                ó~   € V P                   ! RRVRVRVRR/VB pVP                  pV P                  V4      Vn        V# )a¶  
Examples:

```python
>>> import torch
>>> from transformers import AutoTokenizer, CLIPModel

>>> model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
>>> tokenizer = AutoTokenizer.from_pretrained("openai/clip-vit-base-patch32")

>>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="pt")

>>> with torch.inference_mode():
...     text_features = model.get_text_features(**inputs)
```rÚ   rê   r™   Úreturn_dictTrO   )rª  r‡  rK  )rn   rÚ   rê   r™   rí   Útext_outputsr‹  s   &&&&,  r#   Úget_text_featuresÚCLIPModel.get_text_features   sf   € ð0 48·?²?ñ 4
Øð4
à)ð4
ð &ð4
ð ð	4
ð
 ñ4
ˆð %×2Ñ2ˆØ%)×%9Ñ%9¸-Ó%HˆÔ"àÐr%   c          	      óf   <€ V ^8„  d   QhRS[ P                  RS[RS[S[,          RS[S[,          /# )r   r¼   r¹   rí   r   )r    rK   rš  r   r   rL   r   )r"   rM   s   "€r#   r$   r¤  Æ  sE   ø€ ÷ "ñ "á×'Ñ'ð"ñ #'ð"ñ Ñ+Õ,ð	"ñ
 
Ñ+Õ	+ñ"r%   c           	     óz   € V P                   ! RRVRVRR/VB pVP                  pV P                  V4      Vn        V# )a"  
Examples:

```python
>>> import torch
>>> from transformers import AutoProcessor, CLIPModel
>>> from transformers.image_utils import load_image

>>> model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
>>> processor = AutoProcessor.from_pretrained("openai/clip-vit-base-patch32")

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = load_image(url)

>>> inputs = processor(images=image, return_tensors="pt")

>>> with torch.inference_mode():
...     image_features = model.get_image_features(**inputs)
```r¼   r¹   r±  TrO   )r«  r‡  rM  )rn   r¼   r¹   rí   Úvision_outputsr‹  s   &&&,  r#   Úget_image_featuresÚCLIPModel.get_image_featuresÄ  s^   € ð6 6:×5FÒ5Fñ 6
Ø%ð6
à%=ð6
ð ð6
ð ñ	6
ˆð '×4Ñ4ˆØ'+×'=Ñ'=¸mÓ'LˆÔ$àÐr%   c                óð   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[RS[S[,          R	S[/# )
r   rÚ   Nr¼   rê   r™   Úreturn_lossr¹   rí   r   )r    rÜ   rK   r!   rš  r   r   r_   )r"   rM   s   "€r#   r$   r¤  ì  s™   ø€ ÷ J
ñ J
á×#Ñ# dÕ*ðJ
ñ ×'Ñ'¨$Õ.ðJ
ñ Ÿ™ tÕ+ð	J
ñ
 ×&Ñ&¨Õ-ðJ
ñ ˜D•[ðJ
ñ #'ðJ
ñ Ñ+Õ,ðJ
ñ 
ñJ
r%   c           
     ó0  € V P                   ! RRVRV/VB pV P                  ! RRVRVRV/VB p	VP                  p
V	P                  pV
\        V
4      ,          p
V\        V4      ,          p\        P
                  ! WºP                  4       P                  VP                  4      4      pWÀP                  P                  4       P                  VP                  4      ,          pVP                  4       pRpV'       d   \        V4      p\        VVVVV
V	VR7      # )	aj  
return_loss (`bool`, *optional*):
    Whether or not to return the contrastive loss.

Examples:

```python
>>> import torch
>>> from transformers import AutoProcessor, CLIPModel
>>> from transformers.image_utils import load_image

>>> model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
>>> processor = AutoProcessor.from_pretrained("openai/clip-vit-base-patch32")

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = load_image(url)

>>> inputs = processor(
...     text=["a photo of a cat", "a photo of a dog"], images=image, return_tensors="pt", padding=True
... )

>>> with torch.inference_mode():
...     outputs = model(**inputs)
>>> logits_per_image = outputs.logits_per_image  # this is the image-text similarity score
>>> probs = logits_per_image.softmax(dim=1)  # we can take the softmax to get the label probabilities
```r¼   r¹   rÚ   rê   r™   N)rq   rr   rs   r\   rF   rt   ru   rO   )r¸  r³  r‡  rA   r    ró   ÚtrÁ   r(   r­  Úexpr4   r_   )rn   rÚ   r¼   rê   r™   r»  r¹   rí   r·  r²  rF   r\   rs   rr   rq   s   &&&&&&&,       r#   rÉ   ÚCLIPModel.forwardê  s2  € ðL 6:×5LÒ5Lñ 6
Ø%ð6
à%=ð6
ð ñ6
ˆð 48×3IÒ3Iñ 4
Øð4
à)ð4
ð &ð4
ð ñ	4
ˆð &×3Ñ3ˆØ"×0Ñ0ˆð $Ô&6°|Ó&DÕDˆØ!Ô$4°[Ó$AÕAˆô  Ÿ,š, {·N±NÓ4D×4GÑ4GÈ×HZÑHZÓ4[Ó\ˆØ)×,<Ñ,<×,@Ñ,@Ó,B×,EÑ,EÀk×FXÑFXÓ,YÕYˆà*×,Ñ,Ó.ÐàˆßÜ.¨Ó?ˆDäØØ-Ø+Ø#Ø%Ø*Ø .ô
ð 	
r%   )r­  r¨  rL  rª  rK  rN  r«  rM  ©NNrË   )NNNNNF)rP   rQ   rR   rS   rˆ   r   r   r³  r¸  rÉ   rV   rW   rÌ   rÍ   s   @@r#   rJ  rJ  Š  s}   ù‡ € ÷ó ð( Ø÷ ñ  ó ó ð ðD Ø÷"ñ "ó ó ð"ðH Ø÷J
ñ J
ó ó ÷J
ð J
r%   rJ  c                   ó�   a a€ ] tR tRt oRtV3R lV 3R lltV3R lR ltR t]]	RV3R lR ll4       4       t
V3R	 ltR
tVtV ;t# )rP  i9  c                ó    <€ V ^8„  d   QhRS[ /# ry   rÑ   )r"   rM   s   "€r#   r$   Ú(CLIPTextModelWithProjection.__annotate__>  s   ø€ ÷ ñ ™~ñ r%   c                óÞ   <€ \         SV `  V4       \        P                  V4      V n        \
        P                  ! VP                  VP                  R R7      V n	        V P                  4        R# r¦  )r‡   rˆ   rw  r©  rª  r   r  r‰   r¨  rK  r~  rš   s   &&€r#   rˆ   Ú$CLIPTextModelWithProjection.__init__>  sP   ø€ Ü‰Ñ˜Ô ä'×4Ñ4°VÓ<ˆŒÜ!Ÿyšy¨×);Ñ);¸V×=RÑ=RÐY^Ô_ˆÔð 	�‰Ör%   c                ó4   <€ V ^8„  d   QhRS[ P                  /# ra   ©r   rî   )r"   rM   s   "€r#   r$   rÃ  G  s   ø€ ÷ :ñ :¡b§i¡iñ :r%   c                óB   € V P                   P                  P                  # re   ©rª  rž   rÕ   rm   s   &r#   Úget_input_embeddingsÚ0CLIPTextModelWithProjection.get_input_embeddingsG  s   € Ø�‰×)Ñ)×9Ñ9Ð9r%   c                ó:   € WP                   P                  n        R # re   rÉ  )rn   ré   s   &&r#   Úset_input_embeddingsÚ0CLIPTextModelWithProjection.set_input_embeddingsJ  s   € Ø5:�‰×"Ñ"Ö2r%   c          
      ó®   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[S[,          RS[/# rƒ  )r    r!   r   r   rZ   )r"   rM   s   "€r#   r$   rÃ  O  s^   ø€ ÷ &
ñ &
á—<‘< $Õ&ð&
ñ Ÿ™ tÕ+ð&
ñ —l‘l TÕ)ð	&
ñ
 Ñ+Õ,ð&
ñ 
ñ&
r%   c           	     óÆ   € V P                   ! RRVRVRV/VB pVP                  pV P                  V4      p\        VVP                  VP
                  VP                  R7      # )aè  
Examples:

```python
>>> import torch
>>> from transformers import AutoTokenizer, CLIPTextModelWithProjection

>>> model = CLIPTextModelWithProjection.from_pretrained("openai/clip-vit-base-patch32")
>>> tokenizer = AutoTokenizer.from_pretrained("openai/clip-vit-base-patch32")

>>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="pt")

>>> with torch.inference_mode():
...     outputs = model(**inputs)
>>> text_embeds = outputs.text_embeds
```rÚ   rê   r™   )r\   rG   rH   rI   rO   )rª  r‡  rK  rZ   rG   rH   rI   )rn   rÚ   rê   r™   rí   r²  r‹  r\   s   &&&&,   r#   rÉ   Ú#CLIPTextModelWithProjection.forwardM  s~   € ð4 48·?²?ñ 4
Øð4
à)ð4
ð &ð4
ð ñ	4
ˆð %×2Ñ2ˆØ×*Ñ*¨=Ó9ˆä"Ø#Ø*×<Ñ<Ø&×4Ñ4Ø#×.Ñ.ô	
ð 	
r%   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # ry   rÑ   )r"   rM   s   "€r#   r$   rÃ  9  s   ø‡ ‚ áÑò r%   )rª  rK  rŽ  rã   )rP   rQ   rR   rS   r_  rˆ   rÊ  rÍ  r   r   rÉ   rU   rV   rW   rÌ   rÍ   s   @@r#   rP  rP  9  sN   ù‡ € ð !Ð÷ó ÷:ð :ò;ð Ø÷&
ñ &
ó ó ð&
÷- … r%   rP  c                   óŽ   a a€ ] tR tRt oRtRtV3R lV 3R lltV3R lR lt]]	RV3R lR ll4       4       t
V3R	 ltR
tVtV ;t# )rO  ix  r¼   c                ó    <€ V ^8„  d   QhRS[ /# ry   r{   )r"   rM   s   "€r#   r$   Ú*CLIPVisionModelWithProjection.__annotate__~  s   ø€ ÷ ñ Ñ/ñ r%   c                óÞ   <€ \         SV `  V4       \        P                  V4      V n        \
        P                  ! VP                  VP                  R R7      V n	        V P                  4        R# r¦  )r‡   rˆ   r‘  r©  r«  r   r  r‰   r¨  rM  r~  rš   s   &&€r#   rˆ   Ú&CLIPVisionModelWithProjection.__init__~  sQ   ø€ Ü‰Ñ˜Ô ä+×8Ñ8¸Ó@ˆÔÜ!#§¢¨6×+=Ñ+=¸v×?TÑ?TÐ[`Ô!aˆÔð 	�‰Ör%   c                ó4   <€ V ^8„  d   QhRS[ P                  /# ra   rÇ  )r"   rM   s   "€r#   r$   rÕ  ‡  s   ø€ ÷ <ñ <¡b§i¡iñ <r%   c                óB   € V P                   P                  P                  # re   )r«  rž   r’   rm   s   &r#   rÊ  Ú2CLIPVisionModelWithProjection.get_input_embeddings‡  s   € Ø× Ñ ×+Ñ+×;Ñ;Ð;r%   c                ód   <€ V ^8„  d   QhRS[ P                  R,          RS[RS[S[,          RS[/# r™  )r    rK   rš  r   r   rD   )r"   rM   s   "€r#   r$   rÕ  Œ  sD   ø€ ÷ (
ñ (
á×'Ñ'¨$Õ.ð(
ñ #'ð(
ñ Ñ+Õ,ð	(
ñ
 
ñ(
r%   c                óÂ   € V P                   ! RRVRV/VB pVP                  pV P                  V4      p\        VVP                  VP
                  VP                  R7      # )aX  
Examples:

```python
>>> import torch
>>> from transformers import AutoProcessor, CLIPVisionModelWithProjection
>>> from transformers.image_utils import load_image

>>> model = CLIPVisionModelWithProjection.from_pretrained("openai/clip-vit-base-patch32")
>>> processor = AutoProcessor.from_pretrained("openai/clip-vit-base-patch32")

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = load_image(url)

>>> inputs = processor(images=image, return_tensors="pt")

>>> with torch.inference_mode():
...     outputs = model(**inputs)
>>> image_embeds = outputs.image_embeds
```r¼   r¹   )rF   rG   rH   rI   rO   )r«  r‡  rM  rD   rG   rH   rI   )rn   r¼   r¹   rí   r·  r‹  rF   s   &&&,   r#   rÉ   Ú%CLIPVisionModelWithProjection.forwardŠ  sv   € ð: 6:×5FÒ5Fñ 6
Ø%ð6
à%=ð6
ð ñ6
ˆð
 '×4Ñ4ˆØ×-Ñ-¨mÓ<ˆä$Ø%Ø,×>Ñ>Ø(×6Ñ6Ø%×0Ñ0ô	
ð 	
r%   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # ry   r{   )r"   rM   s   "€r#   r$   rÕ  x  s   ø‡ ‚ áÑò r%   )r«  rM  rŸ  r   )rP   rQ   rR   rS   r¡  r_  rˆ   rÊ  r   r   rÉ   rU   rV   rW   rÌ   rÍ   s   @@r#   rO  rO  x  sN   ù‡ € ð %€OØ!Ð÷ó ÷<ð <ð Ø÷(
ñ (
ó ó ð(
÷) … r%   rO  z«
    CLIP vision encoder with an image classification head on top (a linear layer on top of the pooled final hidden states of
    the patch tokens) e.g. for ImageNet.
    c                   óp   a a€ ] tR tRt oRtRtV3R lV 3R llt]]R	V3R lR ll4       4       t	Rt
VtV ;t# )
rQ  i·  r¼   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   rz   r   NrZ  )r"   rM   s   "€r#   r$   Ú'CLIPForImageClassification.__annotate__Á  s   ø€ ÷ ñ ™zð ¨dñ r%   c                óp  <€ \         SV `  V4       VP                  V n        \        P	                  VP
                  4      V n        VP                  ^ 8”  d6   \        P                  ! VP
                  P                  VP                  4      M\        P                  ! 4       V n        V P                  4        R# )rœ  N)r‡   rˆ   Ú
num_labelsr‘  r©  rS  r«  r   r  r‰   ÚIdentityrR  r~  rš   s   &&€r#   rˆ   Ú#CLIPForImageClassification.__init__Á  s‡   ø€ Ü‰Ñ˜Ô à ×+Ñ+ˆŒÜ+×8Ñ8¸×9MÑ9MÓNˆÔð OU×N_ÑN_ÐbcÔNcŒB�IŠI�f×*Ñ*×6Ñ6¸×8IÑ8IÔJÔik×itÒitÓivð 	Œð
 	�‰Ör%   c                ó†   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[S[,          RS[/# )r   r¼   NÚlabelsrí   r   )r    r!   r   r   r   )r"   rM   s   "€r#   r$   rá  Ñ  sK   ø€ ÷ 
ñ 
á—l‘l TÕ)ð
ñ —‘˜tÕ#ð
ñ Ñ+Õ,ð	
ñ
 
ñ
r%   c                ó*  € V P                   ! V3/ VB pVP                  p\        P                  ! VR,          ^R7      pV P	                  V4      pRpVe   V P                  W&V P                  4      p\        VVVP                  VP                  R7      # )ab  
labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
    Labels for computing the image classification/regression loss. Indices should be in `[0, ...,
    config.num_labels - 1]`. If `config.num_labels == 1` a regression loss is computed (Mean-Square loss), If
    `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
r§   N)rq   r   rH   rI   )r¨   r©   r¨   )
r«  rG   r    rD  rR  Úloss_functionrz   r   rH   rI   )rn   r¼   rç  rí   ÚoutputsÚsequence_outputr   rq   s   &&&,    r#   rÉ   Ú"CLIPForImageClassification.forwardÏ  s•   € ð /3×.?Ò.?Øñ/
àñ/
ˆð
 "×3Ñ3ˆäŸ*š* _°XÕ%>ÀAÔFˆØ—‘ Ó1ˆàˆØÒØ×%Ñ% f°d·k±kÓBˆDä$ØØØ!×/Ñ/Ø×)Ñ)ô	
ð 	
r%   )rR  rã  r«  rŸ  rÀ  )rP   rQ   rR   rS   r¡  r_  rˆ   r   r   rÉ   rV   rW   rÌ   rÍ   s   @@r#   rQ  rQ  ·  sB   ù‡ € ð %€OØ!Ð÷ó ð Ø÷
ñ 
ó ó ÷
ð 
r%   rQ  )r  )rJ  rA  rw  rP  r‘  rO  rQ  )DrT   Úcollections.abcr   Údataclassesr   Útypingr   r    r   Ú r   r=  Úactivationsr   Úmasking_utilsr   Úmodeling_layersr	   Úmodeling_outputsr
   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   r   Úutils.genericr   r   Úutils.output_capturingr   Úconfiguration_clipr   r   r   Ú
get_loggerrP   Úloggerr-   r4   rA   rD   rZ   r_   rî   rw   rÏ   rù   rû   r  r'  r?  rA  ri  rw  r‘  rJ  rP  rO  rQ  Ú__all__rO   r%   r#   Ú<module>rþ     sW  ðñ å $Ý !Ý ã Ý å &Ý !Ý /Ý 9ß bÑ bß FÝ &÷õ ÷ JÝ 5ß LÑ Lð 
×	Ò	˜HÓ	%€õ
`õ-õñ ðôð
 ô	<˜Kó 	<ó óð	<ñ ðôð
 ô	<˜+ó 	<ó óð	<ð Ø
ô_�ó _ó ó ð_ô@P˜2Ÿ9™9ô Pôf#˜Ÿ™ô #÷L%ô*7)�B—I‘Iô 7)ôtˆb�i‰iô ôÐ1ô õB,ð ô2h˜/ó 2hó ð2hôj
�"—)‘)ô 
ñD ðôô
\
Ð'ó \
óð
\
ñ~ ðôô
>
Ð)ó >
óð
>
ðB ôk
Ð#ó k
ó ðk
ð\ ô;
Ð"5ó ;
ó ð;
ð| ô;
Ð$7ó ;
ó ð;
ñ| ðôô3
Ð!4ó 3
óð3
òl‚r%   