§
    ‚Štj°À  ã                   óž  — d Z ddlZddlZddlZddlmZ ddlmc 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 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$ ddl%m&Z&m'Z' ddl(m)Z) ddl*m+Z+  e#j,        e-¦  «        Z. G d„ dej/        ¦  «        Z0 G d„ dej/        ¦  «        Z1 G d„ dej/        ¦  «        Z2 G d„ dej/        ¦  «        Z3 G d„ dej/        ¦  «        Z4 G d„ de¦  «        Z5 G d„ dej/        ¦  «        Z6 G d „ d!ej/        ¦  «        Z7 G d"„ d#ej/        ¦  «        Z8e! G d$„ d%e¦  «        ¦   «         Z9e! G d&„ d'e9¦  «        ¦   «         Z: G d(„ d)ej/        ¦  «        Z; e!d*¬+¦  «         G d,„ d-e9¦  «        ¦   «         Z<e! G d.„ d/e9¦  «        ¦   «         Z= e!d0¬+¦  «         G d1„ d2e9¦  «        ¦   «         Z>g d3¢Z?dS )4zPyTorch LayoutLMv3 model.é    N)ÚBCEWithLogitsLossÚCrossEntropyLossÚMSELossé   )Úinitialization)ÚACT2FN)Úcreate_bidirectional_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚQuestionAnsweringModelOutputÚSequenceClassifierOutputÚTokenClassifierOutput)ÚPreTrainedModel)ÚUnpack)Úapply_chunking_to_forward)Úauto_docstringÚcan_return_tupleÚloggingÚ	torch_int)ÚTransformersKwargsÚmerge_with_config_defaults)Úcapture_outputsé   )ÚLayoutLMv3Configc                   ó*   ‡ — e Zd ZdZˆ fd„Zdd„Zˆ xZS )ÚLayoutLMv3PatchEmbeddingsz„LayoutLMv3 image (patch) embeddings. This class also automatically interpolates the position embeddings for varying
    image sizes.c                 óÈ  •— t          ¦   «                              ¦   «          t          |j        t          j        j        ¦  «        r|j        n|j        |j        f}t          |j        t          j        j        ¦  «        r|j        n|j        |j        f}|d         |d         z  |d         |d         z  f| _        t          j
        |j        |j        ||¬¦  «        | _        d S )Nr   r   )Úkernel_sizeÚstride)ÚsuperÚ__init__Ú
isinstanceÚ
input_sizeÚcollectionsÚabcÚIterableÚ
patch_sizeÚpatch_shapeÚnnÚConv2dÚnum_channelsÚhidden_sizeÚproj)ÚselfÚconfigÚ
image_sizer'   Ú	__class__s       €úp/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/layoutlmv3/modeling_layoutlmv3.pyr!   z"LayoutLMv3PatchEmbeddings.__init__7   s×   ø€ Ý‰Œ×ÒÑÔÐõ ˜&Ô+­[¬_Ô-EÑFÔFð8ˆFÔÐàÔ# VÔ%6Ð7ð 	õ ˜&Ô+­[¬_Ô-EÑFÔFð8ˆFÔÐàÔ# VÔ%6Ð7ð 	ð
 ' qœM¨Z¸¬]Ñ:¸JÀq¼MÈZÐXYÌ]Ñ<ZÐ[ˆÔÝ”I˜fÔ1°6Ô3EÐS]ÐfpÐqÑqÔqˆŒ	ˆ	ˆ	ó    Nc                 ó‚  — |                       |¦  «        }|�~|                     d| j        d         | j        d         d¦  «        }|                     dddd¦  «        }|j        d         |j        d         }}t          j        |||fd¬¦  «        }||z   }|                     d¦  «                             dd¦  «        }|S )Nr   r   éÿÿÿÿr   é   Úbicubic)ÚsizeÚmode)	r-   Úviewr(   ÚpermuteÚshapeÚFÚinterpolateÚflattenÚ	transpose)r.   Úpixel_valuesÚposition_embeddingÚ
embeddingsÚpatch_heightÚpatch_widths         r2   Úforwardz!LayoutLMv3PatchEmbeddings.forwardG   sÌ   € Ø—Y’Y˜|Ñ,Ô,ˆ
àÐ)à!3×!8Ò!8¸¸DÔ<LÈQÔ<OÐQUÔQaÐbcÔQdÐfhÑ!iÔ!iÐØ!3×!;Ò!;¸A¸qÀ!ÀQÑ!GÔ!GÐØ(2Ô(8¸Ô(;¸ZÔ=MÈaÔ=P˜+ˆLÝ!"¤Ð/AÈÐWbÐHcÐjsÐ!tÑ!tÔ!tÐØ#Ð&8Ñ8ˆJà×'Ò'¨Ñ*Ô*×4Ò4°Q¸Ñ:Ô:ˆ
ØÐr3   ©N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__r!   rF   Ú__classcell__©r1   s   @r2   r   r   3   s[   ø€ € € € € ðð ðrð rð rð rð rð ð ð ð ð ð ð ð r3   r   c                   óF   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Z	 	 	 	 	 dd„Zˆ xZ	S )	ÚLayoutLMv3TextEmbeddingszm
    LayoutLMv3 text embeddings. Same as `RobertaEmbeddings` but with added spatial (layout) embeddings.
    c                 ó~  •— t          ¦   «                              ¦   «          t          j        |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        ¬¦  «        | _        t          j        |j        |j        ¦  «        | _        t          j        |j        |j        ¦  «        | _        t          j        |j        |j        ¦  «        | _        t          j        |j        |j        ¦  «        | _        d S )N)Úpadding_idx©ÚepsÚposition_ids©r   r5   F©Ú
persistent)r    r!   r)   Ú	EmbeddingÚ
vocab_sizer,   Úpad_token_idÚword_embeddingsÚtype_vocab_sizeÚtoken_type_embeddingsÚ	LayerNormÚlayer_norm_epsÚDropoutÚhidden_dropout_probÚdropoutÚregister_bufferÚtorchÚarangeÚmax_position_embeddingsÚexpandrR   Úposition_embeddingsÚmax_2d_position_embeddingsÚcoordinate_sizeÚx_position_embeddingsÚy_position_embeddingsÚ
shape_sizeÚh_position_embeddingsÚw_position_embeddings©r.   r/   r1   s     €r2   r!   z!LayoutLMv3TextEmbeddings.__init__[   ss  ø€ Ý‰Œ×ÒÑÔÐÝ!œ|¨FÔ,=¸vÔ?QÐ_eÔ_rÐsÑsÔsˆÔÝ%'¤\°&Ô2HÈ&ÔJ\Ñ%]Ô%]ˆÔ"åœ fÔ&8¸fÔ>SÐTÑTÔTˆŒÝ”z &Ô"<Ñ=Ô=ˆŒð 	×ÒØ�EœL¨Ô)GÑHÔH×OÒOÐPWÑXÔXÐejð 	ñ 	
ô 	
ð 	
ð "Ô.ˆÔÝ#%¤<ØÔ*¨FÔ,>ÈDÔL\ð$
ñ $
ô $
ˆÔ õ &(¤\°&Ô2SÐU[ÔUkÑ%lÔ%lˆÔ"Ý%'¤\°&Ô2SÐU[ÔUkÑ%lÔ%lˆÔ"Ý%'¤\°&Ô2SÐU[ÔUfÑ%gÔ%gˆÔ"Ý%'¤\°&Ô2SÐU[ÔUfÑ%gÔ%gˆÔ"Ð"Ð"r3   c           	      ó®  — 	 |                       |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|                      t	          j        |d d …d d …df         |d d …d d …df         z
  dd¦  «        ¦  «        }|                      t	          j        |d d …d d …df         |d d …d d …df         z
  dd¦  «        ¦  «        }t	          j        ||||||gd¬¦  «        }	|	S )	Nr   r   r6   r   z;The `bbox` coordinate values should be within 0-1000 range.iÿ  r5   ©Údim)rl   rm   Ú
