ó
    ˆŽ¡ju�  ã                   ód  • S r SSKJr  SSKrSSKJr  SSKJrJrJr  SSK	J
r  SSKJr  SS	KJr  SS
KJrJrJrJrJrJr  SSKJrJr  SSKJr  SSKJr  SSKJrJ r J!r!J"r"  SSK#J$r$  SSK%J&r&  SSK'J(r(  \"RR                  " \*5      r+ " S S\RX                  5      r- " S S\RX                  5      r. " S S\RX                  5      r/ " S S\RX                  5      r0 " S S\RX                  5      r1 " S S\RX                  5      r2 " S S \RX                  5      r3 " S! S"\RX                  5      r4 " S# S$\RX                  5      r5 SCS%\RX                  S&\Rl                  S'\Rl                  S(\Rl                  S)\Rl                  S-  S*\7S+\74S, jjr8 " S- S.\RX                  5      r9 " S/ S0\RX                  5      r: " S1 S2\5      r; " S3 S4\RX                  5      r<\  " S5 S6\5      5       r=\  " S7 S8\=5      5       r>\  " S9 S:\=5      5       r?\ " S;S<9 " S= S>\=5      5       r@\ " S?S<9 " S@ SA\=5      5       rA/ SBQrBg)DzPyTorch MarkupLM model.é    )ÚCallableN)Únn)ÚBCEWithLogitsLossÚCrossEntropyLossÚMSELossé   )Úinitialization)ÚACT2FN)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithPoolingÚMaskedLMOutputÚQuestionAnsweringModelOutputÚSequenceClassifierOutputÚTokenClassifierOutput)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)Úapply_chunking_to_forward)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚlogging)Úmerge_with_config_defaults)Úcapture_outputsé   )ÚMarkupLMConfigc                   ó6   ^ • \ rS rSrSrU 4S jrSS jrSrU =r$ )ÚXPathEmbeddingsé-   z€Construct the embeddings from xpath tags and subscripts.

