§
    ‚Štjè¤  ã                   ój  — d Z ddlZddlZddlmZ ddlmZmZmZ ddlm	Z
 ddlmZ ddlmZ dd	lmZ dd
lmZmZmZmZmZ ddlmZ ddlmZ ddlmZmZ ddlmZ  ej         e!¦  «        Z" G d„ dej#        ¦  «        Z$ G d„ dej#        ¦  «        Z% G d„ dej#        ¦  «        Z& G d„ dej#        ¦  «        Z' G d„ dej#        ¦  «        Z( G d„ dej#        ¦  «        Z) G d„ dej#        ¦  «        Z* G d„ de¦  «        Z+ G d „ d!ej#        ¦  «        Z, G d"„ d#ej#        ¦  «        Z-e G d$„ d%e¦  «        ¦   «         Z.e G d&„ d'e.¦  «        ¦   «         Z/ ed(¬)¦  «         G d*„ d+e.¦  «        ¦   «         Z0e G d,„ d-e.¦  «        ¦   «         Z1 G d.„ d/ej#        ¦  «        Z2e G d0„ d1e.¦  «        ¦   «         Z3g d2¢Z4dS )3zPyTorch LiLT model.é    N)Únn)ÚBCEWithLogitsLossÚCrossEntropyLossÚMSELossé   )Úinitialization)ÚACT2FN)Úcreate_bidirectional_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithPoolingÚQuestionAnsweringModelOutputÚSequenceClassifierOutputÚTokenClassifierOutput)ÚPreTrainedModel)Úapply_chunking_to_forward)Úauto_docstringÚloggingé   )Ú
LiltConfigc                   ó:   ‡ — e Zd Zˆ fd„Z	 	 	 	 dd„Zd„ Zd„ Zˆ xZS )ÚLiltTextEmbeddingsc                 ó¦  •— t          ¦   «                              ¦   «          t          j        |j        |j        |j        ¬¦  «        | _        t          j        |j        |j        ¦  «        | _	        t          j        |j
        |j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t          j        |j        ¦  «        | _        |                      dt%          j        |j        ¦  «                             d¦  «        d¬¦  «         |j        | _        t          j        |j        |j        | j        ¬¦  «        | _	        d S )N©Úpadding_idx©ÚepsÚposition_ids©r   éÿÿÿÿF)Ú
persistent)ÚsuperÚ__init__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_epsÚDropoutÚhidden_dropout_probÚdropoutÚregister_bufferÚtorchÚarangeÚexpandr   ©ÚselfÚconfigÚ	__class__s     €úd/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/lilt/modeling_lilt.pyr#   zLiltTextEmbeddings.__init__+   s   ø€ Ý‰Œ×ÒÑÔÐÝ!œ|¨FÔ,=¸vÔ?QÐ_eÔ_rÐsÑsÔsˆÔÝ#%¤<°Ô0NÐPVÔPbÑ#cÔ#cˆÔ Ý%'¤\°&Ô2HÈ&ÔJ\Ñ%]Ô%]ˆÔ"åœ fÔ&8¸fÔ>SÐTÑTÔTˆŒÝ”z &Ô"<Ñ=Ô=ˆŒð 	×ÒØ�EœL¨Ô)GÑHÔH×OÒOÐPWÑXÔXÐejð 	ñ 	
ô 	
ð 	
ð
 "Ô.ˆÔÝ#%¤<ØÔ*¨FÔ,>ÈDÔL\ð$
ñ $
ô $
ˆÔ Ð Ð ó    Nc                 óN  — |€K|�4|                       || j        ¦  «                             |j        ¦  «        }n|                      |¦  «        }|�|                     ¦   «         }n|                     ¦   «         d d…         }|€+t          j        |t          j        | j	        j        ¬¦  «        }|€|  
                    |¦  «        }|                      |¦  «        }||z   }|                      |¦  «        }||z  }|                      |¦  «        }|                      |¦  «        }||fS )Nr    ©ÚdtypeÚdevice)Ú"create_position_ids_from_input_idsr   Útor?   Ú&create_position_ids_from_inputs_embedsÚsizer3   ÚzerosÚlongr   r(   r,   r*   r-   r1   )	r7   Ú	input_idsÚtoken_type_idsr   Úinputs_embedsÚinput_shaper,   Ú
embeddingsr*   s	            r:   ÚforwardzLiltTextEmbeddings.forward?   s/  € ð ÐØÐ$à#×FÒFÀyÐRVÔRbÑcÔc×fÒfØÔ$ñ ô  ��ð  $×JÒJÈ=ÑYÔY�àÐ Ø#Ÿ.š.Ñ*Ô*ˆKˆKà'×,Ò,Ñ.Ô.¨s°¨sÔ3ˆKàÐ!Ý"œ[¨½E¼JÈtÔO`ÔOgÐhÑhÔhˆNàÐ Ø ×0Ò0°Ñ;Ô;ˆMØ $× :Ò :¸>Ñ JÔ JÐØ"Ð%:Ñ:ˆ
à"×6Ò6°|ÑDÔDÐØÐ)Ñ)ˆ
à—^’^ JÑ/Ô/ˆ
Ø—\’\ *Ñ-Ô-ˆ
Ø˜<Ð'Ð'r;   c                 óÖ   — |                      |¦  «                             ¦   «         }t          j        |d¬¦  «                             |¦  «        |z  }|                     ¦   «         |z   S )a  
        Args:
        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`.
            x: torch.Tensor x:
        Returns: torch.Tensor
        r   ©Údim)ÚneÚintr3   ÚcumsumÚtype_asrE   )r7   rF   r   ÚmaskÚincremental_indicess        r:   r@   z5LiltTextEmbeddings.create_position_ids_from_input_idsc   s`   € ð �|Š|˜KÑ(Ô(×,Ò,Ñ.Ô.ˆÝ$œ|¨D°aÐ8Ñ8Ô8×@Ò@ÀÑFÔFÈ$ÑNÐØ"×'Ò'Ñ)Ô)¨KÑ7Ð7r;   c                 ó  — |                      ¦   «         dd…         }|d         }t          j        | j        dz   || j        z   dz   t          j        |j        ¬¦  «        }|                     d¦  «                             |¦  «        S )zÖ
        Args:
        We are provided embeddings directly. We cannot infer which are padded so just generate sequential position ids.:
            inputs_embeds: torch.Tensor
        Returns: torch.Tensor
        Nr    r   r=   r   )rC   r3   r4   r   rE   r?   Ú	unsqueezer5   )r7   rH   rI   Úsequence_lengthr   s        r:   rB   z9LiltTextEmbeddings.create_position_ids_from_inputs_embedsp   s‡   € ð $×(Ò(Ñ*Ô*¨3¨B¨3Ô/ˆØ% aœ.ˆå”|ØÔ˜qÑ  /°DÔ4DÑ"DÀqÑ"HÕPUÔPZÐcpÔcwð
ñ 
ô 
ˆð ×%Ò% aÑ(Ô(×/Ò/°Ñ<Ô<Ð<r;   )NNNN)Ú__name__Ú
__module__Ú__qualname__r#   rK   r@   rB   Ú__classcell__©r9   s   @r:   r   r   *   sy   ø€ € € € € ð
ð 
ð 
ð 
ð 
ð, ØØØð"(ð "(ð "(ð "(ðH8ð 8ð 8ð=ð =ð =ð =ð =ð =ð =r;   r   c                   ó&   ‡ — e Zd Zˆ fd„Zdd„Zˆ xZS )ÚLiltLayoutEmbeddingsc                 óî  •— t          ¦   «                              ¦   «          t          j        |j        |j        dz  ¦  «        | _        t          j        |j        |j        dz  ¦  «        | _        t          j        |j        |j        dz  ¦  «        | _        t          j        |j        |j        dz  ¦  «        | _	        |j
        | _        t          j        |j        |j        |j        z  | j        ¬¦  «        | _        t          j        |j        |j        |j        z  ¬¦  «        | _        t          j        |j        |j        z  |j        ¬¦  «        | _        t          j        |j        ¦  «        | _        d S )Né   r   )Úin_featuresÚout_featuresr   )r"   r#   r   r$   Úmax_2d_position_embeddingsr&   Úx_position_embeddingsÚy_position_embeddingsÚh_position_embeddingsÚw_position_embeddingsr'   r   r)   Úchannel_shrink_ratioÚbox_position_embeddingsÚLinearÚbox_linear_embeddingsr-   r.   r/   r0   r1   r6   s     €r:   r#   zLiltLayoutEmbeddings.__init__�   sJ  ø€ Ý‰Œ×ÒÑÔÐõ &(¤\°&Ô2SÐU[ÔUgÐklÑUlÑ%mÔ%mˆÔ"Ý%'¤\°&Ô2SÐU[ÔUgÐklÑUlÑ%mÔ%mˆÔ"Ý%'¤\°&Ô2SÐU[ÔUgÐklÑUlÑ%mÔ%mˆÔ"Ý%'¤\°&Ô2SÐU[ÔUgÐklÑUlÑ%mÔ%mˆÔ"à!Ô.ˆÔÝ')¤|ØÔ*ØÔ &Ô"=Ñ=ØÔ(ð(
ñ (
ô (
ˆÔ$õ
 &(¤YØÔ*¸Ô9KÈvÔOjÑ9jð&
ñ &
ô &
ˆÔ"õ œ fÔ&8¸FÔ<WÑ&WÐ]cÔ]rÐsÑsÔsˆŒÝ”z &Ô"<Ñ=Ô=ˆŒˆˆr;   Nc                 ó  — 	 |                       |d d …d d …df         ¦  «        }|                      |d d …d d …df         ¦  «        }|                       |d d …d d …df         ¦  «        }|                      |d d …d d …df         ¦  «        }n"# t          $ r}t          d¦  «        |‚d }~ww xY w|                      |d d …d d …df         |d d …d d …df         z
  ¦  «        }|                      |d d …d d …df         |d d …d d …df         z
  ¦  «        }	t          j        ||||||	gd¬¦  «        }