IndexErrorro   re   Úcliprp   Úcat)
r.   ÚbboxÚleft_position_embeddingsÚupper_position_embeddingsÚright_position_embeddingsÚlower_position_embeddingsÚero   rp   Úspatial_position_embeddingss
             r2   Ú%calculate_spatial_position_embeddingsz>LayoutLMv3TextEmbeddings.calculate_spatial_position_embeddingsr   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øøøð !%× :Ò :½5¼:ÀdÈ1È1È1ÈaÈaÈaÐQRÈ7ÄmÐVZÐ[\Ð[\Ð[\Ð^_Ð^_Ð^_ÐabÐ[bÔVcÑFcÐefÐhlÑ;mÔ;mÑ nÔ nÐØ $× :Ò :½5¼:ÀdÈ1È1È1ÈaÈaÈaÐQRÈ7ÄmÐVZÐ[\Ð[\Ð[\Ð^_Ð^_Ð^_ÐabÐ[bÔVcÑFcÐefÐhlÑ;mÔ;mÑ nÔ nÐõ ',¤ià(Ø)Ø)Ø)Ø%Ø%ðð ð
'
ñ 
'
ô 
'
Ð#ð +Ð*s   ‚BB Â
B*ÂB%Â%B*c                 óÖ   — |                      |¦  «                             ¦   «         }t          j        |d¬¦  «                             |¦  «        |z  }|                     ¦   «         |z   S )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`.
        r   rs   )ÚneÚintre   ÚcumsumÚtype_asÚlong)r.   Ú	input_idsrR   ÚmaskÚincremental_indicess        r2   Ú"create_position_ids_from_input_idsz;LayoutLMv3TextEmbeddings.create_position_ids_from_input_idsŒ   s`   € ð �|Š|˜KÑ(Ô(×,Ò,Ñ.Ô.ˆÝ$œ|¨D°aÐ8Ñ8Ô8×@Ò@ÀÑFÔFÈ$ÑNÐØ"×'Ò'Ñ)Ô)¨KÑ7Ð7r3   c                 ó  — |                      ¦   «         dd…         }|d         }t          j        | j        dz   || j        z   dz   t          j        |j        ¬¦  «        }|                     d¦  «                             |¦  «        S )z�
        We are provided embeddings directly. We cannot infer which are padded so just generate sequential position ids.
        Nr5   r   ©ÚdtypeÚdevicer   )r8   re   rf   rR   r…   r�   Ú	unsqueezerh   )r.   Úinputs_embedsÚinput_shapeÚsequence_lengthrU   s        r2   Ú&create_position_ids_from_inputs_embedsz?LayoutLMv3TextEmbeddings.create_position_ids_from_inputs_embeds–   s‡   € ð $×(Ò(Ñ*Ô*¨3¨B¨3Ô/ˆØ% aœ.ˆå”|ØÔ˜qÑ  /°DÔ4DÑ"DÀqÑ"HÕPUÔPZÐcpÔcwð
ñ 
ô 
ˆð ×%Ò% aÑ(Ô(×/Ò/°Ñ<Ô<Ð<r3   Nc                 ó~  — |€K|�4|                       || j        ¦  «                             |j        ¦  «        }n|                      |¦  «        }|�|                     ¦   «         }n|                     ¦   «         d d…         }|€+t          j        |t          j        | j	        j        ¬¦  «        }|€|  
                    |¦  «        }|                      |¦  «        }||z   }|                      |¦  «        }	||	z  }|                      |¦  «        }
||
z   }|                      |¦  «        }|                      |¦  «        }|S )Nr5   r‹   )r‰   rR   Útor�   r’   r8   re   Úzerosr…   rU   r\   r^   ri   r   r_   rc   )r.   r†   rx   Útoken_type_idsrU   r�   r�   r^   rC   ri   r~   s              r2   rF   z LayoutLMv3TextEmbeddings.forward¢   sJ  € ð ÐØÐ$à#×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ÐØÐ)Ñ)ˆ
à&*×&PÒ&PÐQUÑ&VÔ&VÐ#àÐ"=Ñ=ˆ
à—^’^ JÑ/Ô/ˆ
Ø—\’\ *Ñ-Ô-ˆ
ØÐr3   ©NNNNN)
rI   rJ   rK   rL   r!   r   r‰   r’   rF   rM   rN   s   @r2   rP   rP   V   s™   ø€ € € € € ðð ðhð hð hð hð hð.+ð +ð +ð48ð 8ð 8ð
=ð 
=ð 
=ð ØØØØð'ð 'ð 'ð 'ð 'ð 'ð 'ð 'r3   rP   c                   óF   ‡ — e Zd Zˆ fd„Zdd„Z	 	 	 ddee         fd„Zˆ xZS )	ÚLayoutLMv3SelfAttentionc                 ó”  •— 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        | _        |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Ú
ValueErrorr‚   Úattention_head_sizeÚall_head_sizer)   ÚLinearÚqueryÚkeyÚvaluera   Úattention_probs_dropout_probrc   Úhas_relative_attention_biasÚhas_spatial_attention_biasrq   s     €r2   r!   z LayoutLMv3SelfAttention.__init__Í   s1  ø€ Ý‰Œ×ÒÑÔÐØÔ Ô :Ñ:¸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ˆŒ
å”z &Ô"EÑFÔFˆŒØ+1Ô+MˆÔ(Ø*0Ô*KˆÔ'Ð'Ð'r3   é    c                 óª   — ||z  }|                      d¬¦  «                             d¦  «        }||z
  |z  } t          j        d¬¦  «        |¦  «        S )aÊ  
        https://huggingface.co/papers/2105.13290 Section 2.4 Stabilization of training: Precision Bottleneck Relaxation
        (PB-Relax). A replacement of the original nn.Softmax(dim=-1)(attention_scores). Seems the new attention_probs
        will result in a slower speed and a little bias. Can use torch.allclose(standard_attention_probs,
        cogview_attention_probs, atol=1e-08) for comparison. The smaller atol (e.g., 1e-08), the better.
        r5   rs   )ÚamaxrŽ   r)   ÚSoftmax)r.   Úattention_scoresÚalphaÚscaled_attention_scoresÚ	max_valueÚnew_attention_scoress         r2   Úcogview_attentionz)LayoutLMv3SelfAttention.cogview_attentioná   sa   € ð #3°UÑ":ÐØ+×0Ò0°bÐ0Ñ:Ô:×DÒDÀRÑHÔHˆ	Ø 7¸)Ñ CÀuÑLÐØ!�rŒz˜bÐ!Ñ!Ô!Ð"6Ñ7Ô7Ð7r3   NÚkwargsc                 óL  — |j         d         }|                      |¦  «                             |d| j        | j        ¦  «                             dd¦  «        }|                      |¦  «                             |d| j        | j        ¦  «                             dd¦  «        }|                      |¦  «                             |d| j        | j        ¦  «                             dd¦  «        }	t          j	        |t          j        | j        ¦  «        z  |                     dd¦  «        ¦  «        }
| j        r*| j        r#|
||z   t          j        | j        ¦  «        z  z  }
n&| j        r|
|t          j        | j        ¦  «        z  z  }
|�|
|z   }
|                      |
¦  «        }|                      |¦  «        }t          j	        ||	¦  «        }|                     dddd¦  «                             ¦   «         }|                     ¦   «         d d…         | j        fz   } |j        |Ž }||fS )Nr   r5   r   r6   éþÿÿÿr   )r<   r£   r:   r�   r    r@   r¤   r¥   re   ÚmatmulÚmathÚsqrtr§   r¨   r²   rc   r;   Ú
contiguousr8   r¡   )r.   Úhidden_statesÚattention_maskÚrel_posÚ
rel_2d_posr³   Ú
batch_sizeÚquery_layerÚ	key_layerÚvalue_layerr­   Úattention_probsÚcontext_layerÚnew_context_layer_shapes                 r2   rF   zLayoutLMv3SelfAttention.forwardí   s  € ð #Ô(¨Ô+ˆ
à�JŠJ�}Ñ%Ô%ßŠT�*˜b $Ô":¸DÔ<TÑUÔUßŠY�q˜!‰_Œ_ð 	ð �HŠH�]Ñ#Ô#ßŠT�*˜b $Ô":¸DÔ<TÑUÔUßŠY�q˜!‰_Œ_ð 	ð �JŠJ�}Ñ%Ô%ßŠT�*˜b $Ô":¸DÔ<TÑUÔUßŠY�q˜!‰_Œ_ð 	õ !œ<¨µd´iÀÔ@XÑ6YÔ6YÑ(YÐ[d×[nÒ[nÐoqÐsuÑ[vÔ[vÑwÔwÐàÔ+ð 	N°Ô0Oð 	NØ ¨:Ñ!5½¼À4ÔC[Ñ9\Ô9\Ñ \Ñ\ÐÐØÔ-ð 	NØ ­$¬)°DÔ4LÑ*MÔ*MÑ MÑMÐàÐ%à/°.Ñ@Ðð ×0Ò0Ð1AÑBÔBˆð Ÿ,š, Ñ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ˆà˜oÐ-Ð-r3   )r©   ©NNN)	rI   rJ   rK   r!   r²   r   r   rF   rM   rN   s   @r2   r™   r™   Ì   s…   ø€ € € € € ðLð Lð Lð Lð Lð(
8ð 
8ð 
8ð 
8ð ØØð5.ð 5.ð Ð+Ô,ð5.ð 5.ð 5.ð 5.ð 5.ð 5.ð 5.ð 5.r3   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 )ÚLayoutLMv3SelfOutputc                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t          j        |j	        ¦  «        | _
        d S ©NrS   )r    r!   r)   r¢   r,   Údenser_   r`   ra   rb   rc   rq   s     €r2   r!   zLayoutLMv3SelfOutput.__init__'  sf   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3EÑFÔFˆŒ
Ýœ fÔ&8¸fÔ>SÐTÑTÔTˆŒÝ”z &Ô"<Ñ=Ô=ˆŒˆˆr3   rº   Úinput_tensorÚreturnc                 óŠ   — |                       |¦  «        }|                      |¦  «        }|                      ||z   ¦  «        }|S rG   ©rÊ   rc   r_   ©r.   rº   rË   s      r2   rF   zLayoutLMv3SelfOutput.forward-  ó@   € ØŸ
š
 =Ñ1Ô1ˆØŸš ]Ñ3Ô3ˆØŸš }°|Ñ'CÑDÔDˆØÐr3   ©rI   rJ   rK   r!   re   ÚTensorrF   rM   rN   s   @r2   rÇ   rÇ   &  ói   ø€ € € € € ð>ð >ð >ð >ð >ð U¤\ð ÀÄð ÐRWÔR^ð ð ð ð ð ð ð ð r3   rÇ   c                   ó>   ‡ — e Zd Zˆ fd„Z	 	 	 ddee         fd„Zˆ xZS )ÚLayoutLMv3Attentionc                 ó˜   •— t          ¦   «                              ¦   «          t          |¦  «        | _        t	          |¦  «        | _        d S rG   )r    r!   r™   r.   rÇ   Úoutputrq   s     €r2   r!   zLayoutLMv3Attention.__init__6  s;   ø€ Ý‰Œ×ÒÑÔÐÝ+¨FÑ3Ô3ˆŒ	Ý*¨6Ñ2Ô2ˆŒˆˆr3   Nr³   c                 ó`   — |} | j         ||f||dœ|¤Ž\  }}|                      ||¦  «        }|S ©N©r¼   r½   )r.   r×   )	r.   rº   r»   r¼   r½   r³   ÚresidualÚattention_outputÚ_s	            r2   rF   zLayoutLMv3Attention.forward;  sa   € ð !ˆØ'˜dœiØØð
