+
    œ°³jæª  ã                   ó^  € R t ^ RI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Ht ^RIHtHt ^RIHt ^RIHt ^RI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, ]#PZ                  ! ].4      t/]"! RR7      ] ! R R] 4      4       4       t0]"! RR7      ] ! R R] 4      4       4       t1]"] ! R R] 4      4       4       t2R R lt3R R lt4R R  lt5RQR! R" llt6 ! R# R$]	Pn                  4      t8 ! R% R&]	Pr                  4      t: ! R' R(]	Pn                  4      t; ! R) R*]	Pn                  4      t< ! R+ R,]	Pn                  4      t= ! R- R.]	Pn                  4      t> ! R/ R0]	Pn                  4      t? ! R1 R2]	Pn                  4      t@ ! R3 R4]	Pn                  4      tARRR5 R6 lltB ! R7 R8]	Pn                  4      tC ! R9 R:]	Pn                  4      tD ! R; R<]	Pn                  4      tE ! R= R>]	Pn                  4      tF ! R? R@]	Pn                  4      tG ! RA RB]4      tH ! RC RD]	Pn                  4      tI ! RE RF]	Pn                  4      tJ]" ! RG RH]4      4       tK]"! RIR7       ! RJ RK]K4      4       tL]"! RLR7       ! RM RN]K4      4       tM]" ! RO RP]K4      4       tN. RSOtOR# )TzPyTorch ALIGN model.N)ÚCallable)Ú	dataclass)ÚAny)Únn)Úinitialization)ÚACT2FN)Úcreate_bidirectional_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithNoAttentionÚBaseModelOutputWithPoolingÚ(BaseModelOutputWithPoolingAndNoAttention)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)Úapply_chunking_to_forward)ÚModelOutputÚTransformersKwargsÚauto_docstringÚlogging)Úcan_return_tupleÚmerge_with_config_defaults)Úcapture_outputs)ÚAlignConfigÚAlignTextConfigÚAlignVisionConfigz}
    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^.t o RtRtRtRtV 3R ltRt	V t
R# )ÚAlignVisionModelOutputzì
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,          ;R&   # )é   NÚimage_embedsÚlast_hidden_stateÚhidden_states©ÚtorchÚFloatTensorÚtuple)ÚformatÚ__classdict__s   "€Úi/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/align/modeling_align.pyÚ__annotate__Ú#AlignVisionModelOutput.__annotate__.   sR   ø‡ ‚ ñ ×#Ñ# dÕ*Ñ1ñ ñ ×(Ñ(¨4Õ/Ñ6ñ ñ ™×*Ñ*Õ+¨dÕ2Ñ9ò ó    © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r!   r"   r#   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r)   s   @r*   r   r   .   s#   ø‡ € ñð
 .2€LØ26ÐØ59€M÷ ƒ r-   r   ze
    Base class for text model's outputs that also contains a pooling of the last hidden states.
    c                   ó@   a € ] tR t^?t o RtRtRtRtRtV 3R lt	Rt
V tR# )ÚAlignTextModelOutputzê
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,          ;R&   S[S[ P                  ,          R,          ;R&   # )r    NÚtext_embedsr"   r#   Ú
attentionsr$   )r(   r)   s   "€r*   r+   Ú!AlignTextModelOutput.__annotate__?   so   ø‡ ‚ ñ ×"Ñ" TÕ)Ñ0ñ ñ ×(Ñ(¨4Õ/Ñ6ñ ñ ™×*Ñ*Õ+¨dÕ2Ñ9ñ ñ ‘e×'Ñ'Õ(¨4Õ/Ñ6ò r-   r.   )r/   r0   r1   r2   r3   r;   r"   r#   r<   r4   r5   r6   r7   s   @r*   r9   r9   ?   s(   ø‡ € ñð
 -1€KØ26ÐØ59€MØ26€J÷ ƒ r-   r9   c                   ó^   a € ] tR t^Qt 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# )ÚAlignOutputa.  
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 [`AlignTextModel`].
image_embeds (`torch.FloatTensor` of shape `(batch_size, output_dim`):
    The output of [`AlignVisionModel`].
text_model_output (`BaseModelOutputWithPooling`):
    The output of the [`AlignTextModel`].
vision_model_output (`BaseModelOutputWithPoolingAndNoAttention`):
    The output of the [`AlignVisionModel`].