|                      |
¦  «        }
|                      |¦  «        }|
|z   }
|  	                    |
¦  «        }
|  
                    |
¦  «        }
|
S )Nr   r   é   r   z;The `bbox` coordinate values should be within 0-1000 range.r    rM   )rd   re   Ú
IndexErrorrf   rg   r3   Úcatrk   ri   r-   r1   )r7   Úbboxr   Úleft_position_embeddingsÚupper_position_embeddingsÚright_position_embeddingsÚlower_position_embeddingsÚerf   rg   Úspatial_position_embeddingsri   s               r:   rK   zLiltLayoutEmbeddings.forward–   sú  € ð	cØ'+×'AÒ'AÀ$ÀqÀqÀqÈ!È!È!ÈQÀwÄ-Ñ'PÔ'PÐ$Ø(,×(BÒ(BÀ4ÈÈÈÈ1È1È1ÈaÈÄ=Ñ(QÔ(QÐ%Ø(,×(BÒ(BÀ4ÈÈÈÈ1È1È1ÈaÈÄ=Ñ(QÔ(QÐ%Ø(,×(BÒ(BÀ4ÈÈÈÈ1È1È1ÈaÈÄ=Ñ(QÔ(QÐ%Ð%øÝð 	cð 	cð 	cÝÐZÑ[Ô[ÐabÐbøøøøð	cøøøð !%× :Ò :¸4ÀÀÀÀ1À1À1ÀaÀ¼=È4ÐPQÐPQÐPQÐSTÐSTÐSTÐVWÐPWÌ=Ñ;XÑ YÔ YÐØ $× :Ò :¸4ÀÀÀÀ1À1À1ÀaÀ¼=È4ÐPQÐPQÐPQÐSTÐSTÐSTÐVWÐPWÌ=Ñ;XÑ YÔ YÐå&+¤ià(Ø)Ø)Ø)Ø%Ø%ðð ð
'
ñ 
'
ô 
'
Ð#ð '+×&@Ò&@ÐA\Ñ&]Ô&]Ð#Ø"&×">Ò">¸|Ñ"LÔ"LÐà&AÐD[Ñ&[Ð#à&*§n¢nÐ5PÑ&QÔ&QÐ#Ø&*§l¢lÐ3NÑ&OÔ&OÐ#à*Ð*s   ‚BB Â
B*ÂB%Â%B*)NN)rX   rY   rZ   r#   rK   r[   r\   s   @r:   r^   r^   €   sL   ø€ € € € € ð>ð >ð >ð >ð >ð*+ð +ð +ð +ð +ð +ð +ð +r;   r^   c                   ó4   ‡ — e Zd Zdˆ fd„	Zdd„Z	 	 d	d„Zˆ xZS )
ÚLiltSelfAttentionNc                 óÂ  •— t          ¦   «                              ¦   «          |j        |j        z  dk    r0t	          |d¦  «        s t          d|j        › d|j        › d�¦  «        ‚|j        | _        t          |j        |j        z  ¦  «        | _        | j        | j        z  | _        t          j
        |j        | j        ¦  «        | _        t          j
        |j        | j        ¦  «        | _        t          j
        |j        | j        ¦  «        | _        t          j
        |j        |j        z  | j        |j        z  ¦  «        | _        t          j
        |j        |j        z  | j        |j        z  ¦  «        | _        t          j
        |j        |j        z  | j        |j        z  ¦  «        | _        t          j        |j        ¦  «        | _        |j        | _        || _        d S )Nr   Úembedding_sizezThe hidden size (z6) is not a multiple of the number of attention heads (ú))r"   r#   r&   Únum_attention_headsÚhasattrÚ
ValueErrorrP   Úattention_head_sizeÚall_head_sizer   rj   ÚqueryÚkeyÚvaluerh   Úlayout_queryÚ
layout_keyÚlayout_valuer/   Úattention_probs_dropout_probr1   Ú	layer_idx)r7   r8   rˆ   r9   s      €r:   r#   zLiltSelfAttention.__init__¹   sÀ  ø€ Ý‰Œ×ÒÑÔÐØÔ Ô :Ñ:¸aÒ?Ð?ÍÐPVÐXhÑHiÔHiÐ?Ýð8 FÔ$6ð 8ð 8Ø Ô4ð8ð 8ð 8ñô ð ð
 $*Ô#=ˆÔ Ý#& vÔ'9¸FÔ<VÑ'VÑ#WÔ#WˆÔ Ø!Ô5¸Ô8PÑPˆÔå”Y˜vÔ1°4Ô3EÑFÔFˆŒ
Ý”9˜VÔ/°Ô1CÑDÔDˆŒÝ”Y˜vÔ1°4Ô3EÑFÔFˆŒ
åœIØÔ &Ô"=Ñ=¸tÔ?QÐU[ÔUpÑ?pñ
ô 
ˆÔõ œ)ØÔ &Ô"=Ñ=¸tÔ?QÐU[ÔUpÑ?pñ
ô 
ˆŒõ œIØÔ &Ô"=Ñ=¸tÔ?QÐU[ÔUpÑ?pñ
ô 
ˆÔõ ”z &Ô"EÑFÔFˆŒà$*Ô$?ˆÔ!Ø"ˆŒˆˆr;   r   c                 ó¢   — |                      ¦   «         d d…         | j        | j        |z  fz   } |j        |Ž }|                     dddd¦  «        S )Nr    r   rm   r   r   )rC   r|   r   ÚviewÚpermute)r7   ÚxÚrÚnew_x_shapes       r:   Útranspose_for_scoresz&LiltSelfAttention.transpose_for_scoresØ   sS   € Ø—f’f‘h”h˜s ˜s”m tÔ'?ÀÔAYÐ]^ÑA^Ð&_Ñ_ˆØˆAŒF�KÐ ˆØ�yŠy˜˜A˜q !Ñ$Ô$Ð$r;   Fc                 ó  — |                       |                      |¦  «        | j        ¬¦  «        }|                       |                      |¦  «        | j        ¬¦  «        }|                       |                      |¦  «        | j        ¬¦  «        }|                      |¦  «        }|                       |                      |¦  «        ¦  «        }	|                       |                      |¦  «        ¦  «        }
|                       |¦  «        }t          j	        ||	 
                    dd¦  «        ¦  «        }t          j	        || 
                    dd¦  «        ¦  «        }|t          j        | j        ¦  «        z  }|t          j        | j        | j        z  ¦  «        z  }||z   }||z   }|�||z   } t          j        d¬¦  «        |¦  «        }|                      |¦  «        }t          j	        ||¦  «        }|                     dddd¦  «                             ¦   «         }|                     ¦   «         d d…         | j        | j        z  fz   } |j        |Ž }|�||z   } t          j        d¬¦  «        |¦  «        }|                      |¦  «        }t          j	        ||