We drop tree-id in this version, as its info can be covered by xpath.
c           	      óÖ  >• [         TU ]  5         UR                  U l        [        R                  " UR
                  U R                  -  UR                  5      U l        [        R                  " UR                  5      U l
        [        R                  " 5       U l        [        R                  " UR
                  U R                  -  SUR                  -  5      U l        [        R                  " SUR                  -  UR                  5      U l        [        R                  " [!        U R                  5       Vs/ s H.  n[        R"                  " UR$                  UR
                  5      PM0     sn5      U l        [        R                  " [!        U R                  5       Vs/ s H.  n[        R"                  " UR(                  UR
                  5      PM0     sn5      U l        g s  snf s  snf )Né   )ÚsuperÚ__init__Ú	max_depthr   ÚLinearÚxpath_unit_hidden_sizeÚhidden_sizeÚxpath_unitseq2_embeddingsÚDropoutÚhidden_dropout_probÚdropoutÚReLUÚ
activationÚxpath_unitseq2_innerÚ	inner2embÚ
ModuleListÚrangeÚ	EmbeddingÚmax_xpath_tag_unit_embeddingsÚxpath_tag_sub_embeddingsÚmax_xpath_subs_unit_embeddingsÚxpath_subs_sub_embeddings)ÚselfÚconfigÚ_Ú	__class__s      €Ú¼C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\transformers/models/markuplm/modeling_markuplm.pyr$   ÚXPathEmbeddings.__init__3   sd  ø€ Ü‰ÑÔØ×)Ñ)ˆŒä)+¯ª°6×3PÑ3PÐSW×SaÑSaÑ3aÐci×cuÑcuÓ)vˆÔ&ä—z’z &×"<Ñ"<Ó=ˆŒäŸ'š'›)ˆŒÜ$&§I¢I¨f×.KÑ.KÈdÏnÉnÑ.\Ð^_Ðbh×btÑbtÑ^tÓ$uˆÔ!ÜŸš 1 v×'9Ñ'9Ñ#9¸6×;MÑ;MÓNˆŒä(*¯ªô ˜tŸ~™~Ô.óâ.�Aô —’˜V×AÑAÀ6×C`ÑC`ÖaÙ.ñó)
ˆÔ%ô *,¯ªô ˜tŸ~™~Ô.óâ.�Aô —’˜V×BÑBÀF×DaÑDaÖbÙ.ñó*
ˆÕ&ùòùòs   Ä75G!Æ5G&c           	      óÖ  • / n/ n[        U R                  5       H_  nUR                  U R                  U   " US S 2S S 2U4   5      5        UR                  U R                  U   " US S 2S S 2U4   5      5        Ma     [
        R                  " USS9n[
        R                  " USS9nX4-   nU R                  U R                  U R                  U R                  U5      5      5      5      nU$ )Néÿÿÿÿ©Údim)r2   r%   Úappendr5   r7   ÚtorchÚcatr0   r,   r.   r/   )r8   Úxpath_tags_seqÚxpath_subs_seqÚxpath_tags_embeddingsÚxpath_subs_embeddingsÚiÚxpath_embeddingss          r<   ÚforwardÚXPathEmbeddings.forwardM   sÝ   € Ø "ÐØ "Ðä�t—~‘~Ö&ˆAØ!×(Ñ(¨×)FÑ)FÀqÒ)IÈ.ÒYZÒ\]Ð_`ÐY`ÑJaÓ)bÔcØ!×(Ñ(¨×)GÑ)GÈÒ)JÈ>ÒZ[Ò]^Ð`aÐZaÑKbÓ)cÖdñ 'ô !&§	¢	Ð*?ÀRÑ HÐÜ %§	¢	Ð*?ÀRÑ HÐà0ÑHÐàŸ>™>¨$¯,©,°t·±Àt×G`ÑG`ÐaqÓGrÓ7sÓ*tÓuÐàÐó    )r.   r,   r0   r%   r7   r5   r)   r/   )NN)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r$   rK   Ú__static_attributes__Ú__classcell__©r;   s   @r<   r   r   -   s   ø† ñõ

÷4 ò  rM   r   c                   óf   ^ • \ rS rSrSrU 4S jr\S 5       r\SS j5       r      S	S jr	Sr
U =r$ )
ÚMarkupLMEmbeddingsé_   zGConstruct the embeddings from word, position and token_type embeddings.c                 ój  >• [         TU ]  5         Xl        [        R                  " UR
                  UR                  UR                  S9U l        [        R                  " UR                  UR                  5      U l
        UR                  U l        [        U5      U l        [        R                  " UR                  UR                  5      U l        [        R                   " UR                  UR"                  S9U l        [        R$                  " UR&                  5      U l        [        R*                  " [,        R.                  " UR                  5      R1                  S5      SS9U l        UR                  U l        [        R                  " UR                  UR                  U R4                  S9U l
        g )N)Úpadding_idx©Úeps©r   r?   F)Ú
persistent)r#   r$   r9   r   r3   Ú
vocab_sizer(   Úpad_token_idÚword_embeddingsÚmax_position_embeddingsÚposition_embeddingsr%   r   rJ   Útype_vocab_sizeÚtoken_type_embeddingsÚ	LayerNormÚlayer_norm_epsr*   r+   r,   ÚBufferrC   ÚarangeÚexpandÚposition_idsrZ   ©r8   r9   r;   s     €r<   r$   ÚMarkupLMEmbeddings.__init__b   s/  ø€ Ü‰ÑÔØŒÜ!Ÿ|š|¨F×,=Ñ,=¸v×?QÑ?QÐ_e×_rÑ_rÑsˆÔÜ#%§<¢<°×0NÑ0NÐPV×PbÑPbÓ#cˆÔ à×)Ñ)ˆŒä /°Ó 7ˆÔä%'§\¢\°&×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ˆÔà!×.Ñ.ˆÔÜ#%§<¢<Ø×*Ñ*¨F×,>Ñ,>ÈD×L\ÑL\ñ$
ˆÕ rM   c                 óà   • U R                  5       SS nUS   n[        R                  " US-   X1-   S-   [        R                  U R                  S9nUR                  S5      R                  U5      $ )z¯
We are provided embeddings directly. We cannot infer which are padded so just generate sequential position ids.

Args:
    inputs_embeds: torch.Tensor

Returns: torch.Tensor
Nr?   r   ©ÚdtypeÚdevicer   )ÚsizerC   ri   Úlongrq   Ú	unsqueezerj   )Úinputs_embedsrZ   Úinput_shapeÚsequence_lengthrk   s        r<   Ú&create_position_ids_from_inputs_embedsÚ9MarkupLMEmbeddings.create_position_ids_from_inputs_embedsx   sn   € ð $×(Ñ(Ó*¨3¨BÐ/ˆØ% a™.ˆä—|’|Ø˜!‰O˜_Ñ:¸QÑ>ÄeÇjÁjÐYf×YmÑYmñ
ˆð ×%Ñ% aÓ(×/Ñ/°Ó<Ð<rM   c                 óº   • U R                  U5      R                  5       n[        R                  " USS9R	                  U5      U-   U-  nUR                  5       U-   $ )zí
Replace non-padding symbols with their position numbers. Position numbers begin at padding_idx+1. Padding symbols
are ignored. This is modified from fairseq's `utils.make_positions`.

Args:
    x: torch.Tensor x:

Returns: torch.Tensor
r   r@   )ÚneÚintrC   ÚcumsumÚtype_asrs   )Ú	input_idsrZ   Úpast_key_values_lengthÚmaskÚincremental_indicess        r<   Ú"create_position_ids_from_input_idsÚ5MarkupLMEmbeddings.create_position_ids_from_input_ids‹   sW   € ð �|‰|˜KÓ(×,Ñ,Ó.ˆÜ$Ÿ|š|¨D°aÑ8×@Ñ@ÀÓFÐI_Ñ_ÐcgÑgÐØ"×'Ñ'Ó)¨KÑ7Ð7rM   c                 ó´  • Ub  UR                  5       nOUR                  5       S S nUb  UR                  OUR                  nUc:  Ub  U R                  XR                  5      nOU R	                  X`R                  5      nUc$  [
        R                  " U[
        R                  US9nUc  U R                  U5      nUc[  U R                  R                  [
        R                  " [        [        U5      U R                  /-   5      [
        R                  US9-  nUc[  U R                  R                  [
        R                  " [        [        U5      U R                  /-   5      [
        R                  US9-  nUn	U R!                  U5      n
U R#                  U5      nU R%                  X#5      nXš-   U-   U-   nU R'                  U5      nU R)                  U5      nU$ )Nr?   ro   )rr   rq   rƒ   rZ   rx   rC   Úzerosrs   ra   r9   Ú
tag_pad_idÚonesÚtupleÚlistr%   Úsubs_pad_idrc   re   rJ   rf   r,   )r8   r   rE   rF   Útoken_type_idsrk   ru   rv   rq   Úwords_embeddingsrc   re   rJ   Ú
embeddingss                 r<   rK   ÚMarkupLMEmbeddings.forwardœ   s°  € ð Ñ Ø#Ÿ.™.Ó*‰Kà'×,Ñ,Ó.¨s°Ð3ˆKà%.Ñ%:�×!Ò!À×@TÑ@TˆàÑØÑ$à#×FÑFÀy×RbÑRbÓc‘à#×JÑJÈ=×ZjÑZjÓk�àÑ!Ü"Ÿ[š[¨¼E¿J¹JÈvÑVˆNàÑ Ø ×0Ñ0°Ó;ˆMð Ñ!Ø!Ÿ[™[×3Ñ3´e·j²jÜ”d˜;Ó'¨4¯>©>Ð*:Ñ:Ó;Ä5Ç:Á:ÐV\ñ7ñ ˆNð Ñ!Ø!Ÿ[™[×4Ñ4´u·z²zÜ”d˜;Ó'¨4¯>©>Ð*:Ñ:Ó;Ä5Ç:Á:ÐV\ñ8ñ ˆNð )ÐØ"×6Ñ6°|ÓDÐà $× :Ñ :¸>Ó JÐà×0Ñ0°ÓPÐØ%Ñ;Ð>SÑSÐVfÑfˆ
à—^‘^ JÓ/ˆ
Ø—\‘\ *Ó-ˆ
ØÐrM   )
rf   r9   r,   r%   rZ   rc   rk   re   ra   rJ   )r   )NNNNNN)rN   rO   rP   rQ   rR   r$   Ústaticmethodrx   rƒ   rK   rS   rT   rU   s   @r<   rW   rW   _   sQ   ø† ÙQõ
ð, ñ=ó ð=ð" ó8ó ð8ð" ØØØØØ÷1ò 1rM   rW   c                   óz   ^ • \ rS rSrU 4S jrS\R                  S\R                  S\R                  4S jrSrU =r	$ )ÚMarkupLMSelfOutputéÑ   c                 ó(  >• [         TU ]  5         [        R                  " UR                  UR                  5      U l        [        R                  " UR                  UR                  S9U l        [        R                  " UR                  5      U l
        g ©Nr[   )r#   r$   r   r&   r(   Údenserf   rg   r*   r+   r,   rl   s     €r<   r$   ÚMarkupLMSelfOutput.__init__Ò   s`   ø€ Ü‰ÑÔÜ—Y’Y˜v×1Ñ1°6×3EÑ3EÓFˆŒ
ÜŸš f×&8Ñ&8¸f×>SÑ>SÑTˆŒÜ—z’z &×"<Ñ"<Ó=ˆ�rM   Úhidden_statesÚinput_tensorÚreturnc                 óp   • U R                  U5      nU R                  U5      nU R                  X-   5      nU$ ©N©r–   r,   rf   ©r8   r˜   r™   s      r<   rK   ÚMarkupLMSelfOutput.forwardØ   ó5   € ØŸ
™
 =Ó1ˆØŸ™ ]Ó3ˆØŸ™ }Ñ'CÓDˆØÐrM   ©rf   r–   r,   ©
rN   rO   rP   rQ   r$   rC   ÚTensorrK   rS   rT   rU   s   @r<   r’   r’   Ñ   ó6   ø† õ>ð U§\¡\ð ÀÇÁð ÐRW×R^ÑR^÷ ò rM   r’   c                   ób   ^ • \ rS rSrU 4S jrS\R                  S\R                  4S jrSrU =r	$ )ÚMarkupLMIntermediateéà   c                 ó  >• [         TU ]  5         [        R                  " UR                  UR
                  5      U l        [        UR                  [        5      (       a  [        UR                     U l        g UR                  U l        g rœ   )r#   r$   r   r&   r(   Úintermediate_sizer–   Ú
isinstanceÚ
hidden_actÚstrr
   Úintermediate_act_fnrl   s     €r<   r$   ÚMarkupLMIntermediate.__init__á   s`   ø€ Ü‰ÑÔÜ—Y’Y˜v×1Ñ1°6×3KÑ3KÓLˆŒ
Ü�f×'Ñ'¬×-Ñ-Ü'-¨f×.?Ñ.?Ñ'@ˆDÕ$à'-×'8Ñ'8ˆDÕ$rM   r˜   rš   c                 óJ   • U R                  U5      nU R                  U5      nU$ rœ   ©r–   r­   ©r8   r˜   s     r<   rK   ÚMarkupLMIntermediate.forwardé   s&   € ØŸ
™
 =Ó1ˆØ×0Ñ0°Ó?ˆØÐrM   r°   r¢   rU   s   @r<   r¦   r¦   à   s(   ø† õ9ð U§\¡\ð °e·l±l÷ ò rM   r¦   c                   óz   ^ • \ rS rSrU 4S jrS\R                  S\R                  S\R                  4S jrSrU =r	$ )ÚMarkupLMOutputéð   c                 ó(  >• [         TU ]  5         [        R                  " UR                  UR
                  5      U l        [        R                  " UR
                  UR                  S9U l        [        R                  " UR                  5      U l        g r•   )r#   r$   r   r&   r©   r(   r–   rf   rg   r*   r+   r,   rl   s     €r<   r$   ÚMarkupLMOutput.__init__ñ   s`   ø€ Ü‰ÑÔÜ—Y’Y˜v×7Ñ7¸×9KÑ9KÓLˆŒ
ÜŸš f×&8Ñ&8¸f×>SÑ>SÑTˆŒÜ—z’z &×"<Ñ"<Ó=ˆ�rM   r˜   r™   rš   c                 óp   • U R                  U5      nU R                  U5      nU R                  X-   5      nU$ rœ   r�   rž   s      r<   rK   ÚMarkupLMOutput.forward÷   r    rM   r¡   r¢   rU   s   @r<   r´   r´   ð   r¤   rM   r´   c                   ób   ^ • \ rS rSrU 4S jrS\R                  S\R                  4S jrSrU =r	$ )ÚMarkupLMPooleréÿ   c                 ó¶   >• [         TU ]  5         [        R                  " UR                  UR                  5      U l        [        R                  " 5       U l        g rœ   )r#   r$   r   r&   r(   r–   ÚTanhr.   rl   s     €r<   r$   ÚMarkupLMPooler.__init__   s9   ø€ Ü‰ÑÔÜ—Y’Y˜v×1Ñ1°6×3EÑ3EÓFˆŒ
ÜŸ'š'›)ˆ�rM   r˜   rš   c                 ó\   • US S 2S4   nU R                  U5      nU R                  U5      nU$ )Nr   )r–   r.   )r8   r˜   Úfirst_token_tensorÚpooled_outputs       r<   rK   ÚMarkupLMPooler.forward  s6   € ð +ª1¨a¨4Ñ0ÐØŸ
™
Ð#5Ó6ˆØŸ™¨Ó6ˆØÐrM   )r.   r–   r¢   rU   s   @r<   r»   r»   ÿ   s(   ø† õ$ð
 U§\¡\ð °e·l±l÷ ò rM   r»   c                   ób   ^ • \ rS rSrU 4S jrS\R                  S\R                  4S jrSrU =r	$ )ÚMarkupLMPredictionHeadTransformi  c                 óp  >• [         TU ]  5         [        R                  " UR                  UR                  5      U l        [        UR                  [        5      (       a  [        UR                     U l
        OUR                  U l
        [        R                  " UR                  UR                  S9U l        g r•   )r#   r$   r   r&   r(   r–   rª   r«   r¬   r
   Útransform_act_fnrf   rg   rl   s     €r<   r$   Ú(MarkupLMPredictionHeadTransform.__init__  s~   ø€ Ü‰ÑÔÜ—Y’Y˜v×1Ñ1°6×3EÑ3EÓFˆŒ
Ü�f×'Ñ'¬×-Ñ-Ü$*¨6×+<Ñ+<Ñ$=ˆDÕ!à$*×$5Ñ$5ˆDÔ!ÜŸš f×&8Ñ&8¸f×>SÑ>SÑTˆ�rM   r˜   rš   c                 ól   • U R                  U5      nU R                  U5      nU R                  U5      nU$ rœ   )r–   rÇ   rf   r±   s     r<   rK   Ú'MarkupLMPredictionHeadTransform.forward  s4   € ØŸ
™
 =Ó1ˆØ×-Ñ-¨mÓ<ˆØŸ™ }Ó5ˆØÐrM   )rf   r–   rÇ   r¢   rU   s   @r<   rÅ   rÅ     s)   ø† õUð U§\¡\ð °e·l±l÷ ò rM   rÅ   c                   ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )ÚMarkupLMLMPredictionHeadi!  c                 ó  >• [         TU ]  5         [        U5      U l        [        R
                  " UR                  UR                  SS9U l        [        R                  " [        R                  " UR                  5      5      U l        g )NT)Úbias)r#   r$   rÅ   Ú	transformr   r&   r(   r_   ÚdecoderÚ	ParameterrC   r†   rÎ   rl   s     €r<   r$   Ú!MarkupLMLMPredictionHead.__init__"  s[   ø€ Ü‰ÑÔÜ8¸Ó@ˆŒô —y’y ×!3Ñ!3°V×5FÑ5FÈTÑRˆŒÜ—L’L¤§¢¨V×->Ñ->Ó!?Ó@ˆ�	rM   c                 óJ   • U R                  U5      nU R                  U5      nU$ rœ   )rÏ   rÐ   r±   s     r<   rK   Ú MarkupLMLMPredictionHead.forward+  s$   € ØŸ™ }Ó5ˆØŸ™ ]Ó3ˆØÐrM   )rÎ   rÐ   rÏ   )rN   rO   rP   rQ   r$   rK   rS   rT   rU   s   @r<   rÌ   rÌ   !  s   ø† õA÷ð rM   rÌ   c                   ób   ^ • \ rS rSrU 4S jrS\R                  S\R                  4S jrSrU =r	$ )ÚMarkupLMOnlyMLMHeadi2  c                 óB   >• [         TU ]  5         [        U5      U l        g rœ   )r#   r$   rÌ   Úpredictionsrl   s     €r<   r$   ÚMarkupLMOnlyMLMHead.__init__3  s   ø€ Ü‰ÑÔÜ3°FÓ;ˆÕrM   Úsequence_outputrš   c                 ó(   • U R                  U5      nU$ rœ   ©rØ   )r8   rÚ   Úprediction_scoress      r<   rK   ÚMarkupLMOnlyMLMHead.forward7  s   € Ø ×,Ñ,¨_Ó=ÐØ Ð rM   rÜ   r¢   rU   s   @r<   rÖ   rÖ   2  s(   ø† õ<ð! u§|¡|ð !¸¿¹÷ !ò !rM   rÖ   ÚmoduleÚqueryÚkeyÚvalueÚattention_maskÚscalingr,   c                 ó°  • [         R                  " XR                  SS5      5      U-  nUb  X„-   n[        R                  R                  US[         R                  S9R                  UR                  5      n[        R                  R                  X†U R                  S9n[         R                  " Xƒ5      n	U	R                  SS5      R                  5       n	X˜4$ )Né   r   r?   )rA   rp   )ÚpÚtrainingr   )rC   ÚmatmulÚ	transposer   Ú