Nc                ó0   <€ V ^8„  d   QhRS[ S[,          /# )r    Úreturn)r'   r   )r(   r)   s   "€r*   r+   ÚAlignOutput.__annotate__o   s   ø€ ÷ 
ñ 
™%¡�*ñ 
r-   c                ó    a € \         ;QJ d%    . V 3R  lS P                  4        4       F  NK  	  5# ! V 3R  lS P                  4        4       4      # )c              3   óx   <"  € T F/  pVR9  d
   SV,          M\        SV4      P                  4       x € K1  	  R# 5i)Útext_model_outputN)rE   Úvision_model_output)ÚgetattrÚto_tuple)Ú.0ÚkÚselfs   & €r*   Ú	<genexpr>Ú'AlignOutput.to_tuple.<locals>.<genexpr>p   s<   øé € ð 
á �ð Ð LÔLˆD�ŽGÔRYÐZ^Ð`aÓRb×RkÑRkÓRmÔmÛ ùs   ƒ7:)r'   Úkeys©rK   s   fr*   rH   ÚAlignOutput.to_tupleo   sA   ø€ ßŒuô 
à—Y‘Y”[ó
�uð 	
ˆuô 
à—Y‘Y”[ó
ó 
ð 	
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;   r!   rE   rF   )r%   r&   r   r   )r(   r)   s   "€r*   r+   rB   Q   s˜   ø‡ ‚ ñ, ×
Ñ
˜dÕ
"Ñ)ñ- ñ. ×'Ñ'¨$Õ.Ñ5ñ/ ñ0 ×&Ñ&¨Õ-Ñ4ñ1 ñ2 ×"Ñ" TÕ)Ñ0ñ3 ñ4 ×#Ñ# dÕ*Ñ1ñ5 ñ6 2Ñ8ñ7 ñ8 BÑHò9 r-   r.   )r/   r0   r1   r2   r3   rR   rS   rT   r;   r!   rE   rF   rH   r4   r5   r6   r7   s   @r*   r?   r?   Q   sC   ø‡ € ñð& &*€DØ15ÐØ04€OØ,0€KØ-1€LØ48ÐØDHÐ÷
ð 
÷= ƒ r-   r?   c                óX   € V ^8„  d   QhR\         P                  R\         P                  /# )r    ÚlogitsrA   ©r%   ÚTensor)r(   s   "r*   r+   r+   x   s&   € ÷ uñ uœUŸ\™\ð u¬e¯l©lñ ur-   c                 ó˜   € \         P                  P                  V \        P                  ! \        V 4      V P                  R 7      RR7      # )©Údevicegš™™™™™¹?)Úlabel_smoothing)r   Ú
functionalÚcross_entropyr%   ÚarangeÚlenr[   )rV   s   &r*   Úcontrastive_lossra   x   s5   € Ü�=‰=×&Ñ& v¬u¯|ª|¼CÀ»KÐPV×P]ÑP]Ô/^ÐpsÐ&ÓtÐtr-   c                óX   € V ^8„  d   QhR\         P                  R\         P                  /# )r    Ú
similarityrA   rW   )r(   s   "r*   r+   r+   |   s"   € ÷ -ñ -œ5Ÿ<™<ð -¬E¯L©Lñ -r-   c                 óh   € \        V 4      p\        V P                  4       4      pW,           R ,          # )g       @)ra   Út)rc   Úcaption_lossÚ
image_losss   &  r*   Ú
align_lossrh   |   s*   € Ü# JÓ/€LÜ! *§,¡,£.Ó1€JØÕ%¨Õ,Ð,r-   c                ó0   € V ^8„  d   QhR\         R\        /# )r    ÚconfigÚnum_channels©r   Úint)r(   s   "r*   r+   r+   ƒ   s   € ÷ ñ Ô+ð ¼3ñ r-   c                óà   € V P                   pWP                  ,          p\        V\        W^,          ,           4      V,          V,          4      pVRV,          8  d	   W2,          p\        V4      # )z4
Round number of filters based on depth multiplier.
gÍÌÌÌÌÌì?)Údepth_divisorÚwidth_coefficientÚmaxrm   )rj   rk   ÚdivisorÚnew_dims   &&  r*   Úround_filtersrt   ƒ   s`   € ð ×"Ñ"€GØ×,Ñ,Õ,€LÜ�'œ3˜|¸­kÕ9Ó:¸gÕEÈÕOÓP€Gð ��|Õ#Ô#ØÕˆäˆw‹<Ðr-   c                óF   € V ^8„  d   QhR\         \        ,          R\        /# )r    Úkernel_sizeÚadjust)rm   r'   Úbool)r(   s   "r*   r+   r+   “   s"   € ÷ @ñ @œS¤5�[ð @´$ñ @r-   c                ó(  € \        V \        4      '       d   W 3p V ^ ,          ^,          V ^,          ^,          3pV'       d1   V^,          ^,
          V^,          V^ ,          ^,
          V^ ,          3# V^,          V^,          V^ ,          V^ ,          3# )a.  
Utility function to get the tuple padding value for the depthwise convolution.

Args:
    kernel_size (`int` or `tuple`):
        Kernel size of the convolution layers.
    adjust (`bool`, *optional*, defaults to `True`):
        Adjusts padding value to apply to right and bottom sides of the input.
)Ú
isinstancerm   )rv   rw   Úcorrects   && r*   Úcorrect_padr|   “   s~   € ô �+œs×#Ò#Ø"Ð0ˆà˜1�~ Õ" K°¥N°aÕ$7Ð8€GßØ˜•
˜Q• ¨¥
¨G°A­J¸­N¸GÀA½JÐGÐGà˜•
˜G A�J¨°­
°G¸AµJÐ?Ð?r-   c                   óT   a a€ ] tR t^¨t oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚAlignVisionEmbeddingszD
A module that corresponds to the stem module of the original work.
c                ó    <€ V ^8„  d   QhRS[ /# ©r    rj   ©r   )r(   r)   s   "€r*   r+   Ú"AlignVisionEmbeddings.__annotate__­   s   ø€ ÷ 	4ñ 	4Ñ0ñ 	4r-   c           	     ó˜  <€ \         SV `  4        \        V^ 4      V n        \        P
                  ! RR7      V n        \        P                  ! VP                  V P                  ^^RRR7      V n	        \        P                  ! V P                  VP                  VP                  R7      V n        \        VP                  ,          V n        R# )é    ©ÚpaddingÚvalidF©rv   Ústrider†   Úbias)ÚepsÚmomentumN)é    é   r�   rŽ   )ÚsuperÚ__init__rt   Úout_dimr   Ú	ZeroPad2dr†   ÚConv2drk   ÚconvolutionÚBatchNorm2dÚbatch_norm_epsÚbatch_norm_momentumÚ	batchnormr   Ú
hidden_actÚ
activation©rK   rj   Ú	__class__s   &&€r*   r�   ÚAlignVisionEmbeddings.__init__­   s�   ø€ Ü‰ÑÔä$ V¨RÓ0ˆŒÜ—|’|¨LÔ9ˆŒÜŸ9š9Ø×Ñ §¡¸1ÀQÐPWÐ^cô
ˆÔô Ÿš¨¯©¸&×:OÑ:OÐZ`×ZtÑZtÔuˆŒÜ  ×!2Ñ!2Õ3ˆŽr-   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r    Úpixel_valuesrA   rW   )r(   r)   s   "€r*   r+   r‚   ¸   s#   ø€ ÷ ñ ¡E§L¡Lð ±U·\±\ñ r-   c                óŽ   € V P                  V4      pV P                  V4      pV P                  V4      pV P                  V4      pV# ©N)r†   r”   r˜   rš   )rK   rŸ   Úfeaturess   && r*   ÚforwardÚAlignVisionEmbeddings.forward¸   sA   € Ø—<‘< Ó-ˆØ×#Ñ# HÓ-ˆØ—>‘> (Ó+ˆØ—?‘? 8Ó,ˆàˆr-   )rš   r˜   r”   r‘   r†   ©
r/   r0   r1   r2   r3   r�   r£   r5   r6   Ú__classcell__©rœ   r)   s   @@r*   r~   r~   ¨   s#   ù‡ € ñ÷	4ó 	4÷÷ ð r-   r~   c                   ó6   a a€ ] tR t^Ât oRV 3R lltRtVtV ;t# )ÚAlignVisionDepthwiseConv2dc	                óH   <€ W,          p	\         S
V `  VV	VVVVVVVR 7	       R# ))	Úin_channelsÚout_channelsrv   r‰   r†   ÚdilationÚgroupsrŠ   Úpadding_modeN)r�   r�   )rK   r«   Údepth_multiplierrv   r‰   r†   r­   rŠ   r¯   r¬   rœ   s   &&&&&&&&& €r*   r�   Ú#AlignVisionDepthwiseConv2d.__init__Ã   s:   ø€ ð #Õ5ˆÜ‰ÑØ#Ø%Ø#ØØØØØØ%ð 	ö 
	
r-   r.   )rŽ   é   rŽ   r�   rŽ   TÚzeros)r/   r0   r1   r2   r�   r5   r6   r¦   r§   s   @@r*   r©   r©   Â   s   ù‡ € ÷
÷ 
r-   r©   c                   óT   a a€ ] tR t^Ýt oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚAlignVisionExpansionLayerzW
This corresponds to the expansion phase of each block in the original implementation.
c                ó2   <€ V ^8„  d   QhRS[ RS[RS[RS[/# )r    rj   Úin_dimr‘   r‰   rl   )r(   r)   s   "€r*   r+   Ú&AlignVisionExpansionLayer.__annotate__â   s+   ø€ ÷ 
4ñ 
4Ñ0ð 
4¹#ð 
4Éð 
4ÑUXñ 
4r-   c                óè   <€ \         SV `  4        \        P                  ! VV^RRR7      V n        \        P
                  ! W1P                  R7      V n        \        VP                  ,          V n
        R# )rŽ   ÚsameF©r«   r¬   rv   r†   rŠ   )Únum_featuresr‹   N)r�   r�   r   r“   Úexpand_convr•   r–   Ú	expand_bnr   r™   Ú
expand_act)rK   rj   r·   r‘   r‰   rœ   s   &&&&&€r*   r�   Ú"AlignVisionExpansionLayer.__init__â   sX   ø€ Ü‰ÑÔÜŸ9š9ØØ ØØØô
ˆÔô Ÿš°W×BWÑBWÔXˆŒÜ  ×!2Ñ!2Õ3ˆŽr-   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r    r#   rA   ©r%   r&   rX   )r(   r)   s   "€r*   r+   r¸   î   s%   ø€ ÷ ñ ¡U×%6Ñ%6ð ¹5¿<¹<ñ r-   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# r¡   )r½   r¾   r¿   ©rK   r#   s   &&r*   r£   Ú!AlignVisionExpansionLayer.forwardî   s4   € à×(Ñ(¨Ó7ˆØŸ™ }Ó5ˆØŸ™¨Ó6ˆàÐr-   )r¿   r¾   r½   r¥   r§   s   @@r*   rµ   rµ   Ý   s#   ù‡ € ñ÷
4ó 
4÷÷ ð r-   rµ   c                   óT   a a€ ] tR t^øt oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚAlignVisionDepthwiseLayerzc
This corresponds to the depthwise convolution phase of each block in the original implementation.
c          
      ó8   <€ V ^8„  d   QhRS[ RS[RS[RS[RS[/# )r    rj   r·   r‰   rv   Úadjust_padding©r   rm   rx   )r(   r)   s   "€r*   r+   Ú&AlignVisionDepthwiseLayer.__annotate__ý   s=   ø€ ÷ 7ñ 7á!ð7ñ ð7ñ ð	7ñ
 ð7ñ ñ7r-   c                ój  <€ \         SV `  4        W0n        V P                  ^8X  d   RMRp\        WER7      p\        P
                  ! VR7      V n        \        W$W6RR7      V n        \        P                  ! W!P                  VP                  R7      V n        \        VP                  ,          V n        R# )	r    r‡   rº   )rw   r…   Frˆ   ©r¼   r‹   rŒ   N)r�   r�   r‰   r|   r   r’   Údepthwise_conv_padr©   Údepthwise_convr•   r–   r—   Údepthwise_normr   r™   Údepthwise_act)	rK   rj   r·   r‰   rv   rÊ   Úconv_padr†   rœ   s	   &&&&&&  €r*   r�   Ú"AlignVisionDepthwiseLayer.__init__ý   s�   ø€ ô 	‰ÑÔØŒØ"Ÿk™k¨QÔ.‘7°FˆÜ˜kÔAˆä"$§,¢,°wÔ"?ˆÔÜ8Ø°FÐSXô
ˆÔô !ŸnšnØ×%:Ñ%:ÀV×E_ÑE_ô
ˆÔô $ F×$5Ñ$5Õ6ˆÖr-   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# rÂ   rÃ   )r(   r)   s   "€r*   r+   rÌ     s%   ø€ ÷ 	ñ 	¡U×%6Ñ%6ð 	¹5¿<¹<ñ 	r-   c                ó°   € V P                   ^8X  d   V P                  V4      pV P                  V4      pV P                  V4      pV P	                  V4      pV# )r    )r‰   rÏ   rÐ   rÑ   rÒ   rÅ   s   &&r*   r£   Ú!AlignVisionDepthwiseLayer.forward  sT   € à�;‰;˜!ÔØ ×3Ñ3°MÓBˆMà×+Ñ+¨MÓ:ˆØ×+Ñ+¨MÓ:ˆØ×*Ñ*¨=Ó9ˆàÐr-   )rÒ   rÐ   rÏ   rÑ   r‰   r¥   r§   s   @@r*   rÈ   rÈ   ø   s#   ù‡ € ñ÷7ó 7÷,	÷ 	ð 	r-   rÈ   c                   óX   a a€ ] tR tRt oRtRV3R lV 3R llltV3R lR ltRtVtV ;t	# )	ÚAlignVisionSqueezeExciteLayeri   zd
This corresponds to the Squeeze and Excitement phase of each block in the original implementation.
c                ó2   <€ V ^8„  d   QhRS[ RS[RS[RS[/# )r    rj   r·   Ú
expand_dimÚexpandrË   )r(   r)   s   "€r*   r+   Ú*AlignVisionSqueezeExciteLayer.__annotate__%  s+   ø€ ÷ 'ñ 'Ñ0ð '¹#ð 'É3ð 'ÑX\ñ 'r-   c                ó
  <€ \         SV `  4        V'       d   TMTV n        \        ^\	        W!P
                  ,          4      4      V n        \        P                  ! ^R7      V n	        \        P                  ! V P                  V P                  ^RR7      V n        \        P                  ! V P                  V P                  ^RR7      V n        \        VP                  ,          V n        \        P                   ! 4       V n        R# )rŽ   )Úoutput_sizerº   )r«   r¬   rv   r†   N)r�   r�   Údimrq   rm   Úsqueeze_expansion_ratioÚdim_ser   ÚAdaptiveAvgPool2dÚsqueezer“   ÚreducerÜ   r   r™   Ú
act_reduceÚSigmoidÚ
act_expand)rK   rj   r·   rÛ   rÜ   rœ   s   &&&&&€r*   r�   Ú&AlignVisionSqueezeExciteLayer.__init__%  s²   ø€ Ü‰ÑÔß!'‘:¨VˆŒÜ˜!œS ×*HÑ*HÕ!HÓIÓJˆŒä×+Ò+¸Ô:ˆŒÜ—i’iØŸ™ØŸ™ØØô	
ˆŒô —i’iØŸ™ØŸ™ØØô	
ˆŒô ! ×!2Ñ!2Õ3ˆŒÜŸ*š*›,ˆŽr-   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# rÂ   rÃ   )r(   r)   s   "€r*   r+   rÝ   :  ó%   ø€ ÷ 
ñ 
¡U×%6Ñ%6ð 
¹5¿<¹<ñ 
r-   c                óà   € TpV P                  V4      pV P                  V4      pV P                  V4      pV P                  V4      pV P	                  V4      p\
        P                  ! W!4      pV# r¡   )rä   rå   ræ   rÜ   rè   r%   Úmul)rK   r#   Úinputss   && r*   r£   Ú%AlignVisionSqueezeExciteLayer.forward:  sa   € ØˆØŸ™ ]Ó3ˆØŸ™ MÓ2ˆØŸ™¨Ó6ˆàŸ™ MÓ2ˆØŸ™¨Ó6ˆÜŸ	š	 &Ó8ˆàÐr-   )rè   ræ   rà   râ   rÜ   rå   rä   )Fr¥   r§   s   @@r*   rÙ   rÙ      s#   ù‡ € ñ÷'õ '÷*
÷ 
ð 
r-   rÙ   c                   óT   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VtV ;t	# )ÚAlignVisionFinalBlockLayeriG  zS
This corresponds to the final phase of each block in the original implementation.
c                ó>   <€ V ^8„  d   QhRS[ RS[RS[RS[RS[RS[/# )r    rj   r·   r‘   r‰   Ú	drop_rateÚid_skip©r   rm   Úfloatrx   )r(   r)   s   "€r*   r+   Ú'AlignVisionFinalBlockLayer.__annotate__L  s=   ø€ ÷ /ñ /Ù'ð/Ù14ð/Ù?Bð/ÙLOð/Ù\að/Ùlpñ/r-   c                ó0  <€ \         SV `  4        V^8H  ;'       d    V'       * V n        \        P                  ! VV^RRR7      V n        \        P                  ! W1P                  VP                  R7      V n	        \        P                  ! VR7      V n        R# )rŽ   rº   Fr»   rÎ   )ÚpN)r�   r�   Úapply_dropoutr   r“   Úproject_convr•   r–   r—   Ú
project_bnÚDropoutÚdropout)rK   rj   r·   r‘   r‰   ró   rô   rœ   s   &&&&&&&€r*   r�   Ú#AlignVisionFinalBlockLayer.__init__L  s{   ø€ ô 	‰ÑÔØ# q™[×8Ð8°¬[ˆÔÜŸIšIØØ ØØØô
ˆÔô Ÿ.š.Ø ×&;Ñ&;Àf×F`ÑF`ô
ˆŒô —z’z IÔ.ˆŽr-   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# )r    Ú
embeddingsr#   rA   rÃ   )r(   r)   s   "€r*   r+   r÷   ]  s5   ø€ ÷ ñ ¡%×"3Ñ"3ð ÁE×DUÑDUð ÑZ_×ZfÑZfñ r-   c                ó    € V P                  V4      pV P                  V4      pV P                  '       d   V P                  V4      pW!,           pV# r¡   )rû   rü   rú   rþ   )rK   r  r#   s   &&&r*   r£   Ú"AlignVisionFinalBlockLayer.forward]  sH   € Ø×)Ñ)¨-Ó8ˆØŸ™¨Ó6ˆà××ÐØ ŸL™L¨Ó7ˆMØ)Õ6ˆMàÐr-   )rú   rþ   rü   rû   r¥   r§   s   @@r*   rñ   rñ   G  s#   ù‡ € ñ÷/ó /÷"÷ ð r-   rñ   c                   óT   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VtV ;t	# )ÚAlignVisionBlockih  a1  
This corresponds to the block module of the original EfficientNet vision encoder implementation.

Args:
    config ([`AlignVisionConfig`]):
        Model configuration class.
    in_dim (`int`):
        Number of input channels.
    out_dim (`int`):
        Number of output channels.
    stride (`int`):
        Stride size to be used in convolution layers.
    expand_ratio (`int`):
        Expand ratio to set the output dimensions for the expansion and squeeze-excite layers.
    kernel_size (`int`):
        Kernel size for the depthwise convolution layer.
    drop_rate (`float`):
        Dropout rate to be used in the final phase of each block.
    id_skip (`bool`):
        Whether to apply dropout and sum the final hidden states with the input embeddings during the final phase
        of each block. Set to `True` for the first block of each stage.
    adjust_padding (`bool`):
        Whether to apply padding to only right and bottom side of the input kernel before the depthwise convolution
        operation, set to `True` for inputs with odd input sizes.
c                óP   <€ V ^8„  d   QhRS[ RS[RS[RS[RS[RS[RS[RS[R	S[/	# )
r    rj   r·   r‘   r‰   Úexpand_ratiorv   ró   rô   rÊ   rõ   )r(   r)   s   "€r*   r+   ÚAlignVisionBlock.__annotate__ƒ  se   ø€ ÷ '
ñ '
á!ð'
ñ ð'
ñ ð	'
ñ
 ð'
ñ ð'
ñ ð'
ñ ð'
ñ ð'
ñ ñ'
r-   c
           	     óŽ  <€ \         SV `  4        WPn        V P                  ^8g  V n        W%,          p
V P                  '       d   \	        WW¤R7      V n        \        TV P                  '       d   T
MTVVV	R7      V n        \        WW P                  R7      V n	        \        TV P                  '       d   T
MTVVVVR7      V n        R# )rŽ   )rj   r·   r‘   r‰   )rj   r·   r‰   rv   rÊ   )rj   r·   rÛ   rÜ   )rj   r·   r‘   r‰   ró   rô   N)r�   r�   r  rÜ   rµ   Ú	expansionrÈ   rÐ   rÙ   Úsqueeze_exciterñ   Ú
projection)rK   rj   r·   r‘   r‰   r  rv   ró   rô   rÊ   Úexpand_in_dimrœ   s   &&&&&&&&&& €r*   r�   ÚAlignVisionBlock.__init__ƒ  s´   ø€ ô 	‰ÑÔØ(ÔØ×'Ñ'¨1Ñ,ˆŒØÕ-ˆà�;�;ˆ;Ü6Ø°môˆDŒNô 8ØØ$(§K§K K‘=°VØØ#Ø)ô
ˆÔô <Ø°]Ï;É;ô
ˆÔô 5ØØ$(§K§K K‘=°VØØØØô
ˆŽr-   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# rÂ   rÃ   )r(   r)   s   "€r*   r+   r  ¬  rë   r-   c                ó´   € TpV P                   ^8w  d   V P                  V4      pV P                  V4      pV P                  V4      pV P	                  W!4      pV# )rŽ   )r  r
  rÐ   r  r  )rK   r#   r  s   && r*   r£   ÚAlignVisionBlock.forward¬  sY   € Ø"ˆ
à×Ñ Ô!Ø ŸN™N¨=Ó9ˆMØ×+Ñ+¨MÓ:ˆð ×+Ñ+¨MÓ:ˆØŸ™¨
ÓBˆØÐr-   )rÐ   rÜ   r  r
  r  r  r¥   r§   s   @@r*   r  r  h  s$   ù‡ € ñ÷4'
ó '
÷R
÷ 
ð 
r-   r  c                   óT   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VtV ;t	# )ÚAlignVisionEncoderi¹  z£
Forward propagates the embeddings through each vision encoder (EfficientNet) block.

Args:
    config ([`AlignVisionConfig`]):
        Model configuration class.
c                ó    <€ V ^8„  d   QhRS[ /# r€   r�   )r(   r)   s   "€r*   r+   ÚAlignVisionEncoder.__annotate__Â  s   ø€ ÷ ),ñ ),Ñ0ñ ),r-   c                ó:  <a a€ \         SS `  4        VP                  S n        V 3R  lo\        VP                  4      p\        V3R lVP                   4       4      p^ p. p\        V4       EF  p\        WP                  V,          4      p\        WP                  V,          4      pVP                  V,          p	VP                  V,          p
VP                  V,          p\        S! VP                  V,          4      4       Ft  pV^ 8H  pV^ 8”  d   ^MT	p	V^ 8”  d   TMTpWAP                  9  pVP                  V,          V,          p\        VVVV	V
VVVVR7	      pVP!                  V4       V^,          pKv  	  EK  	  \"        P$                  ! V4      S n        R# )c                 ód   <€ \        \        P                  ! SP                  V ,          4      4      # r¡   )rm   ÚmathÚceilÚdepth_coefficient)ÚrepeatsrK   s   &€r*   Úround_repeatsÚ2AlignVisionEncoder.__init__.<locals>.round_repeatsÆ  s"   ø€ ä”t—y’y ×!7Ñ!7¸'Õ!AÓBÓCÐCr-   c              3   ó4   <"  € T F  pS! V4      x € K  	  R # 5ir¡   r.   )rI   Únr  s   & €r*   rL   Ú.AlignVisionEncoder.__init__.<locals>.<genexpr>Ë  s   øé € ÐLÑ3K¨a™ q×)Ð)Ó3Kùs   ƒ)	rj   r·   r‘   r‰   rv   r  ró   rô   rÊ   N)r�   r�   r  r`   r«   ÚsumÚnum_block_repeatsÚrangert   r¬   ÚstridesÚkernel_sizesÚexpand_ratiosÚdepthwise_paddingÚdrop_connect_rater  Úappendr   Ú
ModuleListÚblocks)rK   rj   Únum_base_blocksÚ
num_blocksÚcurr_block_numr+  Úir·   r‘   r‰   rv   r  Újrô   rÊ   ró   Úblockr  rœ   s   f&               @€r*   r�   ÚAlignVisionEncoder.__init__Â  sp  ú€ Ü‰ÑÔØ!'×!9Ñ!9ˆÔõ	Dô ˜f×0Ñ0Ó1ˆÜÔL°6×3KÒ3KÓLÓLˆ
àˆØˆÜ�×'ˆAÜ" 6×+=Ñ+=¸aÕ+@ÓAˆFÜ# F×,?Ñ,?ÀÕ,BÓCˆGØ—^‘^ AÕ&ˆFØ ×-Ñ-¨aÕ0ˆKØ!×/Ñ/°Õ2ˆLä™=¨×)AÑ)AÀ!Õ)DÓEÖF�Ø˜q™&�Ø !œe™¨�Ø$%¨¤E™¨v�Ø!/×7OÑ7OÑ!O�Ø"×4Ñ4°~ÕEÈ
ÕR�	ä(Ø!Ø!Ø#Ø!Ø +Ø!-Ø'Ø#Ø#1ô
�ð —‘˜eÔ$Ø !Õ#’ô' Gñ (ô8 —m’m FÓ+ˆŽr-   c                óP   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[/# )r    r#   ÚkwargsrA   )r%   r&   r   r   r   )r(   r)   s   "€r*   r+   r  í  s5   ø€ ÷ 

ñ 

á×(Ñ(ð

ñ Ñ+Õ,ð

ñ 
(ñ	

r-   c                óP   € V P                    F  pV! V4      pK  	  \        VR 7      # ©)r"   )r+  r   )rK   r#   r4  r1  s   &&, r*   r£   ÚAlignVisionEncoder.forwardí  s.   € ð
 —[”[ˆEÙ! -Ó0ŠMñ !ô .Ø+ô
ð 	
r-   )r+  r  r¥   r§   s   @@r*   r  r  ¹  s$   ù‡ € ñ÷),ó ),÷V

÷ 

ð 

r-   r  c                   óL   a a€ ] tR tRt oRtV 3R ltRV3R lR lltRtVtV ;t	# )ÚAlignTextEmbeddingsiú  zGConstruct the embeddings from word, position and token_type embeddings.c                óN  <€ \         SV `  4        \        P                  ! VP                  VP
                  VP                  R 7      V n        \        P                  ! VP                  VP
                  4      V n	        \        P                  ! VP                  VP
                  4      V n        \        P                  ! VP
                  VP                  R7      V n        \        P                  ! VP                  4      V n        \        P"                  ! \$        P&                  ! VP                  4      P)                  R4      RR7      V n        \        P"                  ! \$        P,                  ! V P*                  P/                  4       \$        P0                  R7      RR7      V n        R# ))Úpadding_idx©r‹   F)Ú
persistent)ÚdtypeN©rŽ   éÿÿÿÿ)r�   r�   r   Ú	EmbeddingÚ
vocab_sizeÚhidden_sizeÚpad_token_idÚword_embeddingsÚmax_position_embeddingsÚposition_embeddingsÚtype_vocab_sizeÚtoken_type_embeddingsÚ	LayerNormÚlayer_norm_epsrý   Úhidden_dropout_probrþ   ÚBufferr%   r_   rÜ   Úposition_idsr³   ÚsizeÚlongÚtoken_type_idsr›   s   &&€r*   r�   ÚAlignTextEmbeddings.__init__ý  s  ø€ Ü‰ÑÔÜ!Ÿ|š|¨F×,=Ñ,=¸v×?QÑ?QÐ_e×_rÑ_rÔsˆÔÜ#%§<¢<°×0NÑ0NÐPV×PbÑPbÓ#cˆÔ Ü%'§\¢\°&×2HÑ2HÈ&×J\ÑJ\Ó%]ˆÔ"äŸš f×&8Ñ&8¸f×>SÑ>SÔTˆŒÜ—z’z &×"<Ñ"<Ó=ˆŒäŸIšI¤e§l¢l°6×3QÑ3QÓ&R×&YÑ&YÐZaÓ&bÐotÔuˆÔÜ Ÿiši¬¯ª°D×4EÑ4E×4JÑ4JÓ4LÔTY×T^ÑT^Ô(_ÐlqÔrˆÖ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[ P                  /# )r    Ú	input_idsNrQ  rN  Úinputs_embedsrA   )r%   Ú
LongTensorr&   rX   )r(   r)   s   "€r*   r+   Ú AlignTextEmbeddings.__annotate__	  sm   ø€ ÷ &ñ &á×#Ñ# dÕ*ð&ñ ×(Ñ(¨4Õ/ð&ñ ×&Ñ&¨Õ-ð	&ñ
 ×(Ñ(¨4Õ/ð&ñ 
�‰ñ&r-   c                óx  € Ve   VP                  4       pMVP                  4       R R pV^,          pVf   V P                  RR V13,          pVf�   \        V R4      '       d4   V P                  RR V13,          pVP	                  V^ ,          V4      pTpM;\
        P                  ! V\
        P                  V P                  P                  R7      pVf   V P                  V4      pV P                  V4      p	WI,           p
V P                  V4      pW«,          p
V P                  V
4      p
V P                  V
4      p
V
# )NºNNNrQ  )r>  r[   r@  )rO  rN  ÚhasattrrQ  rÜ   r%   r³   rP  r[   rE  rI  rG  rJ  rþ   )rK   rT  rQ  rN  rU  Úinput_shapeÚ
seq_lengthÚbuffered_token_type_idsÚ buffered_token_type_ids_expandedrI  r  rG  s   &&&&&       r*   r£   ÚAlignTextEmbeddings.forward	  s.  € ð Ò Ø#Ÿ.™.Ó*‰Kà'×,Ñ,Ó.¨s°Ð3ˆKà  •^ˆ
àÒØ×,Ñ,¨Q°°°¨^Õ<ˆLð
 Ò!Ü�tÐ-×.Ò.Ø*.×*=Ñ*=¸aÀÀ*À¸nÕ*MÐ'Ø3J×3QÑ3QÐR]Ð^_ÕR`ÐblÓ3mÐ0Ø!A‘ä!&§¢¨[ÄÇ
Á
ÐSW×SdÑSd×SkÑSkÔ!l�àÒ Ø ×0Ñ0°Ó;ˆMØ $× :Ñ :¸>Ó JÐØ"Õ:ˆ
à"×6Ñ6°|ÓDÐØÕ)ˆ
à—^‘^ JÓ/ˆ
Ø—\‘\ *Ó-ˆ
ØÐr-   )rJ  rþ   rG  rN  rI  rQ  rE  )NNNNr¥   r§   s   @@r*   r9  r9  ú  s   ù‡ € ÙQõ
s÷&÷ &ò &r-   r9  c                óÞ   € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R\        P                  R\        P                  R,          R\        R\        /# )	r    ÚmoduleÚqueryÚkeyÚvalueÚattention_maskNÚscalingrþ   )r   ÚModuler%   rX   rö   )r(   s   "r*   r+   r+   2  sg   € ÷ %ñ %Ü�I‰Ið%ä�<‰<ð%ô 
�‰ð%ô �<‰<ð	%ô
 —L‘L 4Õ'ð%ô ð%ô ñ%r-   c                 óÎ  € \         P                  ! WP                  ^^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    )rà   r>  )rù   Útrainingr@  )r%   ÚmatmulÚ	transposer   r]   ÚsoftmaxÚfloat32Útor>  rþ   ri  Ú
contiguous)
ra  rb  rc  rd  re  rf  rþ   r4  Úattn_weightsÚattn_outputs
   &&&&&&&,  r*   Úeager_attention_forwardrr  2  s°   € ô —<’< §}¡}°Q¸Ó':Ó;¸gÕE€LØÒ!Ø#Õ4ˆä—=‘=×(Ñ(¨¸2ÄUÇ]Á]Ð(ÓS×VÑVÐW\×WbÑWbÓc€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ó[€Lä—,’,˜|Ó3€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KØÐ$Ð$r-   c                   óH   a a€ ] tR tRt oV 3R ltRV3R lR lltRtVtV ;t# )ÚAlignTextSelfAttentioniH  c                ó\  <€ \         SV `  4        VP                  VP                  ,          ^ 8w  d9   \	        VR4      '       g'   \        RVP                   RVP                   R24      hWn        VP                  V n        \        VP                  VP                  ,          4      V n        V P                  V P                  ,          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                   4      V n        VP                   V n        V P                  R,          V n        R# )r�   Úembedding_sizezThe hidden size (z6) is not a multiple of the number of attention heads (Ú)Ng      à¿)r�   r�   rC  Únum_attention_headsrZ  Ú
ValueErrorrj   rm   Úattention_head_sizeÚall_head_sizer   ÚLinearrb  rc  rd  rý   Úattention_probs_dropout_probrþ   Úattention_dropoutrf  r›   s   &&€r*   r�   ÚAlignTextSelfAttention.__init__I  sD  ø€ Ü‰ÑÔØ×Ñ × :Ñ :Õ:¸aÔ?ÌÐPVÐXh×HiÒHiÜØ# F×$6Ñ$6Ð#7ð 8Ø ×4Ñ4Ð5°Qð8óð ð
 ŒØ#)×#=Ñ#=ˆÔ Ü#& v×'9Ñ'9¸F×<VÑ<VÕ'VÓ#WˆÔ Ø!×5Ñ5¸×8PÑ8PÕPˆÔä—Y’Y˜v×1Ñ1°4×3EÑ3EÓFˆŒ
Ü—9’9˜V×/Ñ/°×1CÑ1CÓDˆŒÜ—Y’Y˜v×1Ñ1°4×3EÑ3EÓFˆŒ
ä—z’z &×"EÑ"EÓFˆŒØ!'×!DÑ!DˆÔØ×/Ñ/°Õ5ˆŽ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    r#   re  Nr4  rA   )r%   rX   r&   r   r   r'   )r(   r)   s   "€r*   r+   Ú#AlignTextSelfAttention.__annotate__^  s_   ø€ ÷ )ñ )á—|‘|ð)ñ ×)Ñ)¨DÕ0ð)ñ Ñ+Õ,ð	)ñ
 
‰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4      P	                  ^^4      pV P                  V4      P                  V4      P	                  ^^4      pV P                  V4      P                  V4      P	                  ^^4      p\        P                  ! V P                  P                  \        4      p	T	! V VVVV3RV P                  '       g   RMV P                  RV P                  /VB w  r«V
P                  ! . VORN5!  P!                  4       p
W«3# )Nrþ   ç        rf  r@  )Úshaperz  rb  Úviewrk  rc  rd  r   Úget_interfacerj   Ú_attn_implementationrr  ri  r~  rf  Úreshapero  )rK   r#   re  r4  r[  Úhidden_shapeÚquery_statesÚ
key_statesÚvalue_statesÚattention_interfacerq  rp  s   &&&,        r*   r£   ÚAlignTextSelfAttention.forward^  sA  € ð $×)Ñ)¨#¨2Ð.ˆØC˜ÐC bÐC¨$×*BÑ*BÑCˆà—z‘z -Ó0×5Ñ5°lÓC×MÑMÈaÐQRÓSˆØ—X‘X˜mÓ,×1Ñ1°,Ó?×IÑIÈ!ÈQÓOˆ
Ø—z‘z -Ó0×5Ñ5°lÓC×MÑMÈaÐQRÓSˆä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØñ	%
ð  $Ÿ}Ÿ}˜}‘C°$×2HÑ2Hð	%
ð —L‘Lð	%
ð ñ	%
Ñ!ˆð "×)Ò)Ð;¨;Ð;¸Ó;×FÑFÓHˆØÐ(Ð(r-   )
r{  r~  rz  rj   rþ   rc  rx  rb  rf  rd  r¡   ©	r/   r0   r1   r2   r�   r£   r5   r6   r¦   r§   s   @@r*   rt  rt  H  s   ù‡ € õ6÷*)÷ )ò )r-   rt  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# )ÚAlignTextSelfOutputi  c                ó0  <€ \         SV `  4        \        P                  ! VP                  VP                  4      V n        \        P                  ! VP                  VP                  R 7      V n        \        P                  ! VP                  4      V n
        R# ©r<  N)r�   r�   r   r|  rC  ÚdenserJ  rK  rý   rL  rþ   r›   s   &&€r*   r�   ÚAlignTextSelfOutput.__init__€  s`   ø€ Ü‰ÑÔÜ—Y’Y˜v×1Ñ1°6×3EÑ3EÓFˆŒ
ÜŸš f×&8Ñ&8¸f×>SÑ>SÔTˆŒÜ—z’z &×"<Ñ"<Ó=ˆŽr-   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# ©r    r#   Úinput_tensorrA   rW   )r(   r)   s   "€r*   r+   Ú AlignTextSelfOutput.__annotate__†  ó1   ø€ ÷ ñ ¡U§\¡\ð ÁÇÁð ÑRW×R^ÑR^ñ r-   c                óx   € V P                  V4      pV P                  V4      pV P                  W,           4      pV# r¡   ©r•  rþ   rJ  ©rK   r#   r™  s   &&&r*   r£   ÚAlignTextSelfOutput.forward†  ó5   € ØŸ
™
 =Ó1ˆØŸ™ ]Ó3ˆØŸ™ }Õ'CÓDˆØÐr-   ©rJ  r•  rþ   r�  r§   s   @@r*   r’  r’    ó   ù‡ € õ>÷÷ ð r-   r’  c                   óH   a a€ ] tR tRt oV 3R ltRV3R lR lltRtVtV ;t# )ÚAlignTextAttentioni�  c                ód   <€ \         SV `  4        \        V4      V n        \	        V4      V n        R # r¡   )r�   r�   rt  rK   r’  Úoutputr›   s   &&€r*   r�   ÚAlignTextAttention.__init__Ž  s&   ø€ Ü‰ÑÔÜ*¨6Ó2ˆŒ	Ü)¨&Ó1ˆŽr-   c                óŒ   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          RS[ P                  /# r�  ©r%   rX   r&   r   r   )r(   r)   s   "€r*   r+   ÚAlignTextAttention.__annotate__“  sL   ø€ ÷ ñ á—|‘|ðñ ×)Ñ)¨DÕ0ðñ Ñ+Õ,ð	ñ
 