¦  «        }|                     dddd¦  «                             ¦   «         }|                     ¦   «         d d…         | j        fz   } |j        |Ž }||f}|r||fz   }|S )	N)r�   r    éþÿÿÿrM   r   rm   r   r   )r�   r†   rh   r…   r„   r�   r‚   rƒ   r3   ÚmatmulÚ	transposeÚmathÚsqrtr   r   ÚSoftmaxr1   r‹   Ú
contiguousrC   r€   rŠ   )r7   Úhidden_statesÚlayout_inputsÚattention_maskÚoutput_attentionsÚlayout_value_layerÚlayout_key_layerÚlayout_query_layerÚmixed_query_layerÚ	key_layerÚvalue_layerÚquery_layerÚattention_scoresÚlayout_attention_scoresÚtmp_attention_scoresÚtmp_layout_attention_scoresÚlayout_attention_probsÚlayout_context_layerÚnew_context_layer_shapeÚattention_probsÚcontext_layerÚoutputss                         r:   rK   zLiltSelfAttention.forwardÝ   s  € ð "×6Ò6°t×7HÒ7HÈÑ7WÔ7WÐ[_Ô[tÐ6ÑuÔuÐØ×4Ò4°T·_²_À]Ñ5SÔ5SÐW[ÔWpÐ4ÑqÔqÐØ!×6Ò6°t×7HÒ7HÈÑ7WÔ7WÐ[_Ô[tÐ6ÑuÔuÐà ŸJšJ }Ñ5Ô5Ðà×-Ò-¨d¯hªh°}Ñ.EÔ.EÑFÔFˆ	Ø×/Ò/°·
²
¸=Ñ0IÔ0IÑJÔJˆØ×/Ò/Ð0AÑBÔBˆå œ<¨°Y×5HÒ5HÈÈRÑ5PÔ5PÑQÔQÐÝ"'¤,Ð/AÐCS×C]ÒC]Ð^`ÐbdÑCeÔCeÑ"fÔ"fÐà/µ$´)¸DÔ<TÑ2UÔ2UÑUÐØ&=ÅÄ	ØÔ$¨Ô(AÑAñA
ô A
ñ '
Ð#ð 0Ð2MÑMÐØ"=Ð@TÑ"TÐàÐ%à&=ÀÑ&NÐ#ð "4¥¤°Ð!3Ñ!3Ô!3Ð4KÑ!LÔ!LÐð "&§¢Ð.DÑ!EÔ!EÐå$œ|Ð,BÐDVÑWÔWÐà3×;Ò;¸A¸qÀ!ÀQÑGÔG×RÒRÑTÔTÐØ"6×";Ò";Ñ"=Ô"=¸c¸r¸cÔ"BÀdÔFXÐ\`Ô\uÑFuÐEwÑ"wÐØ8Ð3Ô8Ð:QÐRÐàÐ%à/°.Ñ@Ðð -�"œ*¨Ð,Ñ,Ô,Ð-=Ñ>Ô>ˆð Ÿ,š, Ñ7Ô7ˆåœ _°kÑBÔBˆà%×-Ò-¨a°°A°qÑ9Ô9×DÒDÑFÔFˆØ"/×"4Ò"4Ñ"6Ô"6°s¸°sÔ";¸tÔ?QÐ>SÑ"SÐØ*˜Ô*Ð,CÐDˆà Ð"6Ð7ˆØð 	3Ø Ð 2Ñ2ˆGàˆr;   ©N)r   ©NF)rX   rY   rZ   r#   r�   rK   r[   r\   s   @r:   rx   rx   ¸   su   ø€ € € € € ð#ð #ð #ð #ð #ð #ð>%ð %ð %ð %ð ØðAð Að Að Að Að Að Að Ar;   rx   c                   óP   ‡ — e Zd Zˆ fd„Zdej        dej        dej        fd„Zˆ xZS )ÚLiltSelfOutputc                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t          j        |j	        ¦  «        | _
        d S ©Nr   )r"   r#   r   rj   r&   Údenser-   r.   r/   r0   r1   r6   s     €r:   r#   zLiltSelfOutput.__init__#  sf   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3EÑFÔFˆŒ
Ýœ fÔ&8¸fÔ>SÐTÑTÔTˆŒÝ”z &Ô"<Ñ=Ô=ˆŒˆˆr;   r˜   Úinput_tensorÚreturnc                 óŠ   — |                       |¦  «        }|                      |¦  «        }|                      ||z   ¦  «        }|S r­   ©r³   r1   r-   ©r7   r˜   r´   s      r:   rK   zLiltSelfOutput.forward)  ó@   € ØŸ
š
 =Ñ1Ô1ˆØŸš ]Ñ3Ô3ˆØŸš }°|Ñ'CÑDÔDˆØÐr;   ©rX   rY   rZ   r#   r3   ÚTensorrK   r[   r\   s   @r:   r°   r°   "  ói   ø€ € € € € ð>ð >ð >ð >ð >ð U¤\ð ÀÄð ÐRWÔR^ð ð ð ð ð ð ð ð r;   r°   c                   ó‚   ‡ — e Zd Zd
ˆ fd„	Z	 	 ddej        dej        dej        dz  dedz  deej                 f
d	„Z	ˆ xZ
S )ÚLiltAttentionNc                 ó  •— t          ¦   «                              ¦   «          t          ||¬¦  «        | _        t	          |¦  «        | _        |j        }|j        |j        z  |_        t	          |¦  «        | _        ||_        d S )N©rˆ   )	r"   r#   rx   r7   r°   Úoutputr&   rh   Úlayout_output)r7   r8   rˆ   Úori_hidden_sizer9   s       €r:   r#   zLiltAttention.__init__1  su   ø€ Ý‰Œ×ÒÑÔÐÝ% f¸	ÐBÑBÔBˆŒ	Ý$ VÑ,Ô,ˆŒà Ô,ˆØ#Ô/°6Ô3NÑNˆÔÝ+¨FÑ3Ô3ˆÔØ,ˆÔÐÐr;   Fr˜   r™   rš   r›   rµ   c                 óÄ   — |                       ||||¦  «        }|                      |d         |¦  «        }|                      |d         |¦  «        }||f|dd …         z   }|S )Nr   r   rm   )r7   rÁ   rÂ   )	r7   r˜   r™   rš   r›   Úself_outputsÚattention_outputÚlayout_attention_outputr¬   s	            r:   rK   zLiltAttention.forward;  su   € ð —y’yØØØØñ	
ô 
ˆð  Ÿ;š; |°A¤¸ÑFÔFÐØ"&×"4Ò"4°\À!´_ÀmÑ"TÔ"TÐØ#Ð%<Ð=ÀÈQÈRÈRÔ@PÑPˆØˆr;   r­   r®   )rX   rY   rZ   r#   r3   r»   ÚFloatTensorÚboolÚtuplerK   r[   r\   s   @r:   r¾   r¾   0  s¥   ø€ € € € € ð-ð -ð -ð -ð -ð -ð 48Ø).ðð à”|ðð ”|ðð Ô)¨DÑ0ð	ð
   $™;ðð 