ð Ø!ð	
ð 
ð
 ð
ð 
ÑÐ˜!ð  Ÿ;š;Ð'7¸ÑBÔBÐØÐr3   rÅ   )rI   rJ   rK   r!   r   r   rF   rM   rN   s   @r2   rÕ   rÕ   5  sl   ø€ € € € € ð3ð 3ð 3ð 3ð 3ð ØØð ð  ð Ð+Ô,ð ð  ð  ð  ð  ð  ð  ð  r3   rÕ   c                   óF   ‡ — e Zd Zˆ fd„Z	 	 	 	 ddee         fd„Zd„ Zˆ xZS )ÚLayoutLMv3Layerc                 óæ   •— t          ¦   «                              ¦   «          |j        | _        d| _        t	          |¦  «        | _        t          |¦  «        | _        t          |¦  «        | _	        d S ©Nr   )
r    r!   Úchunk_size_feed_forwardÚseq_len_dimrÕ   Ú	attentionÚLayoutLMv3IntermediateÚintermediateÚLayoutLMv3Outputr×   rq   s     €r2   r!   zLayoutLMv3Layer.__init__Q  s^   ø€ Ý‰Œ×ÒÑÔÐØ'-Ô'EˆÔ$ØˆÔÝ,¨VÑ4Ô4ˆŒÝ2°6Ñ:Ô:ˆÔÝ& vÑ.Ô.ˆŒˆˆr3   NFr³   c                 óz   — |                       ||||¬¦  «        }t          | j        | j        | j        |¦  «        }|S rÙ   )rä   r   Úfeed_forward_chunkrâ   rã   )	r.   rº   r»   Úoutput_attentionsr¼   r½   r³   rÜ   Úlayer_outputs	            r2   rF   zLayoutLMv3Layer.forwardY  sU   € ð  Ÿ>š>ØØØØ!ð	 *ñ 
ô 
Ðõ 1ØÔ# TÔ%AÀ4ÔCSÐUeñ
ô 
ˆð Ðr3   c                 ó\   — |                       |¦  «        }|                      ||¦  «        }|S rG   )ræ   r×   )r.   rÜ   Úintermediate_outputrë   s       r2   ré   z"LayoutLMv3Layer.feed_forward_chunko  s2   € Ø"×/Ò/Ð0@ÑAÔAÐØ—{’{Ð#6Ð8HÑIÔIˆØÐr3   )NFNN)	rI   rJ   rK   r!   r   r   rF   ré   rM   rN   s   @r2   rß   rß   P  s~   ø€ € € € € ð/ð /ð /ð /ð /ð ØØØðð ð Ð+Ô,ðð ð ð ð,ð ð ð ð ð ð r3   rß   c                   óV   ‡ — e Zd Zˆ fd„Zdd„Zd„ Zd„ Z	 	 	 	 	 dd	ee         fd
„Z	ˆ xZ
S )ÚLayoutLMv3Encoderc                 óh  •‡— t          ¦   «                              ¦   «          ‰| _        t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        d| _        ‰j	        | _	        ‰j
        | _
        | j	        r>‰j        | _        ‰j        | _        t          j        | j        ‰j        d¬¦  «        | _        | j
        rf‰j        | _        ‰j        | _        t          j        | j        ‰j        d¬¦  «        | _        t          j        | j        ‰j        d¬¦  «        | _        d S d S )Nc                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS © )rß   )Ú.0rÝ   r/   s     €r2   ú
<listcomp>z.LayoutLMv3Encoder.__init__.<locals>.<listcomp>y  s!   ø€ Ð#eÐ#eÐ#eÀ¥O°FÑ$;Ô$;Ð#eÐ#eÐ#er3   F)Úbias)r    r!   r/   r)   Ú
ModuleListÚrangeÚnum_hidden_layersÚlayerÚgradient_checkpointingr§   r¨   Úrel_pos_binsÚmax_rel_posr¢   r�   Úrel_pos_biasÚmax_rel_2d_posÚrel_2d_pos_binsÚrel_pos_x_biasÚrel_pos_y_biasrq   s    `€r2   r!   zLayoutLMv3Encoder.__init__v  s&  øø€ Ý‰Œ×ÒÑÔÐØˆŒÝ”]Ð#eÐ#eÐ#eÐ#eÅUÈ6ÔKcÑEdÔEdÐ#eÑ#eÔ#eÑfÔfˆŒ
Ø&+ˆÔ#à+1Ô+MˆÔ(Ø*0Ô*KˆÔ'àÔ+ð 	eØ &Ô 3ˆDÔØ%Ô1ˆDÔÝ "¤	¨$Ô*;¸VÔ=WÐ^cÐ dÑ dÔ dˆDÔàÔ*ð 	jØ"(Ô"7ˆDÔØ#)Ô#9ˆDÔ Ý"$¤)¨DÔ,@À&ÔB\ÐchÐ"iÑ"iÔ"iˆDÔÝ"$¤)¨DÔ,@À&ÔB\ÐchÐ"iÑ"iÔ"iˆDÔÐÐð		jð 	jr3   Tr©   é€   c                 ó:  — d}|r8|dz  }||dk                          ¦   «         |z  z  }t          j        |¦  «        }n(t          j        | t          j        |¦  «        ¦  «        }|dz  }||k     }|t          j        |                     ¦   «         |z  ¦  «        t          j        ||z  ¦  «        z  ||z
  z                       t          j         ¦  «        z   }	t          j	        |	t          j
        |	|dz
  ¦  «        ¦  «        }	|t          j        |||	¦  «        z  }|S )Nr   r6   r   )r…   re   ÚabsÚmaxÚ
zeros_likeÚlogÚfloatr·   r”   ÚminÚ	full_likeÚwhere)
r.   Úrelative_positionÚbidirectionalÚnum_bucketsÚmax_distanceÚretÚnÚ	max_exactÚis_smallÚval_if_larges
             r2   Úrelative_position_bucketz*LayoutLMv3Encoder.relative_position_bucketŠ  s  € ØˆØð 	SØ˜AÑˆKØÐ%¨Ò)×/Ò/Ñ1Ô1°KÑ?Ñ?ˆCÝ”	Ð+Ñ,Ô,ˆAˆAå”	Ð,Ð,­eÔ.>Ð?PÑ.QÔ.QÑRÔRˆAð   1Ñ$ˆ	Ø�y’=ˆð !ÝŒI�a—g’g‘i”i )Ñ+Ñ,Ô,­t¬x¸ÀyÑ8PÑ/QÔ/QÑQÐU`ÐclÑUlÑmß