�‰ñr-   c                óZ   € TpV P                   ! V3R V/VB w  rV P                  W4      pV# ©re  )rK   r¦  )rK   r#   re  r4  ÚresidualÚ_s   &&&,  r*   r£   ÚAlignTextAttention.forward“  sE   € ð !ˆØŸ9š9Øñ
à)ð
ð ñ
Ñˆð
 Ÿ™ MÓ<ˆØÐr-   )r¦  rK   r¡   r�  r§   s   @@r*   r¤  r¤  �  s   ù‡ € õ2÷
÷ ò 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# )ÚAlignTextIntermediatei¤  c                ó"  <€ \         SV `  4        \        P                  ! VP                  VP
                  4      V n        \        VP                  \        4      '       d   \        VP                  ,          V n        R # VP                  V n        R # r¡   )r�   r�   r   r|  rC  Úintermediate_sizer•  rz   r™   Ústrr   Úintermediate_act_fnr›   s   &&€r*   r�   ÚAlignTextIntermediate.__init__¥  s`   ø€ Ü‰ÑÔÜ—Y’Y˜v×1Ñ1°6×3KÑ3KÓLˆŒ
Ü�f×'Ñ'¬×-Ò-Ü'-¨f×.?Ñ.?Õ'@ˆDÖ$à'-×'8Ñ'8ˆDÖ$r-   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# rÂ   rW   )r(   r)   s   "€r*   r+   Ú"AlignTextIntermediate.__annotate__­  s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r-   c                óJ   € V P                  V4      pV P                  V4      pV# r¡   ©r•  rµ  rÅ   s   &&r*   r£   ÚAlignTextIntermediate.forward­  s&   € ØŸ
™
 =Ó1ˆØ×0Ñ0°Ó?ˆØÐr-   rº  r�  r§   s   @@r*   r±  r±  ¤  s   ù‡ € õ9÷÷ ð 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# )ÚAlignTextOutputi´  c                ó0  <€ \         SV `  4        \        P                  ! VP                  VP
                  4      V n        \        P                  ! VP
                  VP                  R 7      V n        \        P                  ! VP                  4      V n        R# r”  )r�   r�   r   r|  r³  rC  r•  rJ  rK  rý   rL  rþ   r›   s   &&€r*   r�   ÚAlignTextOutput.__init__µ  s`   ø€ Ü‰ÑÔÜ—Y’Y˜v×7Ñ7¸×9KÑ9KÓLˆŒ