ˆuŒ|Ô	ðð ð ð ð ð ð ð r;   r¾   c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚLiltIntermediatec                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          |j        t          ¦  «        rt          |j                 | _        d S |j        | _        d S r­   )r"   r#   r   rj   r&   Úintermediate_sizer³   Ú
isinstanceÚ
hidden_actÚstrr	   Úintermediate_act_fnr6   s     €r:   r#   zLiltIntermediate.__init__P  sn   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3KÑLÔLˆŒ
Ý�fÔ'­Ñ-Ô-ð 	9Ý'-¨fÔ.?Ô'@ˆDÔ$Ð$Ð$à'-Ô'8ˆDÔ$Ð$Ð$r;   r˜   rµ   c                 óZ   — |                       |¦  «        }|                      |¦  «        }|S r­   )r³   rÒ   )r7   r˜   s     r:   rK   zLiltIntermediate.forwardX  s,   € ØŸ
š
 =Ñ1Ô1ˆØ×0Ò0°Ñ?Ô?ˆØÐr;   rº   r\   s   @r:   rÌ   rÌ   O  s^   ø€ € € € € ð9ð 9ð 9ð 9ð 9ð U¤\ð °e´lð ð ð ð ð ð ð ð r;   rÌ   c                   óP   ‡ — e Zd Zˆ fd„Zdej        dej        dej        fd„Zˆ xZS )Ú
LiltOutputc                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t          j	        |j
        ¦  «        | _        d S r²   )r"   r#   r   rj   rÎ   r&   r³   r-   r.   r/   r0   r1   r6   s     €r:   r#   zLiltOutput.__init__`  sf   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ7¸Ô9KÑLÔLˆŒ
Ýœ fÔ&8¸fÔ>SÐTÑTÔTˆŒÝ”z &Ô"<Ñ=Ô=ˆŒˆˆr;   r˜   r´   rµ   c                 óŠ   — |                       |¦  «        }|                      |¦  «        }|                      ||z   ¦  «        }|S r­   r·   r¸   s      r:   rK   zLiltOutput.forwardf  r¹   r;   rº   r\   s   @r:   rÕ   rÕ   _  r¼   r;   rÕ   c                   óŽ   ‡ — e Zd Zdˆ fd„	Z	 	 ddej        dej        dej        dz  dedz  deej                 f
d	„Z	d
„ Z
d„ Zˆ xZS )Ú	LiltLayerNc                 óÂ  •— t          ¦   «                              ¦   «          |j        | _        d| _        t	          ||¬¦  «        | _        t          |¦  «        | _        t          |¦  «        | _	        |j
        }|j        }|j
        |j        z  |_
        |j        |j        z  |_        t          |¦  «        | _        t          |¦  «        | _        ||_
        ||_        d S )Nr   rÀ   )r"   r#   Úchunk_size_feed_forwardÚseq_len_dimr¾   Ú	attentionrÌ   ÚintermediaterÕ   rÁ   r&   rÎ   rh   Úlayout_intermediaterÂ   )r7   r8   rˆ   rÃ   Úori_intermediate_sizer9   s        €r:   r#   zLiltLayer.__init__n  sÌ   ø€ Ý‰Œ×ÒÑÔÐØ'-Ô'EˆÔ$ØˆÔÝ& v¸ÐCÑCÔCˆŒÝ,¨VÑ4Ô4ˆÔÝ  Ñ(Ô(ˆŒà Ô,ˆØ &Ô 8ÐØ#Ô/°6Ô3NÑNˆÔØ#)Ô#;¸vÔ?ZÑ#ZˆÔ Ý#3°FÑ#;Ô#;ˆÔ Ý'¨Ñ/Ô/ˆÔØ,ˆÔØ#8ˆÔ Ð Ð r;   Fr˜   r™   rš   r›   rµ   c                 óþ   — |                       ||||¬¦  «        }|d         }|d         }|dd …         }t          | j        | j        | j        |¦  «        }	t          | j        | j        | j        |¦  «        }
|	|
f|z   }|S )N)r›   r   r   rm   )rÝ   r   Úfeed_forward_chunkrÛ   rÜ   Úlayout_feed_forward_chunk)r7   r˜   r™   rš   r›   Úself_attention_outputsrÆ   rÇ   r¬   Úlayer_outputÚlayout_layer_outputs              r:   rK   zLiltLayer.forward  s­   € ð "&§¢ØØØØ/ð	 "0ñ "
ô "
Ðð 2°!Ô4ÐØ"8¸Ô";Ðà(¨¨¨Ô,ˆå0ØÔ# TÔ%AÀ4ÔCSÐUeñ
ô 
ˆõ 8ØÔ*¨DÔ,HÈ$ÔJZÐ\sñ
ô 
Ðð  Ð!4Ð5¸Ñ?ˆàˆr;   c                 ó\   — |                       |¦  «        }|                      ||¦  «        }|S r­   )rÞ   rÁ   ©r7   rÆ   Úintermediate_outputrå   s       r:   râ   zLiltLayer.feed_forward_chunkœ  s2   € Ø"×/Ò/Ð0@ÑAÔAÐØ—{’{Ð#6Ð8HÑIÔIˆØÐr;   c                 ó\   — |                       |¦  «        }|                      ||¦  «        }|S r­   )rß   rÂ   rè   s       r:   rã   z#LiltLayer.layout_feed_forward_chunk¡  s4   € Ø"×6Ò6Ð7GÑHÔHÐØ×)Ò)Ð*=Ð?OÑPÔPˆØÐr;   r­   r®   )rX   rY   rZ   r#   r3   r»   rÈ   rÉ   rÊ   rK   râ   rã   r[   r\   s   @r:   rÙ   rÙ   m  sÃ   ø€ € € € € ð9ð 9ð 9ð 9ð 9ð 9ð* 48Ø).ðð à”|ðð ”|ðð Ô)¨DÑ0ð	ð
   $™;ðð 