Š"�UŒZ‰.Œ.ñˆõ ”y ­u¬¸|È[Ð[\É_Ñ/]Ô/]Ñ^Ô^ˆà�uŒ{˜8 Q¨Ñ5Ô5Ñ5ˆØˆ
r3   c                 ó’  — |                      d¦  «        |                      d¦  «        z
  }|                      || j        | j        ¬¦  «        }t	          j        ¦   «         5  | j        j                             ¦   «         |          	                    dddd¦  «        }d d d ¦  «         n# 1 swxY w Y   | 
                    ¦   «         }|S )Nrµ   r5   ©r  r  r   r   r   r6   )rŽ   r  rû   rü   re   Úno_gradrý   ÚweightÚtr;   r¹   )r.   rU   Úrel_pos_matr¼   s       r2   Ú_cal_1d_pos_embz!LayoutLMv3Encoder._cal_1d_pos_emb¡  s  € Ø"×,Ò,¨RÑ0Ô0°<×3IÒ3IÈ"Ñ3MÔ3MÑMˆà×/Ò/ØØÔ)ØÔ)ð 0ñ 
ô 
ˆõ Œ]‰_Œ_ð 	Pð 	PØÔ'Ô.×0Ò0Ñ2Ô2°7Ô;×CÒCÀAÀqÈ!ÈQÑOÔOˆGð	Pð 	Pð 	Pñ 	Pô 	Pð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pøøøð 	Pð 	Pð 	Pð 	Pà×$Ò$Ñ&Ô&ˆØˆs   Á!;B(Â(B,Â/B,c                 ó  — |d d …d d …df         }|d d …d d …df         }|                      d¦  «        |                      d¦  «        z
  }|                      d¦  «        |                      d¦  «        z
  }|                      || j        | j        ¬¦  «        }|                      || j        | j        ¬¦  «        }t	          j        ¦   «         5  | j        j                             ¦   «         |          	                    dddd¦  «        }| j
        j                             ¦   «         |          	                    dddd¦  «        }d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         }|                     ¦   «         }||z   }|S )Nr   r   rµ   r5   r  r   r6   )rŽ   r  rÿ   rþ   re   r  r   r  r  r;   r  r¹   )	r.   rx   Úposition_coord_xÚposition_coord_yÚrel_pos_x_2d_matÚrel_pos_y_2d_matÚ	rel_pos_xÚ	rel_pos_yr½   s	            r2   Ú_cal_2d_pos_embz!LayoutLMv3Encoder._cal_2d_pos_emb²  sä  € Ø    1 1 1 a œ=ÐØ    1 1 1 a œ=ÐØ+×5Ò5°bÑ9Ô9Ð<L×<VÒ<VÐWYÑ<ZÔ<ZÑZÐØ+×5Ò5°bÑ9Ô9Ð<L×<VÒ<VÐWYÑ<ZÔ<ZÑZÐØ×1Ò1ØØÔ,ØÔ,ð 2ñ 
ô 
ˆ	ð
 ×1Ò1ØØÔ,ØÔ,ð 2ñ 
ô 
ˆ	õ Œ]‰_Œ_ð 	Vð 	VØÔ+Ô2×4Ò4Ñ6Ô6°yÔA×IÒIÈ!ÈQÐPQÐSTÑUÔUˆIØÔ+Ô2×4Ò4Ñ6Ô6°yÔA×IÒIÈ!ÈQÐPQÐSTÑUÔUˆIð	Vð 	Vð 	Vñ 	Vô 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vøøøð 	Vð 	Vð 	Vð 	Vð ×(Ò(Ñ*Ô*ˆ	Ø×(Ò(Ñ*Ô*ˆ	Ø Ñ*ˆ
ØÐs   ÃA5EÅEÅENr³   c                 óÈ   — | j         r|                      |¦  «        nd }| j        r|                      |¦  «        nd }	| j        D ]}
 |
||f||	dœ|¤Ž}Œt          |¬¦  «        S )NrÚ   ©Úlast_hidden_state)r§   r  r¨   r$  rù   r   )r.   rº   rx   r»   rU   rD   rE   r³   r¼   r½   Úlayer_modules              r2   rF   zLayoutLMv3Encoder.forwardÍ  sŸ   € ð 9=Ô8XÐb�$×&Ò& |Ñ4Ô4Ð4Ð^bˆØ37Ô3RÐ\�T×)Ò)¨$Ñ/Ô/Ð/ÐX\ˆ
à œJð 	ð 	ˆLØ(˜LØØðð  Ø%ð	ð ð
 ðð ˆMˆMõ °Ð?Ñ?Ô?Ð?r3   )Tr©   r  r—   )rI   rJ   rK   r!   r  r  r$  r   r   rF   rM   rN   s   @r2   rï   rï   u  s³   ø€ € € € € ðjð jð jð jð jð(ð ð ð ð.ð ð ð"ð ð ð< ØØØØð@ð @ð Ð+Ô,ð@ð @ð @ð @ð @ð @ð @ð @r3   rï   c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )rå   c                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          |j        t          ¦  «        rt          |j                 | _        d S |j        | _        d S rG   )r    r!   r)   r¢   r,   Úintermediate_sizerÊ   r"   Ú
hidden_actÚstrr   Úintermediate_act_fnrq   s     €r2   r!   zLayoutLMv3Intermediate.__init__è  sn   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3KÑLÔLˆŒ
Ý�fÔ'­Ñ-Ô-ð 	9Ý'-¨fÔ.?Ô'@ˆDÔ$Ð$Ð$à'-Ô'8ˆDÔ$Ð$Ð$r3   rº   rÌ   c                 óZ   — |                       |¦  «        }|                      |¦  «        }|S rG   )rÊ   r.  )r.   rº   s     r2   rF   zLayoutLMv3Intermediate.forwardð  s,   € ØŸ
š
 =Ñ1Ô1ˆØ×0Ò0°Ñ?Ô?ˆØÐr3   rÑ   rN   s   @r2   rå   rå   ç  s^   ø€ € € € € ð9ð 9ð 9ð 9ð 9ð U¤\ð °e´lð ð ð ð ð ð ð ð r3   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 )rç   c                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t          j	        |j
        ¦  «        | _        d S rÉ   )r    r!   r)   r¢   r+  r,   rÊ   r_   r`   ra   rb   rc   rq   s     €r2   r!   zLayoutLMv3Output.__init__ø  sf   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ7¸Ô9KÑLÔLˆŒ
Ýœ fÔ&8¸fÔ>SÐTÑTÔTˆŒÝ”z &Ô"<Ñ=Ô=ˆŒˆˆr3   rº   rË   rÌ   c                 óŠ   — |                       |¦  «        }|                      |¦  «        }|                      ||z   ¦  «        }|S rG   rÎ   rÏ   s      r2   rF   zLayoutLMv3Output.forwardþ  rÐ   r3   rÑ   rN   s   @r2   rç   rç   ÷  rÓ   r3   rç   c                   óf   ‡ — e Zd ZU eed<   dZdZeedœZ	 e
j        ¦   «         ˆ fd„¦   «         Zˆ xZS )ÚLayoutLMv3PreTrainedModelr/   Ú
layoutlmv3)ÚimageÚtext)rº   Ú
attentionsc                 óX  •— t          ¦   «                              |¦  «         t          |t          ¦  «        rŒ| j        j        r2t          j        |j        ¦  «         t          j        |j	        ¦  «         t          |d¦  «        r<t          j        |j        |                     |j        |j        f¬¦  «        ¦  «         dS dS t          |t          ¦  «        rQt          j        |j        t#          j        |j        j        d         ¦  «                             d¦  «        ¦  «         dS dS )zInitialize the weightsÚvisual_bbox©r0   r5   rV   N)r    Ú_init_weightsr"   ÚLayoutLMv3Modelr/   Úvisual_embedÚinitÚzeros_Ú	cls_tokenÚ	pos_embedrž   Úcopy_r:  Úcreate_visual_bboxr8   rP   rU   re   rf   r<   rh   )r.   Úmoduler1   s     €r2   r<  z'LayoutLMv3PreTrainedModel._init_weights  s  ø€ õ 	‰Œ×Ò˜fÑ%Ô%Ð%Ý�f�oÑ.Ô.ð 	iØŒ{Ô'ð .Ý”˜FÔ,Ñ-Ô-Ð-Ý”˜FÔ,Ñ-Ô-Ð-Ý�v˜}Ñ-Ô-ð qÝ”
˜6Ô-¨v×/HÒ/HÐU[ÔU`ÐbhÔbmÐTnÐ/HÑ/oÔ/oÑpÔpÐpÐpÐpðqð qå˜Õ 8Ñ9Ô9ð 	iÝŒJ�vÔ*­E¬L¸Ô9LÔ9RÐSUÔ9VÑ,WÔ,W×,^Ò,^Ð_fÑ,gÔ,gÑhÔhÐhÐhÐhð	ið 	ir3   )rI   rJ   rK   r   Ú__annotations__Úbase_model_prefixÚinput_modalitiesrß   r™   Ú_can_record_outputsre   r  r<  rM   rN   s   @r2   r4  r4    s|   ø€ € € € € € àÐÐÑØ$ÐØ(ÐØ,;ÐKbÐcÐcÐà€U„]�_„_ð
ið 
ið 
ið 
iñ „_ð
ið 
ið 
ið 
ið 
ir3   r4  c                   ó,  ‡ — e Zd Zˆ fd„Zd„ Zd„ Zdd„Zd„ Zd„ Ze	e
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e         deez  fd„¦   «         ¦   «         ¦   «         Zˆ xZS )r=  c                 óÚ  •— t          ¦   «                              |¦  «         || _        |j        rt	          |¦  «        | _        |j        �rvt          |¦  «        | _        t          |j
        |j        z  ¦  «        | _        t          j        t          j        dd|j        ¦  «        ¦  «        | _        t          j        t          j        d| j        | j        z  dz   |j        ¦  «        ¦  «        | _        t          j        d¬¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t          j        |j        ¦  «        | _        | j        j        s| j        j        r8|                      d|                      | j        | j        f¬¦  «        d¬¦  «         t          j        |j        d	¬¦  «        | _        t?          |¦  «        | _         |  !                    ¦   «          d S )