ÜŸš f×&8Ñ&8¸f×>SÑ>SÔTˆŒÜ—z’z &×"<Ñ"<Ó=ˆŽr-   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# r˜  rW   )r(   r)   s   "€r*   r+   ÚAlignTextOutput.__annotate__»  r›  r-   c                óx   € V P                  V4      pV P                  V4      pV P                  W,           4      pV# r¡   r�  rž  s   &&&r*   r£   ÚAlignTextOutput.forward»  r   r-   r¡  r�  r§   s   @@r*   r½  r½  ´  r¢  r-   r½  c                   óN   a a€ ] tR tRt oV 3R ltRV3R lR lltR tRtVtV ;t	# )ÚAlignTextLayeriÂ  c                ó´   <€ \         SV `  4        VP                  V n        ^V n        \	        V4      V n        \        V4      V n        \        V4      V n	        R# )rŽ   N)
r�   r�   Úchunk_size_feed_forwardÚseq_len_dimr¤  Ú	attentionr±  Úintermediater½  r¦  r›   s   &&€r*   r�   ÚAlignTextLayer.__init__Ã  sI   ø€ Ü‰ÑÔØ'-×'EÑ'EˆÔ$ØˆÔÜ+¨FÓ3ˆŒÜ1°&Ó9ˆÔÜ% fÓ-ˆŽr-   c                óŒ   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          RS[ P                  /# r�  r©  )r(   r)   s   "€r*   r+   ÚAlignTextLayer.__annotate__Ë  sL   ø€ ÷ ñ á—|‘|ðñ ×)Ñ)¨DÕ0ðñ Ñ+Õ,ð	ñ
 