ˆuŒ|Ô	ðð ð ð ð:ð ð ð
ð ð ð ð ð ð r;   rÙ   c                   óž   ‡ — e Zd Zˆ fd„Z	 	 	 	 ddej        dej        dej        dz  dedz  d	edz  d
edz  deej                 e	z  fd„Z
ˆ xZS )ÚLiltEncoderc                 óÆ   •‡— t          ¦   «                              ¦   «          ‰| _        t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        d S )Nc                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS © )rÙ   )Ú.0Ú_r8   s     €r:   ú
<listcomp>z(LiltEncoder.__init__.<locals>.<listcomp>«  s!   ø€ Ð#_Ð#_Ð#_¸!¥I¨fÑ$5Ô$5Ð#_Ð#_Ð#_r;   )r"   r#   r8   r   Ú
ModuleListÚrangeÚnum_hidden_layersÚlayerr6   s    `€r:   r#   zLiltEncoder.__init__¨  sV   øø€ Ý‰Œ×ÒÑÔÐØˆŒÝ”]Ð#_Ð#_Ð#_Ð#_½uÀVÔE]Ñ?^Ô?^Ð#_Ñ#_Ô#_Ñ`Ô`ˆŒ
ˆ
ˆ
r;   NFTr˜   r™   rš   r›   Úoutput_hidden_statesÚreturn_dictrµ   c                 ó&  — |rdnd }|rdnd }t          | j        ¦  «        D ]9\  }	}
|r||fz   } |
||||¦  «        }|d         }|d         }|r||d         fz   }Œ:|r||fz   }|st          d„ |||fD ¦   «         ¦  «        S t          |||¬¦  «        S )Nrï   r   r   rm   c              3   ó   K  — | ]}|®|V — Œ	d S r­   rï   )rð   Úvs     r:   ú	<genexpr>z&LiltEncoder.forward.<locals>.<genexpr>Î  s4   è è € ð ð àð
 �=ð ð !�=�=�=ðð r;   )Úlast_hidden_stater˜   Ú
attentions)Ú	enumeraterö   rÊ   r   )r7   r˜   r™   rš   r›   r÷   rø   Úall_hidden_statesÚall_self_attentionsÚiÚlayer_moduleÚlayer_outputss               r:   rK   zLiltEncoder.forward­  s$  € ð #7Ð@˜B˜B¸DÐØ$5Ð?˜b˜b¸4Ðå(¨¬Ñ4Ô4ð 	Pð 	P‰OˆAˆ|Ø#ð IØ$5¸Ð8HÑ$HÐ!à(˜LØØØØ!ñ	ô ˆMð *¨!Ô,ˆMØ)¨!Ô,ˆMà ð PØ&9¸]È1Ô=MÐ<OÑ&OÐ#øàð 	EØ 1°]Ð4DÑ DÐàð 		Ýð ð ð "Ø%Ø'ððñ ô ñ ô ð õ Ø+Ø+Ø*ð
ñ 
ô 
ð 	
r;   )NFFT)rX   rY   rZ   r#   r3   r»   rÈ   rÉ   rÊ   r   rK   r[   r\   s   @r:   rì   rì   §  sÌ   ø€ € € € € ðað að að að að 48Ø).Ø,1Ø#'ð.
ð .
à”|ð.
ð ”|ð.
ð Ô)¨DÑ0ð	.
ð
   $™;ð.
ð # T™kð.
ð ˜D‘[ð.
ð 
ˆuŒ|Ô	˜Ñ	.ð.
ð .
ð .
ð .
ð .
ð .
ð .
ð .
r;   rì   c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )Ú
LiltPoolerc                 óÀ   •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        ¦   «         | _        d S r­   )r"   r#   r   rj   r&   r³   ÚTanhÚ
activationr6   s     €r:   r#   zLiltPooler.__init__à  sC   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3EÑFÔFˆŒ
Ýœ'™)œ)ˆŒˆˆr;   r˜   rµ   c                 ór   — |d d …df         }|                       |¦  «        }|                      |¦  «        }|S ©Nr   )r³   r	  )r7   r˜   Úfirst_token_tensorÚpooled_outputs       r:   rK   zLiltPooler.forwardå  s@   € ð +¨1¨1¨1¨a¨4Ô0ÐØŸ
š
Ð#5Ñ6Ô6ˆØŸš¨Ñ6Ô6ˆØÐr;   rº   r\   s   @r:   r  r  ß  s^   ø€ € € € € ð$ð $ð $ð $ð $ð
 U¤\ð °e´lð ð ð ð ð ð ð ð r;   r  c                   ó6   ‡ — e Zd ZU eed<   dZdZg Zˆ fd„Zˆ xZ	S )ÚLiltPreTrainedModelr8   ÚliltTc                 ó  •— t          ¦   «                              |¦  «         t          |t          ¦  «        rQt	          j        |j        t          j        |j        j	        d         ¦  «         
                    d¦  «        ¦  «         d S d S )Nr    r   )r"   Ú_init_weightsrÏ   r   ÚinitÚcopy_r   r3   r4   Úshaper5   )r7   Úmoduler9   s     €r:   r  z!LiltPreTrainedModel._init_weightsõ  s{   ø€ Ý‰Œ×Ò˜fÑ%Ô%Ð%Ý�fÕ0Ñ1Ô1ð 	iÝŒJ�vÔ*­E¬L¸Ô9LÔ9RÐSUÔ9VÑ,WÔ,W×,^Ò,^Ð_fÑ,gÔ,gÑhÔhÐhÐhÐhð	ið 	ir;   )
rX   rY   rZ   r   Ú__annotations__Úbase_model_prefixÚsupports_gradient_checkpointingÚ_no_split_modulesr  r[   r\   s   @r:   r  r  î  sa   ø€ € € € € € àÐÐÑØÐØ&*Ð#ØÐðið ið ið ið ið ið ið ið ir;   r  c                   ó  ‡ — e Zd Zdˆ fd„	Zd„ Zd„ Ze	 	 	 	 	 	 	 	 	 ddej        dz  dej        dz  dej        dz  d	ej        dz  d
ej        dz  dej        dz  de	dz  de	dz  de	dz  de
ej                 ez  fd„¦   «         Zˆ xZS )Ú	LiltModelTc                 ó(  •— t          ¦   «                              |¦  «         || _        t          |¦  «        | _        t          |¦  «        | _        t          |¦  «        | _        |rt          |¦  «        nd| _
        |                      ¦   «          dS )zv
        add_pooling_layer (bool, *optional*, defaults to `True`):
            Whether to add a pooling layer
        N)r"   r#   r8   r   rJ   r^   Úlayout_embeddingsrì   Úencoderr  ÚpoolerÚ	post_init)r7   r8   Úadd_pooling_layerr9   s      €r:   r#   zLiltModel.__init__ý  sƒ   ø€ õ
 	‰Œ×Ò˜Ñ Ô Ð ØˆŒå,¨VÑ4Ô4ˆŒÝ!5°fÑ!=Ô!=ˆÔÝ" 6Ñ*Ô*ˆŒà,=ÐG•j Ñ(Ô(Ð(À4ˆŒð 	�ŠÑÔÐÐÐr;   c                 ó   — | j         j        S r­   ©rJ   r(   )r7   s    r:   Úget_input_embeddingszLiltModel.get_input_embeddings  s   € ØŒÔ.Ð.r;   c                 ó   — || j         _        d S r­   r$  )r7   rƒ   s     r:   Úset_input_embeddingszLiltModel.set_input_embeddings  s   € Ø*/ˆŒÔ'Ð'Ð'r;   NrF   rp   rš   rG   r   rH   r›   r÷   rø   rµ   c
                 ó,  — |�|n| j         j        }|�|n| j         j        }|	�|	n| j         j        }	|�|�t	          d¦  «        ‚|�+|                      ||¦  «         |                     ¦   «         }n.|�|                     ¦   «         dd…         }nt	          d¦  «        ‚|\  }}|�|j        n|j        }|€$t          j	        |dz   t          j
        |¬¦  «        }|€t          j        ||f|¬¦  «        }|€gt          | j        d¦  «        r1| j        j        dd…d|…f         }|                     ||¦  «        }|}n!t          j	        |t          j
        |¬¦  «        }|                      ||||¬	¦  «        \  }}t!          | j         ||¬
¦  «        }|                      ||¬¦  «        }|                      ||||||	¬¦  «        }|d         }| j        �|                      |¦  «        nd}|	s||f|dd…         z   S t)          |||j        |j        ¬¦  «        S )aÅ  
        bbox (`torch.LongTensor` of shape `(batch_size, sequence_length, 4)`, *optional*):
            Bounding boxes of each input sequence tokens. Selected in the range `[0,
            config.max_2d_position_embeddings-1]`. Each bounding box should be a normalized version in (x0, y0, x1, y1)
            format, where (x0, y0) corresponds to the position of the upper left corner in the bounding box, and (x1,
            y1) represents the position of the lower right corner. See [Overview](#Overview) for normalization.

        Examples:

        ```python
        >>> from transformers import AutoTokenizer, AutoModel
        >>> from datasets import load_dataset

        >>> tokenizer = AutoTokenizer.from_pretrained("SCUT-DLVCLab/lilt-roberta-en-base")
        >>> model = AutoModel.from_pretrained("SCUT-DLVCLab/lilt-roberta-en-base")

        >>> dataset = load_dataset("nielsr/funsd-layoutlmv3", split="train")
        >>> example = dataset[0]
        >>> words = example["tokens"]
        >>> boxes = example["bboxes"]

        >>> encoding = tokenizer(words, boxes=boxes, return_tensors="pt")

        >>> outputs = model(**encoding)
        >>> last_hidden_states = outputs.last_hidden_state
        ```NzDYou cannot specify both input_ids and inputs_embeds at the same timer    z5You have to specify either input_ids or inputs_embeds)é   r=   )r?   rG   )rF   r   rG   rH   )r8   rH   rš   )rp   r   )rš   r›   r÷   rø   r   r   )rý   Úpooler_outputr˜   rþ   )r8   r›   r÷   rø   r~   Ú%warn_if_padding_and_no_attention_maskrC   r?   r3   rD   rE   Úonesr}   rJ   rG   r5   r
   r  r  r   r   r˜   rþ   )r7   rF   rp   rš   rG   r   rH   r›   r÷   rø   ÚkwargsrI   Ú
batch_sizeÚ
seq_lengthr?   Úbuffered_token_type_idsÚ buffered_token_type_ids_expandedÚembedding_outputÚlayout_embedding_outputÚencoder_outputsÚsequence_outputr  s                         r:   rK   zLiltModel.forward  s™  € ðP 2CÐ1NÐ-Ð-ÐTXÔT_ÔTqÐà$8Ð$DÐ Ð È$Ì+ÔJjð 	ð &1Ð%<�k�kÀ$Ä+ÔBYˆàÐ  ]Ð%>ÝÐcÑdÔdÐdØÐ"Ø×6Ò6°yÀ.ÑQÔQÐQØ#Ÿ.š.Ñ*Ô*ˆKˆKØÐ&Ø'×,Ò,Ñ.Ô.¨s°¨sÔ3ˆKˆKåÐTÑUÔUÐUà!,Ñˆ
�JØ%.Ð%:�Ô!Ð!ÀÔ@Tˆàˆ<Ý”;˜{¨TÑ1½¼ÈFÐSÑSÔSˆDàÐ!Ý"œZ¨*°jÐ)AÈ6ÐRÑRÔRˆNàÐ!Ý�t”Ð(8Ñ9Ô9ð [Ø*.¬/Ô*HÈÈÈÈKÈZÈKÈÔ*XÐ'Ø3J×3QÒ3QÐR\Ð^hÑ3iÔ3iÐ0Ø!A��å!&¤¨[ÅÄ
ÐSYÐ!ZÑ!ZÔ!Z�à)-¯ªØØ%Ø)Ø'ð	 *9ñ *
ô *
Ñ&Ð˜,õ 3Ø”;Ø*Ø)ð
ñ 
ô 
ˆð #'×"8Ò"8¸dÐQ]Ð"8Ñ"^Ô"^ÐàŸ,š,ØØ#Ø)Ø/Ø!5Ø#ð 'ñ 
ô 
ˆð *¨!Ô,ˆØ8<¼Ð8O˜Ÿš OÑ4Ô4Ð4ÐUYˆàð 	JØ# ]Ð3°oÀaÀbÀbÔ6IÑIÐIå)Ø-Ø'Ø)Ô7Ø&Ô1ð	
ñ 
ô 
ð 	
r;   )T)	NNNNNNNNN)rX   rY   rZ   r#   r%  r'  r   r3   r»   rÉ   rÊ   r   rK   r[   r\   s   @r:   r  r  û  sU  ø€ € € € € ðð ð ð ð ð ð"/ð /ð /ð0ð 0ð 0ð ð *.Ø$(Ø.2Ø.2Ø,0Ø-1Ø)-Ø,0Ø#'ðj
ð j
à”< $Ñ&ðj
ð Œl˜TÑ!ðj
ð œ tÑ+ð	j
ð
 œ tÑ+ðj
ð ”l TÑ)ðj
ð ”| dÑ*ðj
ð   $™;ðj
ð # T™kðj
ð ˜D‘[ðj
ð 
ˆuŒ|Ô	Ð9Ñ	9ðj
ð j
ð j
ñ „^ðj
ð j
ð j
ð j
ð j
r;   r  zœ
    LiLT Model transformer with a sequence classification/regression head on top (a linear layer on top of the pooled
    output) e.g. for GLUE tasks.
    )Úcustom_introc                   ó  ‡ — e Zd Zˆ fd„Ze	 	 	 	 	 	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  dej        dz  dej        dz  d	ej        dz  d
e	dz  de	dz  de	dz  de
ej                 ez  fd„¦   «         Zˆ xZS )ÚLiltForSequenceClassificationc                 óì   •— t          ¦   «                              |¦  «         |j        | _        || _        t	          |d¬¦  «        | _        t          |¦  «        | _        |                      ¦   «          d S ©NF)r"  )	r"   r#   Ú
num_labelsr8   r  r  ÚLiltClassificationHeadÚ
classifierr!  r6   s     €r:   r#   z&LiltForSequenceClassification.__init__Š  sg   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø Ô+ˆŒØˆŒå˜f¸Ð>Ñ>Ô>ˆŒ	Ý0°Ñ8Ô8ˆŒð 	�ŠÑÔÐÐÐr;   NrF   rp   rš   rG   r   rH   Úlabelsr›   r÷   rø   rµ   c                 óø  — |
�|
n| j         j        }
|                      ||||||||	|
¬¦	  «	        }|d         }|                      |¦  «        }d}|��t|                     |j        ¦  «        }| j         j        €f| j        dk    rd| j         _        nN| j        dk    r7|j        t          j
        k    s|j        t          j        k    rd| j         _        nd| j         _        | j         j        dk    rWt          ¦   «         }| j        dk    r1 ||                     ¦   «         |                     ¦   «         ¦  «        }nŽ |||¦  «        }n�| j         j        dk    rGt          ¦   «         } ||                     d| j        ¦  «        |                     d¦  «        ¦  «        }n*| j         j        dk    rt!          ¦   «         } |||¦  «        }|
s|f|d	d…         z   }|�|f|z   n|S t#          |||j        |j        ¬
¦  «        S )aÌ  
        bbox (`torch.LongTensor` of shape `(batch_size, sequence_length, 4)`, *optional*):
            Bounding boxes of each input sequence tokens. Selected in the range `[0,
            config.max_2d_position_embeddings-1]`. Each bounding box should be a normalized version in (x0, y0, x1, y1)
            format, where (x0, y0) corresponds to the position of the upper left corner in the bounding box, and (x1,
            y1) represents the position of the lower right corner. See [Overview](#Overview) for normalization.
        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 AutoTokenizer, AutoModelForSequenceClassification
        >>> from datasets import load_dataset

        >>> tokenizer = AutoTokenizer.from_pretrained("SCUT-DLVCLab/lilt-roberta-en-base")
        >>> model = AutoModelForSequenceClassification.from_pretrained("SCUT-DLVCLab/lilt-roberta-en-base")

        >>> dataset = load_dataset("nielsr/funsd-layoutlmv3", split="train")
        >>> example = dataset[0]
        >>> words = example["tokens"]
        >>> boxes = example["bboxes"]

        >>> encoding = tokenizer(words, boxes=boxes, return_tensors="pt")

        >>> outputs = model(**encoding)
        >>> predicted_class_idx = outputs.logits.argmax(-1).item()
        >>> predicted_class = model.config.id2label[predicted_class_idx]
        ```N©rp   rš   rG   r   rH   r›   r÷   rø   r   r   Ú
regressionÚsingle_label_classificationÚmulti_label_classificationr    rm   ©ÚlossÚlogitsr˜   rþ   )r8   rø   r  r=  rA   r?   Úproblem_typer;  r>   r3   rE   rP   r   Úsqueezer   rŠ   r   r   r˜   rþ   ©r7   rF   rp   rš   rG   r   rH   r>  r›   r÷   rø   r-  r¬   r5  rF  rE  Úloss_fctrÁ   s                     r:   rK   z%LiltForSequenceClassification.forward•  s  € ð\ &1Ð%<�k�kÀ$Ä+ÔBYˆà—)’)ØØØ)Ø)Ø%Ø'Ø/Ø!5Ø#ð ñ 