Nr   g        )ÚprS   r:  r;  FrW   g�íµ ÷Æ°>)"r    r!   r/   Ú
text_embedrP   rC   r>  r   Úpatch_embedr‚   r#   r'   r8   r)   Ú	Parameterre   r•   r,   rA  rB  ra   Úpos_dropr_   r`   rb   rc   r§   r¨   rd   rD  Únormrï   ÚencoderÚ	post_initrq   s     €r2   r!   zLayoutLMv3Model.__init__  s¦  ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒàÔð 	?Ý6°vÑ>Ô>ˆDŒOàÔñ 	Cõ  9¸Ñ@Ô@ˆDÔå˜FÔ-°Ô0AÑAÑBÔBˆDŒIÝœ\­%¬+°a¸¸FÔ<NÑ*OÔ*OÑPÔPˆDŒNÝœ\­%¬+°a¸¼ÀTÄYÑ9NÐQRÑ9RÐTZÔTfÑ*gÔ*gÑhÔhˆDŒNÝœJ¨Ð-Ñ-Ô-ˆDŒMåœ\¨&Ô*<À&ÔBWÐXÑXÔXˆDŒNÝœ: fÔ&@ÑAÔAˆDŒLàŒ{Ô6ð ¸$¼+Ô:`ð Ø×$Ò$Ø! 4×#:Ò#:ÀtÄyÐRVÔR[ÐF\Ð#:Ñ#]Ô#]Ðjoð %ñ ô ð õ œ VÔ%7¸TÐBÑBÔBˆDŒIå(¨Ñ0Ô0ˆŒà�ŠÑÔÐÐÐr3   c                 ó   — | j         j        S rG   ©rC   r\   ©r.   s    r2   Úget_input_embeddingsz$LayoutLMv3Model.get_input_embeddings;  s   € ØŒÔ.Ð.r3   c                 ó   — || j         _        d S rG   rU  ©r.   r¥   s     r2   Úset_input_embeddingsz$LayoutLMv3Model.set_input_embeddings>  s   € Ø*/ˆŒÔ'Ð'Ð'r3   ©é   r\  éè  c           	      ó   — t          j        t          j        d||d         dz   z  |¦  «        |d         d¬¦  «        }t          j        t          j        d||d         dz   z  |¦  «        |d         d¬¦  «        }t          j        |dd…                              |d         d¦  «        |dd…                              |d         d¦  «                             dd¦  «        |dd…                              |d         d¦  «        |dd…                              |d         d¦  «                             dd¦  «        gd¬¦  «                             dd¦  «        }t          j        dd|dz
  |dz
  gg¦  «        }t          j        ||gd¬¦  «        S )	zJ
        Create the bounding boxes for the visual (patch) tokens.
        r   r   Útrunc)Úrounding_modeNr5   rs   é   )	re   Údivrf   ÚstackÚrepeatr@   r:   Útensorrw   )r.   r0   Úmax_lenÚvisual_bbox_xÚvisual_bbox_yr:  Úcls_token_boxs          r2   rD  z"LayoutLMv3Model.create_visual_bboxA  s—  € õ œ	ÝŒL˜˜G z°!¤}°qÑ'8Ñ9¸7ÑCÔCÀZÐPQÄ]Ðbið
ñ 
ô 
ˆõ œ	ÝŒL˜˜G z°!¤}°qÑ'8Ñ9¸7ÑCÔCÀZÐPQÄ]Ðbið
ñ 
ô 
ˆõ ”kà˜c˜r˜cÔ"×)Ò)¨*°Q¬-¸Ñ;Ô;Ø˜c˜r˜cÔ"×)Ò)¨*°Q¬-¸Ñ;Ô;×EÒEÀaÈÑKÔKØ˜a˜b˜bÔ!×(Ò(¨°A¬¸Ñ:Ô:Ø˜a˜b˜bÔ!×(Ò(¨°A¬¸Ñ:Ô:×DÒDÀQÈÑJÔJð	ð ð
ñ 
ô 
÷ Š$ˆr�1‰+Œ+ð 	õ œ u¨e°W¸q±[À'ÈAÁ+Ð&NÐ%OÑPÔPˆÝŒy˜-¨Ð5¸1Ð=Ñ=Ô=Ð=r3   c                 óŽ   — | j                              |dd¦  «        }|                     |¦  «                             |¦  «        }|S rá   )r:  rd  r”   Útype)r.   r�   rŒ   r¾   r:  s        r2   Úcalculate_visual_bboxz%LayoutLMv3Model.calculate_visual_bboxX  sA   € ØÔ&×-Ò-¨j¸!¸QÑ?Ô?ˆØ!—n’n VÑ,Ô,×1Ò1°%Ñ8Ô8ˆØÐr3   c                 ó>  — |                       |¦  «        }|                     ¦   «         \  }}}| j                             |dd¦  «        }t	          j        ||fd¬¦  «        }| j        �
|| j        z   }|                      |¦  «        }|                      |¦  «        }|S )Nr5   r   rs   )	rN  r8   rA  rh   re   rw   rB  rP  rQ  )r.   rA   rC   r¾   Úseq_lenrÝ   Ú
cls_tokenss          r2   Úforward_imagezLayoutLMv3Model.forward_image]  s�   € Ø×%Ò% lÑ3Ô3ˆ
ð ",§¢Ñ!2Ô!2Ñˆ
�G˜QØ”^×*Ò*¨:°r¸2Ñ>Ô>ˆ
Ý”Y 
¨JÐ7¸QÐ?Ñ?Ô?ˆ
ð Œ>Ð%Ø# d¤nÑ4ˆJà—]’] :Ñ.Ô.ˆ
Ø—Y’Y˜zÑ*Ô*ˆ
àÐr3   Nr†   rx   r»   r–   rU   r�   rA   r³   rÌ   c           	      óŽ  — |�!|                      ¦   «         }	|	\  }
}|j        }nS|�)|                      ¦   «         dd…         }	|	\  }
}|j        }n(|�t          |¦  «        }
|j        }nt          d¦  «        ‚|€|�˜|€t	          j        |
|f|¬¦  «        }|€!t	          j        |	t          j        |¬¦  «        }|€?t	          j        t          t          |	¦  «        dgz   ¦  «        t          j        |¬¦  «        }|  
                    |||||¬¦  «        }dx}}dx}}|�� t          |j        d         | j        j        z  ¦  «        t          |j        d	         | j        j        z  ¦  «        }}|                      |¦  «        }t	          j        |
|j        d
         ft          j        |¬¦  «        }|�t	          j        ||gd
¬¦  «        }n|}| j        j        s| j        j        rð| j        j        r?|                      |t          j        |
¬¦  «        }|�t	          j        ||gd
¬¦  «        }n|}t	          j        d|j        d
         t          j        |¬¦  «                             |
d
¦  «        }|€|�^t	          j        d|	d
         |¬¦  «                             d¦  «        }|                     |	¦  «        }t	          j        ||gd