�‰ñr-   c                óˆ   € V P                   ! V3R V/VB p\        V P                  V P                  V P                  V4      pV# r¬  )rÉ  r   Úfeed_forward_chunkrÇ  rÈ  )rK   r#   re  r4  s   &&&,r*   r£   ÚAlignTextLayer.forwardË  sW   € ð ŸšØñ
à)ð
ð ñ
ˆô 2Ø×#Ñ# T×%AÑ%AÀ4×CSÑCSÐUbó
ˆð Ðr-   c                óJ   € V P                  V4      pV P                  W!4      pV# r¡   )rÊ  r¦  )rK   Úattention_outputÚintermediate_outputÚlayer_outputs   &&  r*   rÏ  Ú!AlignTextLayer.feed_forward_chunkÝ  s)   € Ø"×/Ñ/Ð0@ÓAÐØ—{‘{Ð#6ÓIˆØÐr-   )rÉ  rÇ  rÊ  r¦  rÈ  r¡   )
r/   r0   r1   r2   r�   r£   rÏ  r5   r6   r¦   r§   s   @@r*   rÅ  rÅ  Â  s   ù‡ € õ.÷ò ÷$ò r-   rÅ  c                   óH   a a€ ] tR tRt oV 3R ltRV3R lR lltRtVtV ;t# )ÚAlignTextEncoderiã  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�   rj   r   r*  r#  Únum_hidden_layersrÅ  ÚlayerÚgradient_checkpointing)rK   rj   r/  rœ   s   && €r*   r�   ÚAlignTextEncoder.__init__ä  sR   ø€ Ü‰ÑÔØŒÜ—]’]ÄEÈ&×JbÑJbÔDcÓ#dÑDc¸q¤N°6Ö$:ÑDcÑ#dÓeˆŒ
Ø&+ˆÖ#ùò $es   ½A&c                óx   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          RS[/# r�  )r%   rX   r&   r   r   r
   )r(   r)   s   "€r*   r+   ÚAlignTextEncoder.__annotate__ê  sH   ø€ ÷ 