ô 

ˆð " !œ*ˆØ—’ Ñ1Ô1ˆàˆØÑà—Y’Y˜vœ}Ñ-Ô-ˆFØŒ{Ô'Ð/Ø”? aÒ'Ð'Ø/;�D”KÔ,Ð,Ø”_ qÒ(Ð(¨f¬l½e¼jÒ.HÐ.HÈFÌLÕ\aÔ\eÒLeÐLeØ/L�D”KÔ,Ð,à/K�D”KÔ,àŒ{Ô'¨<Ò7Ð7Ý"™9œ9�Ø”? aÒ'Ð'Ø#˜8 F§N¢NÑ$4Ô$4°f·n²nÑ6FÔ6FÑGÔG�D�Dà#˜8 F¨FÑ3Ô3�D�DØ”Ô)Ð-JÒJÐJÝ+Ñ-Ô-�Ø�x §¢¨B°´Ñ @Ô @À&Ç+Â+ÈbÁ/Ä/ÑRÔR��Ø”Ô)Ð-IÒIÐIÝ,Ñ.Ô.�Ø�x ¨Ñ/Ô/�àð 	FØ�Y ¨¨¨¤Ñ,ˆFØ)-Ð)9�T�G˜fÑ$Ð$¸vÐEå'ØØØ!Ô/ØÔ)ð	
ñ 
ô 
ð 	
r;   ©
NNNNNNNNNN)rX   rY   rZ   r#   r   r3   Ú
LongTensorr»   rÈ   rÉ   rÊ   r   rK   r[   r\   s   @r:   r8  r8  ‚  sM  ø€ € € € € ð	ð 	ð 	ð 	ð 	ð ð .2Ø$(Ø37Ø26Ø04Ø26Ø*.Ø)-Ø,0Ø#'ð_
ð _
àÔ# dÑ*ð_
ð Œl˜TÑ!ð_
ð Ô)¨DÑ0ð	_
ð
 Ô(¨4Ñ/ð_
ð Ô&¨Ñ-ð_
ð Ô(¨4Ñ/ð_
ð Ô  4Ñ'ð_
ð   $™;ð_
ð # T™kð_
ð ˜D‘[ð_
ð 
ˆuŒ|Ô	Ð7Ñ	7ð_
ð _
ð _
ñ „^ð_
ð _
ð _
ð _
ð _
r;   r8  c                   ó  ‡ — e Zd Zˆ fd„Ze	 	 	 	 	 	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  dej        dz  dej        dz  d	ej        dz  d
edz  dedz  dedz  de	ej
                 ez  fd„¦   «         Zˆ xZS )ÚLiltForTokenClassificationc                 óZ  •— t          ¦   «                              |¦  «         |j        | _        t          |d¬¦  «        | _        |j        �|j        n|j        }t          j        |¦  «        | _	        t          j
        |j        |j        ¦  «        | _        |                      ¦   «          d S r:  )r"   r#   r;  r  r  Úclassifier_dropoutr0   r   r/   r1   rj   r&   r=  r!  ©r7   r8   rP  r9   s      €r:   r#   z#LiltForTokenClassification.__init__û  sš   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø Ô+ˆŒå˜f¸Ð>Ñ>Ô>ˆŒ	à)/Ô)BÐ)NˆFÔ%Ð%ÐTZÔTnð 	õ ”zÐ"4Ñ5Ô5ˆŒÝœ) FÔ$6¸Ô8IÑJÔJˆŒð 	�ŠÑÔÐÐÐr;   NrF   rp   rš   rG   r   rH   r>  r›   r÷   rø   rµ   c                 óø  — |