functionalÚsoftmaxÚfloat32Útorp   r,   rè   Ú
contiguous)
rß   rà   rá   râ   rã   rä   r,   ÚkwargsÚattn_weightsÚattn_outputs
             r<   Úeager_attention_forwardró   =  s°   € ô —<’< §}¡}°Q¸Ó':Ó;¸gÑE€LØÑ!Ø#Ñ4ˆä—=‘=×(Ñ(¨¸2ÄUÇ]Á]Ð(ÐS×VÑVÐW\×WbÑWbÓc€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ð[€Lä—,’,˜|Ó3€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KØÐ$Ð$rM   c                   ó´   ^ • \ rS rSrU 4S jr S
S\R                  S\R                  S-  S\\	   S\
\R                  \R                  S-  4   4S jjrS	rU =r$ )ÚMarkupLMSelfAttentioniT  c                 ó6  >• [         TU ]  5         UR                  UR                  -  S:w  a7  [	        US5      (       d&  [        SUR                   SUR                   S35      eXl        UR                  U l        [        UR                  UR                  -  5      U l        U R                  U R                  -  U l	        [        R                  " UR                  U R                  5      U l        [        R                  " UR                  U R                  5      U l        [        R                  " UR                  U R                  5      U l        [        R                  " UR                   5      U l        UR                   U l        U R                  S-  U l        g )Nr   Úembedding_sizezThe hidden size (z6) is not a multiple of the number of attention heads (Ú)g      à¿)r#   r$   r(   Únum_attention_headsÚhasattrÚ
ValueErrorr9   r|   Úattention_head_sizeÚall_head_sizer   r&   rà   rá   râ   r*   Úattention_probs_dropout_probr,   Úattention_dropouträ   rl   s     €r<   r$   ÚMarkupLMSelfAttention.__init__U  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ˆ�rM   Nr˜   rã   rð   rš   c                 ó€  • UR                   S S n/ UQSPU R                  P7nU R                  U5      R                  U5      R	                  SS5      nU R                  U5      R                  U5      R	                  SS5      nU R                  U5      R                  U5      R	                  SS5      n[        R                  " U R                  R                  [        5      n	U	" U UUUU4U R                  (       d  SOU R                  U R                  S.UD6u  p«U
R                  " / UQSP76 R!                  5       n
X«4$ )Nr?   r   ræ   ç        )r,   rä   )Úshaperü   rà   Úviewrê   rá   râ   r   Úget_interfacer9   Ú_attn_implementationró   rè   rÿ   rä   Úreshaperï   )r8   r˜   rã   rð   rv   Úhidden_shapeÚquery_statesÚ
key_statesÚvalue_statesÚattention_interfacerò   rñ   s               r<   rK   ÚMarkupLMSelfAttention.forwardj  s8  € ð $×)Ñ)¨#¨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ˆØÐ(Ð(rM   )
rý   rÿ   rü   r9   r,   rá   rù   rà   rä   râ   rœ   )rN   rO   rP   rQ   r$   rC   r£   ÚFloatTensorr   r   r‰   rK   rS   rT   rU   s   @r<   rõ   rõ   T  si   ø† õ6ð0 48ñ)à—|‘|ð)ð ×)Ñ)¨DÑ0ð)ð Ð+Ñ,ð	)ð
 