ñ 
á—|‘|ð
ñ ×)Ñ)¨DÕ0ð
ñ Ñ+Õ,ð	
ñ
 
ñ
r-   c                óT   € V P                    F  pV! VV3/ VB pK  	  \        VR 7      # r6  )rÚ  r
   )rK   r#   re  r4  Úlayer_modules   &&&, r*   r£   ÚAlignTextEncoder.forwardê  s>   € ð !ŸJœJˆLÙ(ØØñð ñŠMñ 'ô Ø+ô
ð 	
r-   )rj   rÛ  rÚ  r¡   r�  r§   s   @@r*   r×  r×  ã  s   ù‡ € õ,÷
÷ 
ò 
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# )ÚAlignTextPooleriý  c                ó¸   <€ \         SV `  4        \        P                  ! VP                  VP                  4      V n        \        P                  ! 4       V n        R # r¡   )r�   r�   r   r|  rC  r•  ÚTanhrš   r›   s   &&€r*   r�   ÚAlignTextPooler.__init__þ  s9   ø€ Ü‰ÑÔÜ—Y’Y˜v×1Ñ1°6×3EÑ3EÓFˆŒ
ÜŸ'š'›)ˆŽr-   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# rÂ   rW   )r(   r)   s   "€r*   r+   ÚAlignTextPooler.__annotate__  s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r-   c                ó\   € VR,          pV P                  V4      pV P                  V4      pV# )rY  )rY  r�   )r•  rš   )rK   r#   Úfirst_token_tensorÚpooled_outputs   &&  r*   r£   ÚAlignTextPooler.forward  s2   € ð +¨4Õ0ÐØŸ
™
Ð#5Ó6ˆØŸ™¨Ó6ˆØÐr-   )rš   r•  r�  r§   s   @@r*   rã  rã  ý  s   ù‡ € õ$÷
÷ ð r-   rã  c                   ó~   a a€ ] tR tRt oRtRtRt]P                  ! 4       V3R lV 3R ll4       t	V3R lt
RtVtV ;t# )	ÚAlignPreTrainedModeli  ÚalignTc                ó4   <€ V ^8„  d   QhRS[ P                  /# )r    ra  )r   rg  )r(   r)   s   "€r*   r+   Ú!AlignPreTrainedModel.__annotate__  s   ø€ ÷ 	/ñ 	/¡B§I¡Iñ 	/r-   c                ó–  <€ \         SV `  V4       \        V\        4      '       dŒ   \        P
                  ! VP                  P                  4       \        P                  ! VP                  P                  4       \        P                  ! VP                  V P                  P                  4       R# \        V\        4      '       d‚   \        P                  ! VP                   \"        P$                  ! VP                   P&                  R,          4      P)                  R4      4       \        P                  ! VP*                  4       R# R# )zInitialize the weightsNr@  r?  )r�   Ú_init_weightsrz   Ú
AlignModelÚinitÚxavier_uniform_Útext_projectionÚweightÚzeros_rŠ   Ú	constant_Útemperaturerj   Útemperature_init_valuer9  Úcopy_rN  r%   r_   r…  rÜ   rQ  )rK   ra  rœ   s   &&€r*   ró  Ú"AlignPreTrainedModel._init_weights  sÏ   ø€ ô 	‰Ñ˜fÔ%Ü�fœj×)Ò)Ü× Ò  ×!7Ñ!7×!>Ñ!>Ô?Ü�KŠK˜×.Ñ.×3Ñ3Ô4Ü�NŠN˜6×-Ñ-¨t¯{©{×/QÑ/QÖRÜ˜Ô 3×4Ò4Ü�JŠJ�v×*Ñ*¬E¯LªL¸×9LÑ9L×9RÑ9RÐSUÕ9VÓ,W×,^Ñ,^Ð_fÓ,gÔhÜ�KŠK˜×-Ñ-Ö.ñ 5r-   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r€   ©r   )r(   r)   s   "€r*   r+   rñ    ó   ø‡ ‚ áÑò r-   r.   )ÚimageÚtext)r/   r0   r1   r2   Úbase_model_prefixÚinput_modalitiesÚsupports_gradient_checkpointingr%   Úno_gradró  r4   r5   r6   r¦   r§   s   @@r*   rî  rî    s=   ù‡ € ð  ÐØ(ÐØ&*Ð#à
‡]‚]ƒ_÷	/ò 	/ó ð	/÷ … r-   rî  zJ
    The text model from ALIGN without any head or projection on top.
    c                   ó¤   a a€ ] tR tRt oRtR.tR]R]/tRV3R lV 3R lllt	R t