�|
n| j         j        }
|                      ||||||||	|
¬¦	  «	        }|d         }|                      |¦  «        }|                      |¦  «        }d}|�`|                     |j        ¦  «        }t          ¦   «         } ||                     d| j	        ¦  «        |                     d¦  «        ¦  «        }|
s|f|dd…         z   }|�|f|z   n|S t          |||j        |j        ¬¦  «        S )aÈ  
        bbox (`torch.LongTensor` of shape `(batch_size, sequence_length, 4)`, *optional*):
            Bounding boxes of each input sequence tokens. Selected in the range `[0,
            config.max_2d_position_embeddings-1]`. Each bounding box should be a normalized version in (x0, y0, x1, y1)
            format, where (x0, y0) corresponds to the position of the upper left corner in the bounding box, and (x1,
            y1) represents the position of the lower right corner. See [Overview](#Overview) for normalization.
        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 AutoTokenizer, AutoModelForTokenClassification
        >>> from datasets import load_dataset

        >>> tokenizer = AutoTokenizer.from_pretrained("SCUT-DLVCLab/lilt-roberta-en-base")
        >>> model = AutoModelForTokenClassification.from_pretrained("SCUT-DLVCLab/lilt-roberta-en-base")

        >>> dataset = load_dataset("nielsr/funsd-layoutlmv3", split="train")
        >>> example = dataset[0]
        >>> words = example["tokens"]
        >>> boxes = example["bboxes"]

        >>> encoding = tokenizer(words, boxes=boxes, return_tensors="pt")

        >>> outputs = model(**encoding)
        >>> predicted_class_indices = outputs.logits.argmax(-1)
        ```Nr@  r   r    rm   rD  )r8   rø   r  r1   r=  rA   r?   r   rŠ   r;  r   r˜   rþ   rI  s                     r:   rK   z"LiltForTokenClassification.forward	  s)  € ðV &1Ð%<�k�kÀ$Ä+ÔBYˆà—)’)ØØØ)Ø)Ø%Ø'Ø/Ø!5Ø#ð ñ 

ô 

ˆð " !œ*ˆàŸ,š, Ñ7Ô7ˆØ—’ Ñ1Ô1ˆàˆØÐà—Y’Y˜vœ}Ñ-Ô-ˆFÝ'Ñ)Ô)ˆHØ�8˜FŸKšK¨¨D¬OÑ<Ô<¸f¿kºkÈ"¹o¼oÑNÔNˆDàð 	FØ�Y ¨¨¨¤Ñ,ˆFØ)-Ð)9�T�G˜fÑ$Ð$¸vÐEå$ØØØ!Ô/ØÔ)ð	
ñ 
ô 
ð 	
r;   rK  )rX   rY   rZ   r#   r   r3   rL  rÈ   rÉ   rÊ   r»   r   rK   r[   r\   s   @r:   rN  rN  ø  sN  ø€ € € € € ðð ð ð ð ð ð .2Ø(,Ø37Ø26Ø04Ø26Ø*.Ø)-Ø,0Ø#'ðM
ð M
àÔ# dÑ*ðM
ð Ô Ñ%ðM
ð Ô)¨DÑ0ð	M
ð
 Ô(¨4Ñ/ðM
ð Ô&¨Ñ-ðM
ð Ô(¨4Ñ/ðM
ð Ô  4Ñ'ðM
ð   $™;ðM
ð # T™kðM
ð ˜D‘[ðM
ð 
ˆuŒ|Ô	Ð4Ñ	4ðM
ð M
ð M
ñ „^ðM
ð M
ð M
ð M
ð M
r;   rN  c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )r<  z-Head for sentence-level classification tasks.c                 ó4  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        |j        �|j        n|j        }t          j        |¦  «        | _	        t          j        |j        |j
        ¦  «        | _        d S r­   )r"   r#   r   rj   r&   r³   rP  r0   r/   r1   r;  Úout_projrQ  s      €r:   r#   zLiltClassificationHead.__init__^  s   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3EÑFÔFˆŒ
à)/Ô)BÐ)NˆFÔ%Ð%ÐTZÔTnð 	õ ”zÐ"4Ñ5Ô5ˆŒÝœ	 &Ô"4°fÔ6GÑHÔHˆŒˆˆr;   c                 óô   — |d d …dd d …f         }|                       |¦  «        }|                      |¦  «        }t          j        |¦  «        }|                       |¦  «        }|                      |¦  «        }|S r  )r1   r³   r3   ÚtanhrU  )r7   Úfeaturesr-  rŒ   s       r:   rK   zLiltClassificationHead.forwardg  sj   € Ø�Q�Q�Q˜˜1˜1˜1�WÔˆØ�LŠL˜‰OŒOˆØ�JŠJ�q‰MŒMˆÝŒJ�q‰MŒMˆØ�LŠL˜‰OŒOˆØ�MŠM˜!ÑÔˆØˆr;   )rX   rY   rZ   Ú__doc__r#   rK   r[   r\   s   @r:   r<  r<  [  sR   ø€ € € € € Ø7Ð7ðIð Ið Ið Ið Iðð ð ð ð ð ð r;   r<  c                   ó,  ‡ — e Zd Zˆ fd„Ze	 	 	 	 	 	 	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  dej        dz  dej        dz  d	ej        dz  d
ej        dz  dedz  dedz  dedz  de	ej
                 ez  fd„¦   «         Zˆ xZS )ÚLiltForQuestionAnsweringc                 óþ   •— t          ¦   «                              |¦  «         |j        | _        t          |d¬¦  «        | _        t          j        |j        |j        ¦  «        | _        |  	                    ¦   «          d S r:  )