ˆu�|‰|˜UŸ\™\¨DÑ0Ð0Ñ	1÷)ó )rM   rõ   c            	       ó�   ^ • \ rS rSrU 4S jr S
S\R                  S\R                  S-  S\\	   S\R                  4S jjr
S	rU =r$ )ÚMarkupLMAttentioni‹  c                 ób   >• [         TU ]  5         [        U5      U l        [	        U5      U l        g rœ   )r#   r$   rõ   r8   r’   Úoutputrl   s     €r<   r$   ÚMarkupLMAttention.__init__Œ  s&   ø€ Ü‰ÑÔÜ)¨&Ó1ˆŒ	Ü(¨Ó0ˆ�rM   Nr˜   rã   rð   rš   c                 óZ   • UnU R                   " U4SU0UD6u  pU R                  X5      nU$ ©Nrã   )r8   r  )r8   r˜   rã   rð   Úresidualr:   s         r<   rK   ÚMarkupLMAttention.forward‘  sE   € ð !ˆØŸ9š9Øñ
à)ð
ð ñ
Ñˆð
 Ÿ™ MÓ<ˆØÐrM   )r  r8   rœ   )rN   rO   rP   rQ   r$   rC   r£   r  r   r   rK   rS   rT   rU   s   @r<   r  r  ‹  sV   ø† õ1ð 48ñà—|‘|ðð ×)Ñ)¨DÑ0ðð Ð+Ñ,ð	ð
 