¬¦  «        }n|}|€|�t	          j        ||gd
¬¦  «        }n|}|                      |¦  «        }|                      |¦  «        }ng| j        j        s| j        j        rO| j        j        r|}| j        j        r5| j
        j        dd…d|	d
         …f         }|                     |¦  «        }|}t9          | j        ||¬¦  «        } | j        |f|||||dœ|¤Ž}|j        }t?          |¬¦  «        S )aœ  
        input_ids (`torch.LongTensor` of shape `(batch_size, token_sequence_length)`):
            Indices of input sequence tokens in the vocabulary.

            Note that `sequence_length = token_sequence_length + patch_sequence_length + 1` where `1` is for [CLS]
            token. See `pixel_values` for `patch_sequence_length`.

            Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
            [`PreTrainedTokenizer.__call__`] for details.

            [What are input IDs?](../glossary#input-ids)
        bbox (`torch.LongTensor` of shape `(batch_size, token_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.

            Note that `sequence_length = token_sequence_length + patch_sequence_length + 1` where `1` is for [CLS]
            token. See `pixel_values` for `patch_sequence_length`.
        token_type_ids (`torch.LongTensor` of shape `(batch_size, token_sequence_length)`, *optional*):
            Segment token indices to indicate first and second portions of the inputs. Indices are selected in `[0,
            1]`:

            - 0 corresponds to a *sentence A* token,
            - 1 corresponds to a *sentence B* token.

            Note that `sequence_length = token_sequence_length + patch_sequence_length + 1` where `1` is for [CLS]
            token. See `pixel_values` for `patch_sequence_length`.

            [What are token type IDs?](../glossary#token-type-ids)
        position_ids (`torch.LongTensor` of shape `(batch_size, token_sequence_length)`, *optional*):
            Indices of positions of each input sequence tokens in the position embeddings. Selected in the range `[0,
            config.max_position_embeddings - 1]`.

            Note that `sequence_length = token_sequence_length + patch_sequence_length + 1` where `1` is for [CLS]
            token. See `pixel_values` for `patch_sequence_length`.

            [What are position IDs?](../glossary#position-ids)
        inputs_embeds (`torch.FloatTensor` of shape `(batch_size, token_sequence_length, hidden_size)`, *optional*):
            Optionally, instead of passing `input_ids` you can choose to directly pass an embedded representation. This
            is useful if you want more control over how to convert *input_ids* indices into associated vectors than the
            model's internal embedding lookup matrix.

        Examples:

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

        >>> processor = AutoProcessor.from_pretrained("microsoft/layoutlmv3-base", apply_ocr=False)
        >>> model = AutoModel.from_pretrained("microsoft/layoutlmv3-base")

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

        >>> encoding = processor(image, words, boxes=boxes, return_tensors="pt")

        >>> outputs = model(**encoding)
        >>> last_hidden_states = outputs.last_hidden_state
        ```Nr5   zEYou have to specify either input_ids or inputs_embeds or pixel_values)r�   r‹   ra  )r†   rx   rU   r–   r�   r6   r   r   rs   )rŒ   r¾   r   )r/   r�   r»   )rx   rU   r»   rD   rE   r&  ) r8   r�   ÚlenrŸ   re   Úonesr•   r…   ÚtupleÚlistrC   r   r<   r/   r'   rp  rw   r§   r¨   rl  rf   rd  rŽ   rh   r_   rc   rU   Ú	expand_asr	   rR  r'  r   )r.   r†   rx   r»   r–   rU   r�   rA   r³   r�   r¾   Ú
seq_lengthr�   Úembedding_outputÚ
final_bboxÚfinal_position_idsrD   rE   Úvisual_embeddingsÚvisual_attention_maskr:  Úvisual_position_idsÚencoder_outputsÚsequence_outputs                           r2   rF   zLayoutLMv3Model.forwardn  s_  € ðZ Ð Ø#Ÿ.š.Ñ*Ô*ˆKØ%0Ñ"ˆJ˜
ØÔ%ˆFˆFØÐ&Ø'×,Ò,Ñ.Ô.¨s°¨sÔ3ˆKØ%0Ñ"ˆJ˜
Ø"Ô)ˆFˆFØÐ%Ý˜\Ñ*Ô*ˆJØ!Ô(ˆFˆFåÐdÑeÔeÐeàÐ  MÐ$=ØÐ%Ý!&¤¨j¸*Ð-EÈvÐ!VÑ!VÔ!V�ØÐ%Ý!&¤¨[ÅÄ
ÐSYÐ!ZÑ!ZÔ!Z�Øˆ|Ý”{¥5­¨kÑ):Ô):¸a¸SÑ)@Ñ#AÔ#AÍÌÐ\bÐcÑcÔc�à#ŸšØ#ØØ)Ø-Ø+ð  /ñ  ô  Ðð +/Ð.ˆ
Ð'Ø%)Ð)ˆ�{ØÑ#å˜,Ô,¨QÔ/°$´+Ô2HÑHÑIÔIÝ˜,Ô,¨QÔ/°$´+Ô2HÑHÑIÔIð &ˆLð !%× 2Ò 2°<Ñ @Ô @ÐÝ$)¤JØÐ.Ô4°QÔ7Ð8ÅÄ
ÐSYð%ñ %ô %Ð!ð Ð)Ý!&¤¨NÐ<QÐ+RÐXYÐ!ZÑ!ZÔ!Z��à!6�àŒ{Ô6ð =¸$¼+Ô:`ð =Ø”;Ô9ð 1Ø"&×"<Ò"<¸VÍ5Ì:ÐblÐ"<Ñ"mÔ"m�KØÐ'Ý%*¤Y°°kÐ/BÈÐ%JÑ%JÔ%J˜
˜
à%0˜
å&+¤lØÐ(Ô.¨qÔ1½¼ÈFð'ñ 'ô 'ç’&˜ QÑ'Ô'ð $ð Ð(¨MÐ,EÝ#(¤<°°;¸q´>È&Ð#QÑ#QÔ#Q×#[Ò#[Ð\]Ñ#^Ô#^�LØ#/×#6Ò#6°{Ñ#CÔ#C�LÝ).¬°LÐBUÐ3VÐ\]Ð)^Ñ)^Ô)^Ð&Ð&à)<Ð&àÐ$¨Ð(AÝ#(¤9Ð.>Ð@QÐ-RÐXYÐ#ZÑ#ZÔ#ZÐ Ð à#4Ð à#Ÿ~š~Ð.>Ñ?Ô?ÐØ#Ÿ|š|Ð,<Ñ=Ô=ÐÐØŒ[Ô4ð 	2¸¼Ô8^ð 	2ØŒ{Ô5ð "Ø!�
ØŒ{Ô6ð 2Ø#œÔ;¸A¸A¸AÐ?OÀÈQÄÐ?OÐ<OÔP�Ø+×5Ò5°iÑ@Ô@�Ø%1Ð"å2Ø”;Ø*Ø)ð
ñ 
ô 
ˆð '˜$œ,Øð
àØ+Ø)Ø%Ø#ð
ð 
ð ð
ð 
ˆð *Ô;ˆåØ-ð
ñ 
ô 
ð 	
r3   )r[  r]  )NNNNNNN)rI   rJ   rK   r!   rW  rZ  rD  rl  rp  r   r   r   re   Ú
LongTensorÚFloatTensorr   r   rt  r   rF   rM   rN   s   @r2   r=  r=    s†  ø€ € € € € ðð ð ð ð ð>/ð /ð /ð0ð 0ð 0ð>ð >ð >ð >ð.ð ð ð
ð ð ð"  ØØð .2Ø(,Ø37Ø26Ø04Ø26Ø15ðm
ð m
àÔ# dÑ*ðm
ð Ô Ñ%ðm
ð Ô)¨DÑ0ð	m
ð
 Ô(¨4Ñ/ðm
ð Ô&¨Ñ-ðm
ð Ô(¨4Ñ/ðm
ð Ô'¨$Ñ.ðm
ð Ð+Ô,ðm
ð 
�Ñ	 ðm
ð m
ð m
ñ „^ñ „_ñ  Ôðm
ð m
ð m
ð m
ð m
r3   r=  c                   ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚLayoutLMv3ClassificationHeadz\
    Head for sentence-level classification tasks. Reference: RobertaClassificationHead
    Fc                 ó–  •— t          ¦   «                              ¦   «          || _        |r(t          j        |j        dz  |j        ¦  «        | _        n$t          j        |j        |j        ¦  «        | _        |j        �|j        n|j        }t          j	        |¦  «        | _
        t          j        |j        |j        ¦  «        | _        d S )Nr   )r    r!   Úpool_featurer)   r¢   r,   rÊ   Úclassifier_dropoutrb   ra   rc   Ú
num_labelsÚout_proj)r.   r/   r…  r†  r1   s       €r2   r!   z%LayoutLMv3ClassificationHead.__init__&  s°   ø€ Ý‰Œ×ÒÑÔÐØ(ˆÔØð 	KÝœ 6Ô#5¸Ñ#9¸6Ô;MÑNÔNˆDŒJˆJåœ 6Ô#5°vÔ7IÑJÔJˆDŒJà)/Ô)BÐ)NˆFÔ%Ð%ÐTZÔTnð 	õ ”zÐ"4Ñ5Ô5ˆŒÝœ	 &Ô"4°fÔ6GÑHÔHˆŒˆˆr3   c                 óÖ   — |                       |¦  «        }|                      |¦  «        }t          j        |¦  «        }|                       |¦  «        }|                      |¦  «        }|S rG   )rc   rÊ   re   Útanhrˆ  )r.   Úxs     r2   rF   z$LayoutLMv3ClassificationHead.forward3  sR   € Ø�LŠL˜‰OŒOˆØ�JŠJ�q‰MŒMˆÝŒJ�q‰MŒMˆØ�LŠL˜‰OŒOˆØ�MŠM˜!ÑÔˆØˆr3   )FrH   rN   s   @r2   rƒ  rƒ  !  s\   ø€ € € € € ðð ðIð Ið Ið Ið Ið Iðð ð ð ð ð ð r3   rƒ  a„  
    LayoutLMv3 Model with a token classification head on top (a linear layer on top of the final hidden states) e.g.
    for sequence labeling (information extraction) tasks such as [FUNSD](https://guillaumejaume.github.io/FUNSD/),
    [SROIE](https://rrc.cvc.uab.es/?ch=13), [CORD](https://github.com/clovaai/cord) and
    [Kleister-NDA](https://github.com/applicaai/kleister-nda).
    )Úcustom_introc                   ó  ‡ — e Zd Zˆ fd„Zd„ Zd„ Ze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e         deez  fd„¦   «         ¦   «         Zˆ xZS )Ú LayoutLMv3ForTokenClassificationc                 óz  •— t          ¦   «                              |¦  «         |j        | _        t          |¦  «        | _        t          j        |j        ¦  «        | _        |j        dk     r%t          j	        |j
        |j        ¦  «        | _        nt          |d¬¦  «        | _        |                      ¦   «          d S )Né
   F©r…  )r    r!   r‡  r=  r5  r)   ra   rb   rc   r¢   r,   Ú
classifierrƒ  rS  rq   s     €r2   r!   z)LayoutLMv3ForTokenClassification.__init__E  sœ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø Ô+ˆŒå)¨&Ñ1Ô1ˆŒÝ”z &Ô"<Ñ=Ô=ˆŒØÔ˜rÒ!Ð!Ý œi¨Ô(:¸FÔ<MÑNÔNˆDŒOˆOå:¸6ÐPUÐVÑVÔVˆDŒOà�ŠÑÔÐÐÐr3   c                 ó4   — | j                              ¦   «         S rG   ©r5  rW  rV  s    r2   rW  z5LayoutLMv3ForTokenClassification.get_input_embeddingsR  ó   € ØŒ×3Ò3Ñ5Ô5Ð5r3   c                 ó:   — | j                              |¦  «         d S rG   ©r5  rZ  rY  s     r2   rZ  z5LayoutLMv3ForTokenClassification.set_input_embeddingsU  ó   € ØŒ×,Ò,¨UÑ3Ô3Ð3Ð3Ð3r3   Nr†   rx   r»   r–   rU   r�   ÚlabelsrA   r³   rÌ   c	           
      óì  —  | j         |f||||||dœ|	¤Ž}
|�|                     ¦   «         }n|                     ¦   «         dd…         }|d         }|
d         dd…d|…f         }|                      |¦  «        }|                      |¦  «        }d}|�Ft	          ¦   «         } ||                     d| j        ¦  «        |                     d¦  «        ¦  «        }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.
        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
        >>> from datasets import load_dataset

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

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

        >>> encoding = processor(image, words, boxes=boxes, word_labels=word_labels, return_tensors="pt")

        >>> outputs = model(**encoding)
        >>> loss = outputs.loss
        >>> logits = outputs.logits
        ```)rx   r»   r–   rU   r�   rA   Nr5   r   r   ©ÚlossÚlogitsrº   r8  )