r"   r#   r;  r  r  r   rj   r&   Ú
qa_outputsr!  r6   s     €r:   r#   z!LiltForQuestionAnswering.__init__t  sj   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø Ô+ˆŒå˜f¸Ð>Ñ>Ô>ˆŒ	Ýœ) FÔ$6¸Ô8IÑJÔJˆŒð 	�ŠÑÔÐÐÐr;   NrF   rp   rš   rG   r   rH   Ústart_positionsÚend_positionsr›   r÷   rø   rµ   c                 ó°  — |�|n| j         j        }|                      |||||||	|
|¬¦	  «	        }|d         }|                      |¦  «        }|                     dd¬¦  «        \  }}|                     d¦  «                             ¦   «         }|                     d¦  «                             ¦   «         }d}|�ç|�åt          |                     ¦   «         ¦  «        dk    r|                     d¦  «        }t          |                     ¦   «         ¦  «        dk    r|                     d¦  «        }|                     d¦  «        }| 	                    d|¦  «        }| 	                    d|¦  «        }t          |¬¦  «        } |||¦  «        } |||¦  «        }||z   dz  }|s||f|dd…         z   }|�|f|z   n|S t          ||||j        |j        ¬	¦  «        S )
aÚ  
        bbox (`torch.LongTensor` of shape `(batch_size, sequence_length, 4)`, *optional*):
            Bounding boxes of each input sequence tokens. Selected in the range `[0,
            config.max_2d_position_embeddings-1]`. Each bounding box should be a normalized version in (x0, y0, x1, y1)
            format, where (x0, y0) corresponds to the position of the upper left corner in the bounding box, and (x1,
            y1) represents the position of the lower right corner. See [Overview](#Overview) for normalization.

        Examples:

        ```python
        >>> from transformers import AutoTokenizer, AutoModelForQuestionAnswering
        >>> from datasets import load_dataset

        >>> tokenizer = AutoTokenizer.from_pretrained("SCUT-DLVCLab/lilt-roberta-en-base")
        >>> model = AutoModelForQuestionAnswering.from_pretrained("SCUT-DLVCLab/lilt-roberta-en-base")

        >>> dataset = load_dataset("nielsr/funsd-layoutlmv3", split="train")
        >>> example = dataset[0]
        >>> words = example["tokens"]
        >>> boxes = example["bboxes"]

        >>> encoding = tokenizer(words, boxes=boxes, return_tensors="pt")

        >>> 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]
        >>> predicted_answer = tokenizer.decode(predict_answer_tokens)
        ```Nr@  r   r   r    rM   )Úignore_indexrm   )rE  Ústart_logitsÚ
end_logitsr˜   rþ   )r8   rø   r  r]  ÚsplitrH  r—   ÚlenrC   Úclampr   r   r˜   rþ   )r7   rF   rp   rš   rG   r   rH   r^  r_  r›   r÷   rø   r-  r¬   r5  rF  rb  rc  Ú
total_lossÚignored_indexrJ  Ú
start_lossÚend_lossrÁ   s                           r:   rK   z LiltForQuestionAnswering.forward~  s  € ð^ &1Ð%<�k�kÀ$Ä+ÔBYˆà—)’)ØØØ)Ø)Ø%Ø'Ø/Ø!5Ø#ð ñ 

ô 

ˆð " !œ*ˆà—’ Ñ1Ô1ˆØ#)§<¢<°°r <Ñ#:Ô#:Ñ ˆ�jØ#×+Ò+¨BÑ/Ô/×:Ò:Ñ<Ô<ˆØ×'Ò'¨Ñ+Ô+×6Ò6Ñ8Ô8ˆ
àˆ
ØÐ&¨=Ð+Då�?×'Ò'Ñ)Ô)Ñ*Ô*¨QÒ.Ð.Ø"1×"9Ò"9¸"Ñ"=Ô"=�Ý�=×%Ò%Ñ'Ô'Ñ(Ô(¨1Ò,Ð,Ø -× 5Ò 5°bÑ 9Ô 9�à(×-Ò-¨aÑ0Ô0ˆMØ-×3Ò3°A°}ÑEÔEˆOØ)×/Ò/°°=ÑAÔAˆMå'°]ÐCÑCÔCˆHØ!˜ ,°Ñ@Ô@ˆJØ�x 
¨MÑ:Ô:ˆHØ$ xÑ/°1Ñ4ˆJàð 	RØ" JÐ/°'¸!¸"¸"´+Ñ=ˆFØ/9Ð/E�Z�M FÑ*Ð*È6ÐQå+ØØ%Ø!Ø!Ô/ØÔ)ð
ñ 
ô 
ð 	
r;   )NNNNNNNNNNN)rX   rY   rZ   r#   r   r3   rL  rÈ   rÉ   rÊ   r»   r   rK   r[   r\   s   @r:   r[  r[  q  sd  ø€ € € € € ðð ð ð ð ð ð .2Ø(,Ø37Ø26Ø04Ø26Ø37Ø15Ø)-Ø,0Ø#'ð^
ð ^
àÔ# dÑ*ð^
ð Ô Ñ%ð^
ð Ô)¨DÑ0ð	^
ð
 Ô(¨4Ñ/ð^
ð Ô&¨Ñ-ð^
ð Ô(¨4Ñ/ð^
ð Ô)¨DÑ0ð^
ð Ô'¨$Ñ.ð^
ð   $™;ð^
ð # T™kð^
ð ˜D‘[ð^
ð 
ˆuŒ|Ô	Ð;Ñ	;ð^
ð ^
ð ^
ñ „^ð^
ð ^
ð ^
ð ^
ð ^
r;   r[  )r[  r8  rN  r  r  )5rY  r”   r3   r   Útorch.nnr   r   r   Ú r   r  Úactivationsr	   Úmasking_utilsr
   Úmodeling_layersr   Úmodeling_outputsr   r   r   r   r   Úmodeling_utilsr   Úpytorch_utilsr   Úutilsr   r   Úconfiguration_liltr   Ú
get_loggerrX   ÚloggerÚModuler   r^   rx   r°   r¾   rÌ   rÕ   rÙ   rì   r  r  r  r8  rN  r<  r[  Ú__all__rï   r;   r:   ú<module>ry     s¥  ðð Ð à €€€à €€€Ø Ð Ð Ð Ð Ð Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aà &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð ð ð ð ð ð ð ð ð .Ð -Ð -Ð -Ð -Ð -Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø *Ð *Ð *Ð *Ð *Ð *ð 
ˆÔ	˜HÑ	%Ô	%€ðS=ð S=ð S=ð S=ð S=˜œñ S=ô S=ð S=ðl5+ð 5+ð 5+ð 5+ð 5+˜2œ9ñ 5+ô 5+ð 5+ðpfð fð fð fð f˜œ	ñ fô fð fðTð ð ð ð �R”Yñ ô ð ðð ð ð ð �B”Iñ ô ð ð>ð ð ð ð �r”yñ ô ð ð ð ð ð ð �”ñ ô ð ð7ð 7ð 7ð 7ð 7Ð*ñ 7ô 7ð 7ðt4
ð 4
ð 4
ð 4
ð 4
�"”)ñ 4
ô 4
ð 4
ðpð ð ð ð �”ñ ô ð ð ð	ið 	ið 	ið 	ið 	i˜/ñ 	iô 	iñ „ð	ið ðC
ð C
ð C
ð C
ð C
Ð#ñ C
ô C
ñ „ðC
ðL €ððñ ô ðm
ð m
ð m
ð m
ð m
Ð$7ñ m
ô m
ñô ðm
ð` ð^
ð ^
ð ^
ð ^
ð ^
Ð!4ñ ^
ô ^
ñ „ð^
ðDð ð ð ð ˜RœYñ ô ð ð, ðk
ð k
ð k
ð k
ð k
Ð2ñ k
ô k
ñ „ðk
ð\ð ð €€€r;   