�‰÷ó rM   r  c            	       ó–   ^ • \ rS rSrU 4S jr SS\R                  S\R                  S-  S\\	   S\R                  4S jjr
S	 rS
rU =r$ )ÚMarkupLMLayeri¢  c                 ó²   >• [         TU ]  5         UR                  U l        SU l        [	        U5      U l        [        U5      U l        [        U5      U l	        g )Nr   )
r#   r$   Úchunk_size_feed_forwardÚseq_len_dimr  Ú	attentionr¦   Úintermediater´   r  rl   s     €r<   r$   ÚMarkupLMLayer.__init__£  sI   ø€ Ü‰ÑÔØ'-×'EÑ'EˆÔ$ØˆÔÜ*¨6Ó2ˆŒÜ0°Ó8ˆÔÜ$ VÓ,ˆ�rM   Nr˜   rã   rð   rš   c                 óˆ   • U R                   " U4SU0UD6n[        U R                  U R                  U R                  U5      nU$ r  )r  r   Úfeed_forward_chunkr  r  )r8   r˜   rã   rð   s       r<   rK   ÚMarkupLMLayer.forward«  sW   € ð ŸšØñ
à)ð
ð ñ
ˆô 2Ø×#Ñ# T×%AÑ%AÀ4×CSÑCSÐUbó
ˆð ÐrM   c                 óJ   • U R                  U5      nU R                  X!5      nU$ rœ   )r  r  )r8   Úattention_outputÚintermediate_outputÚlayer_outputs       r<   r!  Ú MarkupLMLayer.feed_forward_chunk½  s)   € Ø"×/Ñ/Ð0@ÓAÐØ—{‘{Ð#6ÓIˆØÐrM   )r  r  r  r  r  rœ   )rN   rO   rP   rQ   r$   rC   r£   r  r   r   rK   r!  rS   rT   rU   s   @r<   r  r  ¢  s[   ø† õ-ð 48ñà—|‘|ðð ×)Ñ)¨DÑ0ðð Ð+Ñ,ð	ð
 
�‰õ÷$ð rM   r  c            	       ó|   ^ • \ rS rSrU 4S jr S
S\R                  S\R                  S-  S\\	   S\
4S jjrS	rU =r$ )ÚMarkupLMEncoderiÄ  c                 óÖ   >• [         TU ]  5         Xl        [        R                  " [        UR                  5       Vs/ s H  n[        U5      PM     sn5      U l        SU l	        g s  snf )NF)
r#   r$   r9   r   r1   r2   Únum_hidden_layersr  ÚlayerÚgradient_checkpointing)r8   r9   rI   r;   s      €r<   r$   ÚMarkupLMEncoder.__init__Å  sR   ø€ Ü‰ÑÔØŒÜ—]’]Ä5È×IaÑIaÔCbÓ#cÒCb¸a¤M°&Ö$9ÑCbÑ#cÓdˆŒ
Ø&+ˆÕ#ùò $ds   ½A&Nr˜   rã   rð   rš   c                 óN   • U R                    H  nU" UU40 UD6nM     [        US9$ )N)Úlast_hidden_state)r,  r   )r8   r˜   rã   rð   Úlayer_modules        r<   rK   ÚMarkupLMEncoder.forwardË  s>   € ð !ŸJœJˆLÙ(ØØñð ñŠMñ 'ô Ø+ñ
ð 	
rM   )r9   r-  r,  rœ   )rN   rO   rP   rQ   r$   rC   r£   r  r   r   r   rK   rS   rT   rU   s   @r<   r)  r)  Ä  sR   ø† õ,ð 48ñ
à—|‘|ð
ð ×)Ñ)¨DÑ0ð
ð Ð+Ñ,ð	
ð
 
÷
ó 
rM   r)  c                   ój   ^ • \ rS rSr% \\S'   Sr\\S.r	\
R                  " 5       U 4S j5       rSrU =r$ )ÚMarkupLMPreTrainedModeliÝ  r9   Úmarkuplm)r˜   Ú
attentionsc                 ór  >• [         TU ]  U5        [        U[        5      (       a!  [        R
                  " UR                  5        g[        U[        5      (       a\  [        R                  " UR                  [        R                  " UR                  R                  S   5      R                  S5      5        gg)zInitialize the weightsr?   r]   N)r#   Ú_init_weightsrª   rÌ   ÚinitÚzeros_rÎ   rW   Úcopy_rk   rC   ri   r  rj   )r8   rß   r;   s     €r<   r8  Ú%MarkupLMPreTrainedModel._init_weightsæ  s~   ø€ ô 	‰Ñ˜fÔ%Ü�fÔ6×7Ñ7Ü�KŠK˜Ÿ™Õ$Ü˜Ô 2×3Ñ3Ü�JŠJ�v×*Ñ*¬E¯LªL¸×9LÑ9L×9RÑ9RÐSUÑ9VÓ,W×,^Ñ,^Ð_fÓ,gÕhð 4rM   © )rN   rO   rP   rQ   r   Ú__annotations__Úbase_model_prefixr  rõ   Ú_can_record_outputsrC   Úno_gradr8  rS   rT   rU   s   @r<   r4  r4  Ý  s9   ø‡ àÓØ"Ðà&Ø+ñÐð
 ‡]‚]ƒ_ôió öirM   r4  c                   óX  ^ • \ rS rSrSU 4S jjrS rS r\\\	       SS\
R                  S-  S\
R                  S-  S\
R                  S-  S	\
R                  S-  S
\
R                  S-  S\
R                  S-  S\
R                  S-  S\\   S\\-  4S jj5       5       5       rSrU =r$ )ÚMarkupLMModelið  c                 óÂ   >• [         TU ]  U5        Xl        [        U5      U l        [        U5      U l        U(       a  [        U5      OSU l        U R                  5         g)z^
add_pooling_layer (bool, *optional*, defaults to `True`):
    Whether to add a pooling layer
N)
r#   r$   r9   rW   rŽ   r)  Úencoderr»   ÚpoolerÚ	post_init)r8   r9   Úadd_pooling_layerr;   s      €r<   r$   ÚMarkupLMModel.__init__ó  sK   ø€ ô
 	‰Ñ˜Ô ØŒä,¨VÓ4ˆŒÜ& vÓ.ˆŒæ0A”n VÔ,ÀtˆŒð 	�‰ÕrM   c                 ó.   • U R                   R                  $ rœ   ©rŽ   ra   )r8   s    r<   Úget_input_embeddingsÚ"MarkupLMModel.get_input_embeddings  s   € Ø�‰×.Ñ.Ð.rM   c                 ó$   • XR                   l        g rœ   rK  )r8   râ   s     r<   Úset_input_embeddingsÚ"MarkupLMModel.set_input_embeddings  s   € Ø*/�‰Õ'rM   Nr   rE   rF   rã   rŒ   rk   ru   rð   rš   c           	      ó”  • Ub  Ub  [        S5      eUb"  U R                  X5        UR                  5       n	O"Ub  UR                  5       SS n	O[        S5      eUb  UR                  OUR                  n
Uc  [        R
                  " XšS9nUc$  [        R                  " U	[        R                  U
S9nUR                  S5      R                  S5      nUR                  U R                  S	9nS
U-
  S-  nU R                  UUUUUUS9nU R                  " UU40 UD6nUS   nU R                  b  U R                  U5      OSn[        UUS9$ )ao  
xpath_tags_seq (`torch.LongTensor` of shape `(batch_size, sequence_length, config.max_depth)`, *optional*):
    Tag IDs for each token in the input sequence, padded up to config.max_depth.
xpath_subs_seq (`torch.LongTensor` of shape `(batch_size, sequence_length, config.max_depth)`, *optional*):
    Subscript IDs for each token in the input sequence, padded up to config.max_depth.

Examples:

```python
>>> from transformers import AutoProcessor, MarkupLMModel

>>> processor = AutoProcessor.from_pretrained("microsoft/markuplm-base")
>>> model = MarkupLMModel.from_pretrained("microsoft/markuplm-base")

>>> html_string = "<html> <head> <title>Page Title</title> </head> </html>"

>>> encoding = processor(html_string, return_tensors="pt")

>>> outputs = model(**encoding)
>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 4, 768]
```NzDYou cannot specify both input_ids and inputs_embeds at the same timer?   z5You have to specify either input_ids or inputs_embeds)rq   ro   r   ræ   )rp   g      ð?g     ˆÃÀ)r   rE   rF   rk   rŒ   ru   r   )r0  Úpooler_output)rû   Ú%warn_if_padding_and_no_attention_maskrr   rq   rC   rˆ   r†   rs   rt   rî   rp   rŽ   rE  rF  r   )r8   r   rE   rF   rã   rŒ   rk   ru   rð   rv   rq   Úextended_attention_maskÚembedding_outputÚencoder_outputsrÚ   rÂ   s                   r<   rK   ÚMarkupLMModel.forward	  so  € ðJ Ñ  ]Ñ%>ÜÐcÓdÐdØÑ"Ø×6Ñ6°yÔQØ#Ÿ.™.Ó*‰KØÑ&Ø'×,Ñ,Ó.¨s°Ð3‰KäÐTÓUÐUà%.Ñ%:�×!Ò!À×@TÑ@TˆàÑ!Ü"ŸZšZ¨ÑCˆNàÑ!Ü"Ÿ[š[¨¼E¿J¹JÈvÑVˆNà"0×":Ñ":¸1Ó"=×"GÑ"GÈÓ"JÐØ"9×"<Ñ"<À4Ç:Á:Ð"<Ð"NÐØ#&Ð)@Ñ#@ÀHÑ"LÐàŸ?™?ØØ)Ø)Ø%Ø)Ø'ð +ð 
Ðð Ÿ,š,ØØ#ñ
ð ñ
ˆð
 *¨!Ñ,ˆØ8<¿¹Ñ8O˜Ÿ™ OÔ4ÐUYˆä)Ø-Ø'ñ