r5  r8   rc   r’  r   r:   r‡  r   rº   r8  )r.   r†   rx   r»   r–   rU   r�   r™  rA   r³   Úoutputsr�   rw  r  r�  rœ  Úloss_fcts                    r2   rF   z(LayoutLMv3ForTokenClassification.forwardX  s#  € ðZ "�$”/Øð	
àØ)Ø)Ø%Ø'Ø%ð	
ð 	
ð ð	
ð 	
ˆð Ð Ø#Ÿ.š.Ñ*Ô*ˆKˆKà'×,Ò,Ñ.Ô.¨s°¨sÔ3ˆKà  ”^ˆ
à! !œ* Q Q Q¨¨¨ ^Ô4ˆØŸ,š, Ñ7Ô7ˆØ—’ Ñ1Ô1ˆàˆØÐÝ'Ñ)Ô)ˆHØ�8˜FŸKšK¨¨D¬OÑ<Ô<¸f¿kºkÈ"¹o¼oÑNÔNˆDå$ØØØ!Ô/ØÔ)ð	
ñ 
ô 
ð 	
r3   ©NNNNNNNN)rI   rJ   rK   r!   rW  rZ  r   r   re   r€  r�  r   r   rt  r   rF   rM   rN   s   @r2   rŽ  rŽ  <  sa  ø€ € € € € ðð ð ð ð ð6ð 6ð 6ð4ð 4ð 4ð Øð .2Ø(,Ø37Ø26Ø04Ø26Ø*.Ø04ðJ
ð J
àÔ# dÑ*ðJ
ð Ô Ñ%ðJ
ð Ô)¨DÑ0ð	J
ð
 Ô(¨4Ñ/ðJ
ð Ô&¨Ñ-ðJ
ð Ô(¨4Ñ/ðJ
ð Ô  4Ñ'ðJ
ð Ô&¨Ñ-ðJ
ð Ð+Ô,ðJ
ð 
Ð&Ñ	&ðJ
ð J
ð J
ñ „^ñ ÔðJ
ð J
ð J
ð J
ð J
r3   rŽ  c                   ó4  ‡ — e Zd Zˆ fd„Zd„ Zd„ Ze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j	        dz  dee         deez  fd„¦   «         ¦   «         Zˆ xZS )ÚLayoutLMv3ForQuestionAnsweringc                 óÞ   •— t          ¦   «                              |¦  «         |j        | _        t          |¦  «        | _        t          |d¬¦  «        | _        |                      ¦   «          d S ©NFr‘  )r    r!   r‡  r=  r5  rƒ  Ú
qa_outputsrS  rq   s     €r2   r!   z'LayoutLMv3ForQuestionAnswering.__init__©  s^   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø Ô+ˆŒå)¨&Ñ1Ô1ˆŒÝ6°vÈEÐRÑRÔRˆŒà�ŠÑÔÐÐÐr3   c                 ó4   — | j                              ¦   «         S rG   r”  rV  s    r2   rW  z3LayoutLMv3ForQuestionAnswering.get_input_embeddings²  r•  r3   c                 ó:   — | j                              |¦  «         d S rG   r—  rY  s     r2   rZ  z3LayoutLMv3ForQuestionAnswering.set_input_embeddingsµ  r˜  r3   Nr†   r»   r–   rU   r�   Ústart_positionsÚend_positionsrx   rA   r³   rÌ   c
           
      óH  —  | j         |f||||||	dœ|
¤Ž}|d         }|                      |¦  «        }|                     dd¬¦  «        \  }}|                     d¦  «                             ¦   «         }|                     d¦  «                             ¦   «         }d}|�ç|�åt          |                     ¦   «         ¦  «        dk    r|                     d¦  «        }t          |                     ¦   «         ¦  «        dk    r|                     d¦  «        }|                     d¦  «        }|                     d|¦  «        }|                     d|¦  «        }t          |¬¦  «        } |||¦  «        } |||¦  «        }||z   dz  }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.

        Examples:

        ```python
        >>> from transformers import AutoProcessor, AutoModelForQuestionAnswering
        >>> from datasets import load_dataset
        >>> import torch

        >>> processor = AutoProcessor.from_pretrained("microsoft/layoutlmv3-base", apply_ocr=False)
        >>> model = AutoModelForQuestionAnswering.from_pretrained("microsoft/layoutlmv3-base")

        >>> dataset = load_dataset("nielsr/funsd-layoutlmv3", split="train")
        >>> example = dataset[0]
        >>> image = example["image"]
        >>> question = "what's his name?"
        >>> words = example["tokens"]
        >>> boxes = example["bboxes"]

        >>> encoding = processor(image, question, words, boxes=boxes, return_tensors="pt")
        >>> start_positions = torch.tensor([1])
        >>> end_positions = torch.tensor([3])

        >>> outputs = model(**encoding, start_positions=start_positions, end_positions=end_positions)
        >>> loss = outputs.loss
        >>> start_scores = outputs.start_logits
        >>> end_scores = outputs.end_logits
        ```©r»   r–   rU   r�   rx   rA   r   r   r5   rs   N)Úignore_indexr6   )rœ  Ústart_logitsÚ