R t]]]RV3R	 lR
 ll4       4       4       tV3R ltRtVtV ;t# )ÚAlignTextModeli   r9  r#   r<   c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r    rj   Úadd_pooling_layer)r   rx   )r(   r)   s   "€r*   r+   ÚAlignTextModel.__annotate__.  s   ø€ ÷ ñ ™ð Á4ñ r-   c                óÆ   <€ \         SV `  V4       Wn        \        V4      V n        \        V4      V n        V'       d   \        V4      MRV n        V P                  4        R# )z^
add_pooling_layer (bool, *optional*, defaults to `True`):
    Whether to add a pooling layer
N)
r�   r�   rj   r9  r  r×  Úencoderrã  ÚpoolerÚ	post_init)rK   rj   r  rœ   s   &&&€r*   r�   ÚAlignTextModel.__init__.  sK   ø€ ô
 	‰Ñ˜Ô ØŒä-¨fÓ5ˆŒÜ'¨Ó/ˆŒç1B”o fÔ-ÈˆŒð 	�‰Ör-   c                ó.   € V P                   P                  # r¡   ©r  rE  rO   s   &r*   Úget_input_embeddingsÚ#AlignTextModel.get_input_embeddings>  s   € Ø�‰×.Ñ.Ð.r-   c                ó&   € WP                   n        R # r¡   r  )rK   rd  s   &&r*   Úset_input_embeddingsÚ#AlignTextModel.set_input_embeddingsA  s   € Ø*/�‰Ö'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[ P                  R,          RS[S[,          RS[S[,          /# ©	r    rT  Nre  rQ  rN  rU  r4  rA   ©r%   rX   r   r   r'   r   )r(   r)   s   "€r*   r+   r  G  s“   ø€ ÷ @
ñ @
á—<‘< $Õ&ð@
ñ Ÿ™ tÕ+ð@
ñ Ÿ™ tÕ+ð	@
ñ
 —l‘l TÕ)ð@
ñ —|‘| dÕ*ð@
ñ Ñ+Õ,ð@
ñ 
Ñ+Õ	+ñ@
r-   c                ó&  € Ve   Ve   \        R4      hVe#   V P                  W4       VP                  4       pM#Ve   VP                  4       RR	 pM\        R4      hVw  r‰Ve   VP                  MVP                  p
Vf   \        P
                  ! W‰3V
R7      pV P                  VVVVR7      p\        V P                  VVR7      pV P                  ! V3RV/VB pV^ ,          pV P                  e   V P                  V4      MRp\        VVR7      # )
aÝ  
Examples:

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

>>> model = AlignTextModel.from_pretrained("kakaobrain/align-base")
>>> tokenizer = AutoTokenizer.from_pretrained("kakaobrain/align-base")

>>> 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
```NzDYou cannot specify both input_ids and inputs_embeds at the same timez5You have to specify either input_ids or inputs_embedsrZ   )rT  rN  rQ  rU  )rj   rU  re  re  ©r"   Úpooler_outputr@  )ry  Ú%warn_if_padding_and_no_attention_maskrO  r[   r%   Úonesr  r   rj   r  r  r   )rK   rT  re  rQ  rN  rU  r4  r[  Ú
batch_sizer\  r[   Úembedding_outputÚencoder_outputsÚsequence_outputrë  s   &&&&&&,        r*   r£   ÚAlignTextModel.forwardD  s2  € ð6 Ò  ]Ò%>ÜÐcÓdÐdØÒ"Ø×6Ñ6°yÔQØ#Ÿ.™.Ó*‰KØÒ&Ø'×,Ñ,Ó.¨s°Ð3‰KäÐTÓUÐUà!,Ñˆ
Ø%.Ò%:�×!Ò!À×@TÑ@TˆàÒ!Ü"ŸZšZ¨*Ð)AÈ6ÔRˆNàŸ?™?ØØ%Ø)Ø'ð	 +ó 
Ðô 3Ø—;‘;Ø*Ø)ô
ˆð Ÿ,š,Øñ
à)ð
ð ñ
ˆð
 *¨!Õ,ˆØ8<¿¹Ò8O˜Ÿ™ OÔ4ÐUYˆä)Ø-Ø'ô
ð 	
r-   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r€   )r   )r(   r)   s   "€r*   r+   r     s   ø‡ ‚ ñ Ñò r-   ©rj   r  r  r  )r  ©T©NNNNN)r/   r0   r1   r2   r  Ú_no_split_modulesrÅ  rt  Ú_can_record_outputsr�   r  r  r   r   r   r£   r4   r5   r6   r¦   r§   s   @@r*   r	  r	     sq   ù‡ € ð !ÐØ.Ð/Ðà˜ØÐ,ðÐ÷
õ ò /ò0ð  ØØ÷@
ñ @
ó ó ó  ð@
÷O … r-   r	  zL
    The vision model from ALIGN without any head or projection on top.
    c                   óœ   a a€ ] tR tRt oRtRtRtRtR.tR]	/t
V3R lV 3R llt]]]RV3R	 lR
 ll4       4       4       tV3R ltRtVtV ;t# )ÚAlignVisionModeliŠ  rŸ   Fr”   r  r#   c                ó    <€ V ^8„  d   QhRS[ /# r€   r�   )r(   r)   s   "€r*   r+   ÚAlignVisionModel.__annotate__š  s   ø€ ÷ ñ Ñ0ñ r-   c                ó¦  <€ \         SV `  V4       Wn        \        V4      V n        \        V4      V n        VP                  R 8X  d)   \        P                  ! VP                  RR7      V n        MQVP                  R8X  d)   \        P                  ! VP                  RR7      V n        M\        RVP                   24      hV P                  4        R# )ÚmeanT)Ú	ceil_moderq   z2config.pooling must be one of ['mean', 'max'] got N)r�   r�   rj   r~   r  r  r  Úpooling_typer   Ú	AvgPool2dÚ
hidden_dimr  Ú	MaxPool2dry  Úpoolingr  r›   s   &&€r*   r�   ÚAlignVisionModel.__init__š  s¢   ø€ Ü‰Ñ˜Ô ØŒÜ/°Ó7ˆŒÜ)¨&Ó1ˆŒð ×Ñ &Ô(ÜŸ,š, v×'8Ñ'8ÀDÔIˆD�KØ× Ñ  EÔ)ÜŸ,š, v×'8Ñ'8ÀDÔIˆD�KäÐQÐRX×R`ÑR`ÐQaÐbÓcÐcð 	�‰Ör-   c                ón   <€ V ^8„  d   QhRS[ P                  R,          RS[S[,          RS[S[,          /# )r    rŸ   Nr4  rA   )r%   r&   r   r   r'   r   )r(   r)   s   "€r*   r+   r/  ®  s@   ø€ ÷ *
ñ *
á×'Ñ'¨$Õ.ð*
ñ Ñ+Õ,ð*
ñ 
Ñ9Õ	9ñ	*
r-   c                óú   € Vf   \        R4      hV P                  V4      pV P                  ! V3/ VB pV^ ,          pV P                  V4      pVP	                  VP
                  R,          4      p\        VVR7      # )a�  
Examples:

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

>>> model = AlignVisionModel.from_pretrained("kakaobrain/align-base")
>>> processor = AutoProcessor.from_pretrained("kakaobrain/align-base")

>>> 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
```z You have to specify pixel_values:Nr    Nr  )ry  r  r  r  r‰  r…  r   )rK   rŸ   r4  r"  r#  r"   rë  s   &&,    r*   r£   ÚAlignVisionModel.forward«  sˆ   € ð< ÒÜÐ?Ó@Ð@àŸ?™?¨<Ó8ÐØŸ,š,Øñ
àñ
ˆð ,¨AÕ.ÐØŸ™Ð$5Ó6ˆØ%×-Ñ-¨m×.AÑ.AÀ"Õ.EÓFˆä7Ø/Ø'ô
ð 	
r-   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r€   r�   )r(   r)   s   "€r*   r+   r/  Š  s   ø‡ ‚ ñ Ñò r-   r'  )r  r¡   )r/   r0   r1   r2   Úmain_input_namer  r  Ú_input_embed_layerr*  r  r+  r�   r   r   r   r£   r4   r5   r6   r¦   r§   s   @@r*   r-  r-  Š  sp   ù‡ € ð %€OØ!ÐØ&+Ð#Ø&ÐØ+Ð,ÐàÐ)ðÐ÷ó ð"  ØØ÷*
ñ *
ó ó ó  ð*
÷I … 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]]V3R lR l4       4       t]]RV3R lR	 ll4       4       t	V3R
 lt
RtVtV ;t# )rô  iÛ  c                ó    <€ V ^8„  d   QhRS[ /# r€   r   )r(   r)   s   "€r*   r+   ÚAlignModel.__annotate__ß  s   ø€ ÷ ñ ™{ñ r-   c                óè  <€ \         SV `  V4       \        VP                  \        4      '       g#   \        R \        VP                  4       R24      h\        VP                  \        4      '       g#   \        R\        VP                  4       R24      hVP                  pVP                  pVP                  V n	        VP                  V n        \        V4      V n        \        V4      V n        \         P"                  ! V P                  V P                  4      V n        \         P&                  ! \(        P*                  ! V P,                  P.                  4      4      V n        V P3                  4        R# )zLconfig.text_config is expected to be of type AlignTextConfig but is of type Ú.zPconfig.vision_config is expected to be of type AlignVisionConfig but is of type N)r�   r�   rz   Útext_configr   Ú	TypeErrorÚtypeÚvision_configr   Úprojection_dimrC  Útext_embed_dimr	  Ú
text_modelr-  Úvision_modelr   r|  r÷  Ú	Parameterr%   Útensorrj   rü  rû  r  )rK   rj   rD  rG  rœ   s   &&  €r*   r�   ÚAlignModel.__init__ß  s)  ø€ Ü‰Ñ˜Ô ä˜&×,Ñ,¬o×>Ò>ÜðÜ˜×+Ñ+Ó,Ð-¨Qð0óð ô
 ˜&×.Ñ.Ô0A×BÒBÜðÜ˜×-Ñ-Ó.Ð/¨qð2óð ð
 ×(Ñ(ˆØ×,Ñ,ˆà$×3Ñ3ˆÔØ)×5Ñ5ˆÔä(¨Ó5ˆŒÜ,¨]Ó;ˆÔä!Ÿyšy¨×)<Ñ)<¸d×>QÑ>QÓRˆÔÜŸ<š<¬¯ª°T·[±[×5WÑ5WÓ(XÓYˆÔð 	�‰Ö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[ P                  R,          RS[S[,          RS[S[,          /# r  r  )r(   r)   s   "€r*   r+   rA  ÿ  sŠ   ø€ ÷ "ñ "á—<‘< $Õ&ð"ñ Ÿ™ tÕ+ð"ñ Ÿ™ tÕ+ð	"ñ
 —l‘l TÕ)ð"ñ —|‘| dÕ*ð"ñ Ñ+Õ,ð"ñ 
Ñ+Õ	+ñ"r-   c                óŠ   € V P                   ! RRVRVRVRVRV/VB pV^ ,          R,          pV P                  V4      Vn        V# )a©  
Examples:

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

>>> model = AlignModel.from_pretrained("kakaobrain/align-base")
>>> tokenizer = AutoTokenizer.from_pretrained("kakaobrain/align-base")

>>> 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)
```rT  re  rQ  rN  rU  r.   ©rY  r�   rY  )rJ  r÷  r  )	rK   rT  re  rQ  rN  rU  r4  Útext_outputsr"   s	   &&&&&&,  r*   Úget_text_featuresÚAlignModel.get_text_featuresý  su   € ð2 48·?²?ñ 4
Øð4
à)ð4
ð *ð4
ð &ð	4
ð
 (ð4
ð ñ4
ˆð )¨�O¨GÕ4ÐØ%)×%9Ñ%9Ð:KÓ%LˆÔ"àÐr-   c                ó`   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[S[,          /# )r    rŸ   r4  rA   )r%   r&   r   r   r'   r   )r(   r)   s   "€r*   r+   rA  %  s<   ø€ ÷ Fñ FÙ!×-Ñ-ðFÙ9?Ñ@RÕ9SðFá	Ñ+Õ	+ñFr-   c                ó*   € V P                   ! RRV/VB # )a  
Examples:

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

>>> model = AlignModel.from_pretrained("kakaobrain/align-base")
>>> processor = AutoProcessor.from_pretrained("kakaobrain/align-base")

>>> 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.   )rK  )rK   rŸ   r4  s   &&,r*   Úget_image_featuresÚAlignModel.get_image_features#  s   € ð. × Ò ÑE¨lÐE¸fÑEÐEr-   c                óJ  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          R	S[S[,          R
S[S[,          /	# )r    rT  NrŸ   re  rQ  rN  rU  Úreturn_lossr4  rA   )	r%   rV  r&   rX   rx   r   r   r'   r?   )r(   r)   s   "€r*   r+   rA  >  s¹   ø€ ÷ K
ñ K
á×#Ñ# dÕ*ðK
ñ ×'Ñ'¨$Õ.ðK
ñ Ÿ™ tÕ+ð	K
ñ
 Ÿ™ tÕ+ðK
ñ —l‘l TÕ)ðK
ñ —|‘| dÕ*ðK
ñ ˜D•[ðK
ñ Ñ+Õ,ðK
ñ 
‘Õ	ñK
r-   c                óö  € V P                   ! RRV/VB p	V P                  ! RRVRVRVRVRV/VB p
V	^,          pV
^ ,          R,          pV P                  V4      pW»P                  ^RRR7      ,          pWÌP                  ^RRR7      ,          p\        P
                  ! WËP                  4       4      V P                  ,          pVP                  4       pR	pV'       d   \        V4      p\        VVVVVV
V	R
7      # )a^  
return_loss (`bool`, *optional*):
    Whether or not to return the contrastive loss.

Examples:

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

>>> model = AlignModel.from_pretrained("kakaobrain/align-base")
>>> processor = AutoProcessor.from_pretrained("kakaobrain/align-base")

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

>>> inputs = processor(
...     images=image, text=["a photo of a cat", "a photo of a dog"], 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Ÿ   rT  re  rQ  rN  rU  T)rù   rà   ÚkeepdimN)rR   rS   rT   r;   r!   rE   rF   r.   rQ  r@  )
rK  rJ  r÷  Únormr%   rj  re   rû  rh   r?   )rK   rT  rŸ   re  rQ  rN  rU  rZ  r4  Úvision_outputsrR  r!   r;   rT   rS   rR   s   &&&&&&&&,       r*   r£   ÚAlignModel.forward<  s2  € ðN ×*Ò*ñ 
Ø%ð
àñ
ˆð
 —’ñ 
Øð
à)ð
ð *ð
ð &ð	
ð
 (ð
ð ñ
ˆð & aÕ(ˆØ" 1•o gÕ.ˆØ×*Ñ*¨;Ó7ˆð $×&7Ñ&7¸!ÀÈTÐ&7Ó&RÕRˆØ!×$4Ñ$4°q¸bÈ$Ð$4Ó$OÕOˆô  Ÿ,š, {·N±NÓ4DÓEÈ×HXÑHXÕXˆØ*×,Ñ,Ó.ÐàˆßÜ˜oÓ.ˆDäØØ-Ø+Ø#Ø%Ø*Ø .ô
ð 	
r-   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r€   r   )r(   r)   s   "€r*   r+   rA  Û  r  r-   )rH  rû  rI  rJ  r÷  rK  r)  )NNNNNNN)r/   r0   r1   r2   r�   r   r   rS  rW  r£   r4   r5   r6   r¦   r§   s   @@r*   rô  rô  Û  s{   ù‡ € ÷ó ð< Ø÷"ñ "ó ó ð"ðH Ø÷Fó ó ðFð. Ø÷K
ñ K
ó ó ðK
÷G … r-   rô  r(  )r„  )rî  r	  r-  rô  )Pr3   r  Úcollections.abcr   Údataclassesr   Útypingr   r%   r   Ú r   rõ  Úactivationsr   Úmasking_utilsr   Úmodeling_layersr	   Úmodeling_outputsr
   r   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úpytorch_utilsr   Úutilsr   r   r   r   Úutils.genericr   r   Úutils.output_capturingr   Úconfiguration_alignr   r   r   Ú
get_loggerr/   Úloggerr   r9   r?   ra   rh   rt   r|   rg  r~   r“   r©   rµ   rÈ   rÙ   rñ   r  r  r9  rr  rt  r’  r¤  r±  r½  rÅ  r×  rã  rî  r	  r-  rô  Ú__all__r.   r-   r*   Ú<module>rs     s­  ðñ ã Ý $Ý !Ý ã Ý å &Ý !Ý 6Ý 9÷ó ÷ GÝ &Ý 6ß MÓ Mß IÝ 5ß PÑ Pð 
×	Ò	˜HÓ	%€ñ ðôð
 ô:˜[ó :ó óð:ñ ðôð
 ô	7˜;ó 	7ó óð	7ð Ø
ô 
�+ó  
ó ó ð 
õJuõ-õ÷ @ô*˜BŸI™Iô ô4
 §¡ô 
ô6 §	¡	ô ô6$ §	¡	ô $ôP$ B§I¡Iô $ôN §¡ô ôBN�r—y‘yô Nôb>
˜Ÿ™ô >
ôB5˜"Ÿ)™)ô 5÷p%ô,3)˜RŸY™Yô 3)ôn˜"Ÿ)™)ô ô˜Ÿ™ô ô.˜BŸI™Iô ô �b—i‘iô ôÐ/ô ôB
�r—y‘yô 
ô4�b—i‘iô ð ô/˜?ó /ó ð/ñ& ðôô
b
Ð)ó b
óð
b
ñJ ðôô
I
Ð+ó I
óð
I
ðX ôm
Ð%ó m
ó ðm
ò` W‚r-   