ð 	
rM   )r9   rŽ   rE  rF  )T)NNNNNNN)rN   rO   rP   rQ   r$   rL  rO  r   r   r   rC   Ú
LongTensorr  r   r   r‰   r   rK   rS   rT   rU   s   @r<   rC  rC  ð  s	  ø† ÷ò /ò0ð  ØØð .2Ø26Ø26Ø37Ø26Ø04Ø26ñK
à×#Ñ# dÑ*ðK
ð ×(Ñ(¨4Ñ/ðK
ð ×(Ñ(¨4Ñ/ð	K
ð
 ×)Ñ)¨DÑ0ðK
ð ×(Ñ(¨4Ñ/ðK
ð ×&Ñ&¨Ñ-ðK
ð ×(Ñ(¨4Ñ/ðK
ð Ð+Ñ,ðK
ð 
Ð+Ñ	+ôK
ó ó ó  öK
rM   rC  c                   ó˜  ^ • \ rS rSrU 4S jr\\         SS\R                  S-  S\R                  S-  S\R                  S-  S\R                  S-  S\R                  S-  S	\R                  S-  S
\R                  S-  S\R                  S-  S\R                  S-  S\	\
   S\\R                     \-  4S jj5       5       rSrU =r$ )ÚMarkupLMForQuestionAnsweringiZ  c                 óä   >• [         TU ]  U5        UR                  U l        [        USS9U l        [
        R                  " UR                  UR                  5      U l        U R                  5         g ©NF)rH  )
r#   r$   Ú
num_labelsrC  r5  r   r&   r(   Ú
qa_outputsrG  rl   s     €r<   r$   Ú%MarkupLMForQuestionAnswering.__init__]  sU   ø€ Ü‰Ñ˜Ô Ø ×+Ñ+ˆŒä% fÀÑFˆŒÜŸ)š) F×$6Ñ$6¸×8IÑ8IÓJˆŒð 	�‰ÕrM   Nr   rE   rF   rã   rŒ   rk   ru   Ústart_positionsÚend_positionsrð   rš   c
           
      ó¸  • U R                   " U4UUUUUUS.U
D6nUS   nU R                  U5      nUR                  SSS9u  pïUR                  S5      R	                  5       nUR                  S5      R	                  5       nSnUbµ  U	b²  [        UR                  5       5      S:”  a  UR                  S5      n[        U	R                  5       5      S:”  a  U	R                  S5      n	UR                  S5      nUR                  SU5        U	R                  SU5        [        US9nU" Xè5      nU" Xù5      nUU-   S-  n[        UUUUR                  UR                  S	9$ )
a½  
xpath_tags_seq (`torch.LongTensor` of shape `(batch_size, sequence_length, config.max_depth)`, *optional*):
    Tag IDs for each token in the input sequence, padded up to config.max_depth.
xpath_subs_seq (`torch.LongTensor` of shape `(batch_size, sequence_length, config.max_depth)`, *optional*):
    Subscript IDs for each token in the input sequence, padded up to config.max_depth.

Examples:

```python
>>> from transformers import AutoProcessor, MarkupLMForQuestionAnswering
>>> import torch

>>> processor = AutoProcessor.from_pretrained("microsoft/markuplm-base-finetuned-websrc")
>>> model = MarkupLMForQuestionAnswering.from_pretrained("microsoft/markuplm-base-finetuned-websrc")

>>> html_string = "<html> <head> <title>My name is Niels</title> </head> </html>"
>>> question = "What's his name?"

>>> encoding = processor(html_string, questions=question, return_tensors="pt")

>>> with torch.no_grad():
...     outputs = model(**encoding)

>>> answer_start_index = outputs.start_logits.argmax()
>>> answer_end_index = outputs.end_logits.argmax()

>>> predict_answer_tokens = encoding.input_ids[0, answer_start_index : answer_end_index + 1]
>>> processor.decode(predict_answer_tokens).strip()
'Niels'
```©rE   rF   rã   rŒ   rk   ru   r   r   r?   r@   N)Úignore_indexræ   )ÚlossÚstart_logitsÚ
end_logitsr˜   r6  )r5  r^  ÚsplitÚsqueezerï   Úlenrr   Úclamp_r   r   r˜   r6  )r8   r   rE   rF   rã   rŒ   rk   ru   r`  ra  rð   ÚoutputsrÚ   Úlogitsrf  rg  Ú
total_lossÚignored_indexÚloss_fctÚ
start_lossÚend_losss                        r<   rK   Ú$MarkupLMForQuestionAnswering.forwardg  sx  € ðZ —-’-Øð	
à)Ø)Ø)Ø)Ø%Ø'ñ	
ð ñ	
ˆð " !™*ˆà—‘ Ó1ˆØ#)§<¡<°°r <Ð#:Ñ ˆØ#×+Ñ+¨BÓ/×:Ñ:Ó<ˆØ×'Ñ'¨Ó+×6Ñ6Ó8ˆ
àˆ
ØÑ&¨=Ñ+Dä�?×'Ñ'Ó)Ó*¨QÓ.Ø"1×"9Ñ"9¸"Ó"=�Ü�=×%Ñ%Ó'Ó(¨1Ó,Ø -× 5Ñ 5°bÓ 9�à(×-Ñ-¨aÓ0ˆMØ×"Ñ" 1 mÔ4Ø× Ñ   MÔ2ä'°]ÑCˆHÙ! ,Ó@ˆJÙ 
Ó:ˆHØ$ xÑ/°1Ñ4ˆJä+ØØ%Ø!Ø!×/Ñ/Ø×)Ñ)ñ
ð 	
rM   )r5  r]  r^  )	NNNNNNNNN)rN   rO   rP   rQ   r$   r   r   rC   r£   r   r   r‰   r   rK   rS   rT   rU   s   @r<   rZ  rZ  Z  s   ø† õð Øð *.Ø.2Ø.2Ø.2Ø.2Ø,0Ø-1Ø/3Ø-1ñT
à—<‘< $Ñ&ðT
ð Ÿ™ tÑ+ðT
ð Ÿ™ tÑ+ð	T
ð
 Ÿ™ tÑ+ðT
ð Ÿ™ tÑ+ðT
ð —l‘l TÑ)ðT
ð —|‘| dÑ*ðT
ð Ÿ™¨Ñ,ðT
ð —|‘| dÑ*ðT
ð Ð+Ñ,ðT
ð 
ˆu�|‰|Ñ	Ð;Ñ	;ôT
ó ó öT
rM   rZ  zC
    MarkupLM Model with a `token_classification` head on top.
    )Úcustom_introc                   óx  ^ • \ rS rSrU 4S jr\\        SS\R                  S-  S\R                  S-  S\R                  S-  S\R                  S-  S\R                  S-  S	\R                  S-  S
\R                  S-  S\R                  S-  S\	\
   S\\R                     \-  4S jj5       5       rSrU =r$ )ÚMarkupLMForTokenClassificationiÀ  c                 ód  >• [         TU ]  U5        UR                  U l        [        USS9U l        UR
                  b  UR
                  OUR                  n[        R                  " U5      U l	        [        R                  " UR                  UR                  5      U l        U R                  5         g r\  )r#   r$   r]  rC  r5  Úclassifier_dropoutr+   r   r*   r,   r&   r(   Ú
classifierrG  ©r8   r9   rx  r;   s      €r<   r$   Ú'MarkupLMForTokenClassification.__init__Ç  sŠ   ø€ Ü‰Ñ˜Ô Ø ×+Ñ+ˆŒä% fÀÑFˆŒà)/×)BÑ)BÑ)NˆF×%Ò%ÐTZ×TnÑTnð 	ô —z’zÐ"4Ó5ˆŒÜŸ)š) F×$6Ñ$6¸×8IÑ8IÓJˆŒð 	�‰ÕrM   Nr   rE   rF   rã   rŒ   rk   ru   Úlabelsrð   rš   c	           
      ó8  • U R                   " U4UUUUUUS.U	D6n
U
S   nU R                  U5      nSnUbF  [        5       nU" UR                  SU R                  R
                  5      UR                  S5      5      n[        UUU
R                  U
R                  S9$ )aé  
xpath_tags_seq (`torch.LongTensor` of shape `(batch_size, sequence_length, config.max_depth)`, *optional*):
    Tag IDs for each token in the input sequence, padded up to config.max_depth.
xpath_subs_seq (`torch.LongTensor` of shape `(batch_size, sequence_length, config.max_depth)`, *optional*):
    Subscript IDs for each token in the input sequence, padded up to config.max_depth.
labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
    Labels for computing the token classification loss. Indices should be in `[0, ..., config.num_labels - 1]`.

Examples:

```python
>>> from transformers import AutoProcessor, AutoModelForTokenClassification
>>> import torch

>>> processor = AutoProcessor.from_pretrained("microsoft/markuplm-base")
>>> processor.parse_html = False
>>> model = AutoModelForTokenClassification.from_pretrained("microsoft/markuplm-base", num_labels=7)

>>> nodes = ["hello", "world"]
>>> xpaths = ["/html/body/div/li[1]/div/span", "/html/body/div/li[1]/div/span"]
>>> node_labels = [1, 2]
>>> encoding = processor(nodes=nodes, xpaths=xpaths, node_labels=node_labels, return_tensors="pt")

>>> with torch.no_grad():
...     outputs = model(**encoding)

>>> loss = outputs.loss
>>> logits = outputs.logits
```rc  r   Nr?   ©re  rm  r˜   r6  )	r5  ry  r   r  r9   r]  r   r˜   r6  )r8   r   rE   rF   rã   rŒ   rk   ru   r|  rð   rl  rÚ   rÝ   re  rp  s                  r<   rK   Ú&MarkupLMForTokenClassification.forwardÕ  sº   € ðV —-’-Øð	
à)Ø)Ø)Ø)Ø%Ø'ñ	
ð ñ	
ˆð " !™*ˆØ ŸO™O¨OÓ<ÐàˆØÑÜ'Ó)ˆHÙØ!×&Ñ& r¨4¯;©;×+AÑ+AÓBØ—‘˜B“óˆDô
 %ØØ$Ø!×/Ñ/Ø×)Ñ)ñ	
ð 	
rM   )ry  r,   r5  r]  ©NNNNNNNN)rN   rO   rP   rQ   r$   r   r   rC   r£   r   r   r‰   r   rK   rS   rT   rU   s   @r<   rv  rv  À  s  ø† õð Øð *.Ø.2Ø.2Ø.2Ø.2Ø,0Ø-1Ø&*ñD
à—<‘< $Ñ&ðD
ð Ÿ™ tÑ+ðD
ð Ÿ™ tÑ+ð	D
ð
 Ÿ™ tÑ+ðD
ð Ÿ™ tÑ+ðD
ð —l‘l TÑ)ðD
ð —|‘| dÑ*ðD
ð —‘˜tÑ#ðD
ð Ð+Ñ,ðD
ð 
ˆu�|‰|Ñ	˜~Ñ	-ôD
ó ó öD
rM   rv  z 
    MarkupLM Model transformer with a sequence classification/regression head on top (a linear layer on top of the
    pooled output) e.g. for GLUE tasks.
    c                   óx  ^ • \ rS rSrU 4S jr\\        SS\R                  S-  S\R                  S-  S\R                  S-  S\R                  S-  S\R                  S-  S	\R                  S-  S
\R                  S-  S\R                  S-  S\	\
   S\\R                     \-  4S jj5       5       rSrU =r$ )Ú!MarkupLMForSequenceClassificationi  c                 ór  >• [         TU ]  U5        UR                  U l        Xl        [	        U5      U l        UR                  b  UR                  OUR                  n[        R                  " U5      U l
        [        R                  " UR                  UR                  5      U l        U R                  5         g rœ   )r#   r$   r]  r9   rC  r5  rx  r+   r   r*   r,   r&   r(   ry  rG  rz  s      €r<   r$   Ú*MarkupLMForSequenceClassification.__init__&  s�   ø€ Ü‰Ñ˜Ô Ø ×+Ñ+ˆŒØŒä% fÓ-ˆŒà)/×)BÑ)BÑ)NˆF×%Ò%ÐTZ×TnÑTnð 	ô —z’zÐ"4Ó5ˆŒÜŸ)š) F×$6Ñ$6¸×8IÑ8IÓJˆŒð 	�‰ÕrM   Nr   rE   rF   rã   rŒ   rk   ru   r|  rð   rš   c	           
      óì  • U R                   " U4UUUUUUS.U	D6n
U
S   nU R                  U5      nU R                  U5      nSnUGbŽ  U R                  R                  c‘  U R
                  S:X  a  SU R                  l        OoU R
                  S:”  aN  UR                  [        R                  :X  d  UR                  [        R                  :X  a  SU R                  l        OSU R                  l        U R                  R                  S:X  aI  [        5       nU R
                  S:X  a&  U" UR                  5       UR                  5       5      nOŒU" XÈ5      nOƒU R                  R                  S:X  a=  [        5       nU" UR                  SU R
                  5      UR                  S5      5      nO,U R                  R                  S:X  a  [        5       nU" XÈ5      n[        UUU
R                   U
R"                  S9$ )	a  
xpath_tags_seq (`torch.LongTensor` of shape `(batch_size, sequence_length, config.max_depth)`, *optional*):
    Tag IDs for each token in the input sequence, padded up to config.max_depth.
xpath_subs_seq (`torch.LongTensor` of shape `(batch_size, sequence_length, config.max_depth)`, *optional*):
    Subscript IDs for each token in the input sequence, padded up to config.max_depth.
labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
    Labels for computing the sequence 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).

Examples:

```python
>>> from transformers import AutoProcessor, AutoModelForSequenceClassification
>>> import torch

>>> processor = AutoProcessor.from_pretrained("microsoft/markuplm-base")
>>> model = AutoModelForSequenceClassification.from_pretrained("microsoft/markuplm-base", num_labels=7)

>>> html_string = "<html> <head> <title>Page Title</title> </head> </html>"
>>> encoding = processor(html_string, return_tensors="pt")

>>> with torch.no_grad():
...     outputs = model(**encoding)

>>> loss = outputs.loss
>>> logits = outputs.logits
```rc  r   NÚ
regressionÚsingle_label_classificationÚmulti_label_classificationr?   r~  )r5  r,   ry  r9   Úproblem_typer]  rp   rC   rs   r|   r   ri  r   r  r   r   r˜   r6  )r8   r   rE   rF   rã   rŒ   rk   ru   r|  rð   rl  rÂ   rm  re  rp  s                  r<   rK   Ú)MarkupLMForSequenceClassification.forward5  s§  € ðT —-’-Øð	
à)Ø)Ø)Ø)Ø%Ø'ñ	
ð ñ	
ˆð   ™
ˆàŸ™ ]Ó3ˆØ—‘ Ó/ˆàˆØÒØ�{‰{×'Ñ'Ñ/Ø—?‘? aÓ'Ø/;�D—K‘KÕ,Ø—_‘_ qÓ(¨f¯l©l¼e¿j¹jÓ.HÈFÏLÉLÔ\a×\eÑ\eÓLeØ/L�D—K‘KÕ,à/K�D—K‘KÔ,à�{‰{×'Ñ'¨<Ó7Ü"›9�Ø—?‘? aÓ'Ù# F§N¡NÓ$4°f·n±nÓ6FÓG‘Dá# FÓ3‘DØ—‘×)Ñ)Ð-JÓJÜ+Ó-�Ù §¡¨B°·±Ó @À&Ç+Á+ÈbÃ/ÓR‘Ø—‘×)Ñ)Ð-IÓIÜ,Ó.�Ù Ó/�ä'ØØØ!×/Ñ/Ø×)Ñ)ñ	
ð 	
rM   )ry  r9   r,   r5  r]  r€  )rN   rO   rP   rQ   r$   r   r   rC   r£   r   r   r‰   r   rK   rS   rT   rU   s   @r<   r‚  r‚    s	  ø† õð Øð *.Ø.2Ø.2Ø.2Ø.2Ø,0Ø-1Ø&*ñT
à—<‘< $Ñ&ðT
ð Ÿ™ tÑ+ðT
ð Ÿ™ tÑ+ð	T
ð
 Ÿ™ tÑ+ðT
ð Ÿ™ tÑ+ðT
ð —l‘l TÑ)ðT
ð —|‘| dÑ*ðT
ð —‘˜tÑ#ðT
ð Ð+Ñ,ðT
ð 
ˆu�|‰|Ñ	Ð7Ñ	7ôT
ó ó öT
rM   r‚  )rZ  r‚  rv  rC  r4  )r  )CrR   Úcollections.abcr   rC   r   Útorch.nnr   r   r   Ú r	   r9  Úactivationsr
   Úmodeling_layersr   Úmodeling_outputsr   r   r   r   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úpytorch_utilsr   Úutilsr   r   r   r   Úutils.genericr   Úutils.output_capturingr   Úconfiguration_markuplmr   Ú
get_loggerrN   ÚloggerÚModuler   rW   r’   r¦   r´   r»   rÅ   rÌ   rÖ   r£   Úfloatró   rõ   r  r  r)  r4  rC  rZ  rv  r‚  Ú__all__r=  rM   r<   Ú<module>r�     sJ  ðñ å $ã Ý ß AÑ Aå &Ý !Ý 9÷÷ ÷ GÝ &Ý 6ß RÓ RÝ 7Ý 5Ý 2ð 
×	Ò	˜HÓ	%€ô/ �b—i‘iô / ôdn˜Ÿ™ô nôd˜Ÿ™ô ô˜2Ÿ9™9ô ô �R—Y‘Yô ô�R—Y‘Yô ô  b§i¡iô ô$˜rŸy™yô ô"!˜"Ÿ)™)ô !ð$ ñ%Ø�I‰Ið%à�<‰<ð%ð 
�‰ð%ð �<‰<ð	%ð
 —L‘L 4Ñ'ð%ð ð%ð õ%ô.3)˜BŸI™Iô 3)ôn˜Ÿ	™	ô ô.Ð.ô ôD
�b—i‘iô 
ð2 ôi˜oó ió ðið$ ôf
Ð+ó f
ó ðf
ðR ôb
Ð#:ó b
ó ðb
ñJ ðñô
V
Ð%<ó V
óð
V
ñr ðñôg
Ð(?ó g
óðg
òT�rM   