end_logitsrº   r8  )r5  r¥  ÚsplitÚsqueezer¹   rr  r8   Úclampr   r   rº   r8  )r.   r†   r»   r–   rU   r�   r¨  r©  rx   rA   r³   rž  r  r�  r­  r®  Ú
total_lossÚignored_indexrŸ  Ú
start_lossÚend_losss                        r2   rF   z&LayoutLMv3ForQuestionAnswering.forward¸  sÓ  € ð` $3 4¤?Øð	$
à)Ø)Ø%Ø'ØØ%ð	$
ð 	$
ð ð	$
ð 	$
ˆð " !œ*ˆà—’ Ñ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å+ØØ%Ø!Ø!Ô/ØÔ)ð
ñ 
ô 
ð 	
r3   )	NNNNNNNNN)rI   rJ   rK   r!   rW  rZ  r   r   re   r€  r�  r   r   rt  r   rF   rM   rN   s   @r2   r¢  r¢  §  sw  ø€ € € € € ðð ð ð ð ð6ð 6ð 6ð4ð 4ð 4ð Øð .2Ø37Ø26Ø04Ø26Ø37Ø15Ø(,Ø04ðW
ð W
àÔ# dÑ*ðW
ð Ô)¨DÑ0ðW
ð Ô(¨4Ñ/ð	W
ð
 Ô&¨Ñ-ðW
ð Ô(¨4Ñ/ðW
ð Ô)¨DÑ0ðW
ð Ô'¨$Ñ.ðW
ð Ô Ñ%ðW
ð Ô&¨Ñ-ðW
ð Ð+Ô,ðW
ð 
Ð-Ñ	-ðW
ð W
ð W
ñ „^ñ ÔðW
ð W
ð W
ð W
ð W
r3   r¢  a
  
    LayoutLMv3 Model with a sequence classification head on top (a linear layer on top of the final hidden state of the
    [CLS] token) e.g. for document image classification tasks such as the
    [RVL-CDIP](https://www.cs.cmu.edu/~aharley/rvl-cdip/) dataset.
    c                   ó  ‡ — e Zd Zˆ fd„Zd„ Zd„ Ze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e         deez  fd„¦   «         ¦   «         Zˆ xZS )Ú#LayoutLMv3ForSequenceClassificationc                 óì   •— t          ¦   «                              |¦  «         |j        | _        || _        t	          |¦  «        | _        t          |d¬¦  «        | _        |                      ¦   «          d S r¤  )	r    r!   r‡  r/   r=  r5  rƒ  r’  rS  rq   s     €r2   r!   z,LayoutLMv3ForSequenceClassification.__init__  se   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø Ô+ˆŒØˆŒÝ)¨&Ñ1Ô1ˆŒÝ6°vÈEÐRÑRÔRˆŒà�ŠÑÔÐÐÐr3   c                 ó4   — | j                              ¦   «         S rG   r”  rV  s    r2   rW  z8LayoutLMv3ForSequenceClassification.get_input_embeddings%  r•  r3   c                 ó:   — | j                              |¦  «         d S rG   r—  rY  s     r2   rZ  z8LayoutLMv3ForSequenceClassification.set_input_embeddings(  r˜  r3   Nr†   r»   r–   rU   r�   r™  rx   rA   r³   rÌ   c	           
      óx  —  | j         |f||||||dœ|	¤Ž}
|
d         dd…ddd…f         }|                      |¦  «        }d}|��Z| 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          ¦   «         } |||¦  «        }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.

        Examples:

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

        >>> processor = AutoProcessor.from_pretrained("microsoft/layoutlmv3-base", apply_ocr=False)
        >>> model = AutoModelForSequenceClassification.from_pretrained("microsoft/layoutlmv3-base")

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

        >>> encoding = processor(image, words, boxes=boxes, return_tensors="pt")
        >>> sequence_label = torch.tensor([1])

        >>> outputs = model(**encoding, labels=sequence_label)
        >>> loss = outputs.loss
        >>> logits = outputs.logits
        ```r«  r   Nr   Ú
regressionÚsingle_label_classificationÚmulti_label_classificationr5   r›  )r5  r’  r/   Úproblem_typer‡  rŒ   re   r…   r‚   r   r°  r   r:   r   r   rº   r8  )r.   r†   r»   r–   rU   r�   r™  rx   rA   r³   rž  r  r�  rœ  rŸ  s                  r2   rF   z+LayoutLMv3ForSequenceClassification.forward+  sá  € ðX $3 4¤?Øð	$
à)Ø)Ø%Ø'ØØ%ð	$
ð 	$
ð ð	$
ð 	$
ˆð " !œ* Q Q Q¨¨1¨1¨1 WÔ-ˆØ—’ Ñ1Ô1ˆàˆØÑØŒ{Ô'Ð/Ø”? 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 ¨Ñ/Ô/�å'ØØØ!Ô/ØÔ)ð	
ñ 
ô 
ð 	
r3   r   )rI   rJ   rK   r!   rW  rZ  r   r   re   r€  r�  r   r   rt  r   rF   rM   rN   s   @r2   r·  r·    sa  ø€ € € € € ðð ð ð ð ð6ð 6ð 6ð4ð 4ð 4ð Øð .2Ø37Ø26Ø04Ø26Ø*.Ø(,Ø04ðT
ð T
àÔ# dÑ*ðT
ð Ô)¨DÑ0ðT
ð Ô(¨4Ñ/ð	T
ð
 Ô&¨Ñ-ðT
ð Ô(¨4Ñ/ðT
ð Ô  4Ñ'ðT
ð Ô Ñ%ðT
ð Ô&¨Ñ-ðT
ð Ð+Ô,ðT
ð 
Ð)Ñ	)ðT
ð T
ð T
ñ „^ñ ÔðT
ð T
ð T
ð T
ð T
r3   r·  )r¢  r·  rŽ  r=  r4  )@rL   r$   r·   re   Útorch.nnr)   Útorch.nn.functionalÚ
functionalr=   r   r   r   Ú r   r?  Úactivationsr   Úmasking_utilsr	   Úmodeling_layersr
   Úmodeling_outputsr   r   r   r   Úmodeling_utilsr   Úprocessing_utilsr   Úpytorch_utilsr   Úutilsr   r   r   r   Úutils.genericr   r   Úutils.output_capturingr   Úconfiguration_layoutlmv3r   Ú
get_loggerrI   ÚloggerÚModuler   rP   r™   rÇ   rÕ   rß   rï   rå   rç   r4  r=  rƒ  rŽ  r¢  r·  Ú__all__rò   r3   r2   ú<module>rÓ     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ðð ð ð ð ð ð ð ð ð ð ð ð LÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6ð 
ˆÔ	˜HÑ	%Ô	%€ð ð  ð  ð  ð   ¤	ñ  ô  ð  ðFsð sð sð sð s˜rœyñ sô sð sðlV.ð V.ð V.ð V.ð V.˜bœiñ V.ô V.ð V.ðtð ð ð ð ˜2œ9ñ ô ð ð ð  ð  ð  ð  ˜"œ)ñ  ô  ð  ð6"ð "ð "ð "ð "Ð0ñ "ô "ð "ðJn@ð n@ð n@ð n@ð n@˜œ	ñ n@ô n@ð n@ðdð ð ð ð ˜RœYñ ô ð ð ð ð ð ð �r”yñ ô ð ð ðið ið ið ið i ñ iô iñ „ðið( ðC
ð C
ð C
ð C
ð C
Ð/ñ C
ô C
ñ „ðC
ðLð ð ð ð  2¤9ñ ô ð ð6 €ððñ ô ð`
ð `
ð `
ð `
ð `
Ð'@ñ `
ô `
ñô ð`
ðF ði
ð i
ð i
ð i
ð i
Ð%>ñ i
ô i
ñ „ði
ðX €ððñ ô ðf
ð f
ð f
ð f
ð f
Ð*Cñ f
ô f
ñô ðf
ðRð ð €€€r3   