Ë
    T^(h¼, ã                  ó˜  — d Z ddlmZ ddlZddlZddlmZmZmZm	Z	 ddl
ZddlmZ ddlmZmZmZmZ ddlmZmZmZmZmZmZmZmZ dd	lmZ dd
lmZm Z m!Z! ddl"m#Z# dZ$g d¢g d¢gZ%g d¢g d¢g d¢gg d¢g d¢g d¢ggZ&dZ' G d„ dejP                  jR                  «      Z* G d„ dejP                  jR                  «      Z+ G d„ dejP                  jR                  «      Z, G d„ dejP                  jR                  «      Z- G d„ d ejP                  jR                  «      Z. G d!„ d"ejP                  jR                  «      Z/ G d#„ d$ejP                  jR                  «      Z0 G d%„ d&ejP                  jR                  «      Z1 G d'„ d(ejP                  jR                  «      Z2e G d)„ d*ejP                  jR                  «      «       Z3 G d+„ d,e«      Z4d-Z5d.Z6 ed/e5«       G d0„ d1e4«      «       Z7 G d2„ d3ejP                  jR                  «      Z8 ed4e5«       G d5„ d6e4e«      «       Z9 ed7e5«       G d8„ d9e4e«      «       Z: ed:e5«       G d;„ d<e4e«      «       Z;g d=¢Z<y)>zTF 2.0 LayoutLMv3 model.é    )ÚannotationsN)ÚListÚOptionalÚTupleÚUnioné   )Úget_tf_activation)ÚTFBaseModelOutputÚTFQuestionAnsweringModelOutputÚTFSequenceClassifierOutputÚTFTokenClassifierOutput)ÚTFPreTrainedModelÚTFQuestionAnsweringLossÚTFSequenceClassificationLossÚTFTokenClassificationLossÚget_initializerÚkerasÚkeras_serializableÚunpack_inputs)Úcheck_embeddings_within_bounds)Úadd_start_docstringsÚ%add_start_docstrings_to_model_forwardÚreplace_return_docstringsé   )ÚLayoutLMv3Configr   )é   é   r   )r   é   r   )r   r   r   é   )é   r   r   é   )é	   é
   é   é   )é   é   é   é   )é   é   é   é   )é   é   é   é   g    „×—Ác                  ó4   ‡ — e Zd ZdZdˆ fd„Zdd„Zdd„Zˆ xZS )ÚTFLayoutLMv3PatchEmbeddingsz$LayoutLMv3 image (patch) embeddings.c                óÊ  •— t        ‰| �  d	i |¤Ž t        |j                  t        j
                  j                  «      r|j                  n|j                  |j                  f}t        j                  j                  |j                  ||dddt        |j                  «      d¬«      | _        |j                  | _
        |j                  dz  |d   |d   z  z  | _        || _        y )
NÚvalidÚchannels_lastTÚproj)ÚfiltersÚkernel_sizeÚstridesÚpaddingÚdata_formatÚuse_biasÚkernel_initializerÚnamer   r   r   © )ÚsuperÚ__init__Ú
isinstanceÚ
patch_sizeÚcollectionsÚabcÚIterabler   ÚlayersÚConv2DÚhidden_sizer   Úinitializer_ranger7   Ú
input_sizeÚnum_patchesÚconfig)ÚselfrN   ÚkwargsÚpatch_sizesÚ	__class__s       €ús/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/models/layoutlmv3/modeling_tf_layoutlmv3.pyrB   z$TFLayoutLMv3PatchEmbeddings.__init__B   sÖ   ø€ Ü‰ÑÑ"˜6Ò"ô ˜&×+Ñ+¬[¯_©_×-EÑ-EÔFð ×Òà×#Ñ# V×%6Ñ%6Ð7ð 	ô
 —L‘L×'Ñ'Ø×&Ñ&Ø#ØØØ'ØÜ.¨v×/GÑ/GÓHØð (ó 	
ˆŒ	ð "×-Ñ-ˆÔØ"×-Ñ-¨qÑ0°kÀ!±nÀ{ÐSTÁ~Ñ6UÑVˆÔØˆ�ó    c                ó´   — t        j                  |g d¢¬«      }| j                  |«      }t        j                  |d| j                  | j
                  f«      }|S )N)r   r   r   r   ©Úperméÿÿÿÿ)ÚtfÚ	transposer7   ÚreshaperM   rJ   )rO   Úpixel_valuesÚ
embeddingss      rS   Úcallz TFLayoutLMv3PatchEmbeddings.callW   sK   € ô —|‘| L²|ÔDˆà—Y‘Y˜|Ó,ˆ
Ü—Z‘Z 
¨R°×1AÑ1AÀ4×CSÑCSÐ,TÓUˆ
ØÐrT   c                ó*  — | j                   ry d| _         t        | dd «      �ft        j                  | j                  j
                  «      5  | j                  j                  d d d | j                  j                  g«       d d d «       y y # 1 sw Y   y xY w)NTr7   )	ÚbuiltÚgetattrrY   Ú
name_scoper7   r?   ÚbuildrN   Únum_channels©rO   Úinput_shapes     rS   rc   z!TFLayoutLMv3PatchEmbeddings.build`   s}   € Ø�:Š:ØØˆŒ
Ü�4˜ Ó&Ð2Ü—‘˜tŸy™yŸ~™~Ó.ñ NØ—	‘	—‘  t¨T°4·;±;×3KÑ3KÐ LÔM÷Nð Nð 3÷Nð Nús   Á4B	Â	B©rN   r   ©r\   ú	tf.TensorÚreturnri   ©N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__rB   r^   rc   Ú__classcell__©rR   s   @rS   r3   r3   ?   s   ø„ Ù.õó*÷NrT   r3   c                  ó|   ‡ — e Zd ZdZd	ˆ fd„Zd
d„Zdd„Zdd„Zdd„Z	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	dd„Z
ˆ xZS )ÚTFLayoutLMv3TextEmbeddingszm
    LayoutLMv3 text embeddings. Same as `RobertaEmbeddings` but with added spatial (layout) embeddings.
    c                ó„  •— t        ‰| �  di |¤Ž t        j                  j	                  |j
                  |j                  t        |j                  «      d¬«      | _	        t        j                  j	                  |j                  |j                  t        |j                  «      d¬«      | _        t        j                  j                  |j                  d¬«      | _        t        j                  j                  |j                   «      | _        |j$                  | _        t        j                  j	                  |j(                  |j                  t        |j                  «      d¬«      | _        t        j                  j	                  |j,                  |j.                  t        |j                  «      d¬«      | _        t        j                  j	                  |j,                  |j.                  t        |j                  «      d¬«      | _        t        j                  j	                  |j,                  |j4                  t        |j                  «      d	¬«      | _        t        j                  j	                  |j,                  |j4                  t        |j                  «      d
¬«      | _        |j,                  | _        || _        y )NÚword_embeddings)Úembeddings_initializerr?   Útoken_type_embeddingsÚ	LayerNorm©Úepsilonr?   Úposition_embeddingsÚx_position_embeddingsÚy_position_embeddingsÚh_position_embeddingsÚw_position_embeddingsr@   )rA   rB   r   rH   Ú	EmbeddingÚ
vocab_sizerJ   r   rK   rv   Útype_vocab_sizerx   ÚLayerNormalizationÚlayer_norm_epsry   ÚDropoutÚhidden_dropout_probÚdropoutÚpad_token_idÚpadding_token_indexÚmax_position_embeddingsr|   Úmax_2d_position_embeddingsÚcoordinate_sizer}   r~   Ú
shape_sizer   r€   Úmax_2d_positionsrN   ©rO   rN   rP   rR   s      €rS   rB   z#TFLayoutLMv3TextEmbeddings.__init__n   s;  ø€ Ü‰ÑÑ"˜6Ò"Ü$Ÿ|™|×5Ñ5Ø×ÑØ×ÑÜ#2°6×3KÑ3KÓ#LØ"ð	  6ó  
ˆÔô &+§\¡\×%;Ñ%;Ø×"Ñ"Ø×ÑÜ#2°6×3KÑ3KÓ#LØ(ð	 &<ó &
ˆÔ"ô Ÿ™×8Ñ8À×AVÑAVÐ]hÐ8ÓiˆŒÜ—|‘|×+Ñ+¨F×,FÑ,FÓGˆŒØ#)×#6Ñ#6ˆÔ Ü#(§<¡<×#9Ñ#9Ø×*Ñ*Ø×ÑÜ#2°6×3KÑ3KÓ#LØ&ð	 $:ó $
ˆÔ ô &+§\¡\×%;Ñ%;Ø×-Ñ-Ø×"Ñ"Ü#2°6×3KÑ3KÓ#LØ(ð	 &<ó &
ˆÔ"ô &+§\¡\×%;Ñ%;Ø×-Ñ-Ø×"Ñ"Ü#2°6×3KÑ3KÓ#LØ(ð	 &<ó &
ˆÔ"ô &+§\¡\×%;Ñ%;Ø×-Ñ-Ø×ÑÜ#2°6×3KÑ3KÓ#LØ(ð	 &<ó &
ˆÔ"ô &+§\¡\×%;Ñ%;Ø×-Ñ-Ø×ÑÜ#2°6×3KÑ3KÓ#LØ(ð	 &<ó &
ˆÔ"ð !'× AÑ AˆÔØˆ�rT   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   }	 | j                  |«      }| j                  |«      }| j                  |«      }	| j                  |«      }
| j                  dz
  }| j	                  t        j                  |d d …d d …df   |d d …d d …df   z
  d|«      «      }| j                  t        j                  |d d …d d …df   |d d …d d …df   z
  d|«      «      }t        j                  |||	|
||gd¬	«      }|S # t         $ r}t        d«      |‚d }~ww xY w# t         $ r}t        d| j                  › d�«      |‚d }~ww xY w)
Nr   r   r   r   z9Bounding box is not of shape (batch_size, seq_length, 4).z0The `bbox` coordinate values should be within 0-z range.rX   ©Úaxis)	Ú
IndexErrorr}   r~   r�   r   rY   Úclip_by_valuer€   Úconcat)rO   ÚbboxÚleft_position_idsÚupper_position_idsÚright_position_idsÚlower_position_idsÚ	exceptionÚleft_position_embeddingsÚupper_position_embeddingsÚright_position_embeddingsÚlower_position_embeddingsÚmax_position_idr   r€   Úspatial_position_embeddingss                  rS   Ú%calculate_spatial_position_embeddingsz@TFLayoutLMv3TextEmbeddings.calculate_spatial_position_embeddings    s¯  € ð	iØ $¢Qª¨1 W¡ÐØ!%¢aª¨A g¡ÐØ!%¢aª¨A g¡ÐØ!%¢aª¨A g¡Ðð	Ø'+×'AÑ'AÐBSÓ'TÐ$Ø(,×(BÑ(BÐCUÓ(VÐ%Ø(,×(BÑ(BÐCUÓ(VÐ%Ø(,×(BÑ(BÐCUÓ(VÐ%ð ×/Ñ/°!Ñ3ˆØ $× :Ñ :Ü×Ñ˜T¢!¢Q¨ '™]¨T²!²Q¸°'©]Ñ:¸A¸ÓOó!
Ðð !%× :Ñ :Ü×Ñ˜T¢!¢Q¨ '™]¨T²!²Q¸°'©]Ñ:¸A¸ÓOó!
Ðô
 ')§i¡ià(Ø)Ø)Ø)Ø%Ø%ðð ô
'
Ð#ð +Ð*øôC ò 	iÜÐXÓYÐ_hÐhûð	iûô ò 	ÜØBÀ4×CXÑCXÐBYÐY`Ðaóàðûð	ús/   ‚0D ³AD< Ä	D9Ä(D4Ä4D9Ä<	E$ÅEÅE$c                ó2  — t        j                  |«      }|d   }| j                  dz   }| j                  |z   dz   }t        j                  ||t         j                  ¬«      }|d   }t        j
                  |d|f«      }t        j                  ||df«      }|S )zŠ
        We are provided embeddings directly. We cannot infer which are padded, so just generate sequential position
        ids.
        r   ©Údtyper   )rY   ÚshaperŠ   ÚrangeÚint32r[   Útile)rO   Úinputs_embdsrf   Úsequence_lengthÚstart_indexÚ	end_indexÚposition_idsÚ
batch_sizes           rS   Ú&create_position_ids_from_inputs_embedszATFLayoutLMv3TextEmbeddings.create_position_ids_from_inputs_embedsÉ   sŽ   € ô
 —h‘h˜|Ó,ˆØ% a™.ˆØ×.Ñ.°Ñ2ˆØ×,Ñ,¨Ñ>ÀÑBˆ	Ü—x‘x ¨Y¼b¿h¹hÔGˆØ  ‘^ˆ
Ü—z‘z ,°°OÐ0DÓEˆÜ—w‘w˜|¨j¸!¨_Ó=ˆØÐrT   c                óÔ   — t        j                  t        j                  || j                  «      |j                  «      }t        j
                  |d¬«      |z  }|| j                  z   }|S )z}
        Replace non-padding symbols with their position numbers. Position numbers begin at padding_token_index + 1.
        r   r’   )rY   ÚcastÚ	not_equalrŠ   r¦   Úcumsum)rO   Ú	input_idsÚmaskr¯   s       rS   Ú"create_position_ids_from_input_idsz=TFLayoutLMv3TextEmbeddings.create_position_ids_from_input_idsØ   sT   € ô �w‰w”r—|‘| I¨t×/GÑ/GÓHÈ)Ï/É/ÓZˆÜ—y‘y ¨AÔ.°Ñ5ˆØ# d×&>Ñ&>Ñ>ˆØÐrT   c                óJ   — |€| j                  |«      S | j                  |«      S rk   )r±   r¸   )rO   r¶   Úinputs_embedss      rS   Úcreate_position_idsz.TFLayoutLMv3TextEmbeddings.create_position_idsá   s*   € ØÐØ×>Ñ>¸}ÓMÐMà×:Ñ:¸9ÓEÐErT   c                ó  — |€| j                  ||«      }|�t        j                  |«      }nt        j                  |«      d d }|€!t        j                  ||j                  ¬«      }|€1t        || j                  j                  «       | j                  |«      }| j                  |«      }||z   }	| j                  |«      }
|	|
z  }	| j                  |«      }|	|z  }	| j                  |	«      }	| j                  |	|¬«      }	|	S )NrX   r¥   ©Útraining)r»   rY   r§   Úzerosr¦   r   rv   Ú	input_dimrx   r|   r£   ry   rˆ   )rO   r¶   r—   Útoken_type_idsr¯   rº   r¾   rf   rx   r]   r|   r¢   s               rS   r^   zTFLayoutLMv3TextEmbeddings.callç   s  € ð ÐØ×3Ñ3°I¸}ÓMˆLàÐ ÜŸ(™( 9Ó-‰KäŸ(™( =Ó1°#°2Ð6ˆKàÐ!ÜŸX™X k¸×9KÑ9KÔLˆNàÐ Ü*¨9°d×6JÑ6J×6TÑ6TÔUØ ×0Ñ0°Ó;ˆMØ $× :Ñ :¸>Ó JÐà"Ð%:Ñ:ˆ
Ø"×6Ñ6°|ÓDÐØÐ)Ñ)ˆ
à&*×&PÑ&PÐQUÓ&VÐ#àÐ1Ñ1ˆ
à—^‘^ JÓ/ˆ
Ø—\‘\ *°x�\Ó@ˆ
ØÐrT   c                óÈ  — | j                   ry d| _         t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �dt        j                  | j                  j
                  «      5  | j                  j                  d d | j                  j                  g«       d d d «       t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | d	d «      �Nt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       y y # 1 sw Y   �Œ™xY w# 1 sw Y   �ŒLxY w# 1 sw Y   �ŒèxY w# 1 sw Y   �Œ›xY w# 1 sw Y   �ŒNxY w# 1 sw Y   �ŒxY w# 1 sw Y   Œ³xY w# 1 sw Y   y xY w)
NTrv   rx   ry   r|   r}   r~   r   r€   )r`   ra   rY   rb   rv   r?   rc   rx   ry   rN   rJ   r|   r}   r~   r   r€   re   s     rS   rc   z TFLayoutLMv3TextEmbeddings.build  s¶  € Ø�:Š:ØØˆŒ
Ü�4Ð*¨DÓ1Ð=Ü—‘˜t×3Ñ3×8Ñ8Ó9ñ 1Ø×$Ñ$×*Ñ*¨4Ô0÷1ä�4Ð0°$Ó7ÐCÜ—‘˜t×9Ñ9×>Ñ>Ó?ñ 7Ø×*Ñ*×0Ñ0°Ô6÷7ä�4˜ dÓ+Ð7Ü—‘˜tŸ~™~×2Ñ2Ó3ñ LØ—‘×$Ñ$ d¨D°$·+±+×2IÑ2IÐ%JÔK÷Lä�4Ð.°Ó5ÐAÜ—‘˜t×7Ñ7×<Ñ<Ó=ñ 5Ø×(Ñ(×.Ñ.¨tÔ4÷5ä�4Ð0°$Ó7ÐCÜ—‘˜t×9Ñ9×>Ñ>Ó?ñ 7Ø×*Ñ*×0Ñ0°Ô6÷7ä�4Ð0°$Ó7ÐCÜ—‘˜t×9Ñ9×>Ñ>Ó?ñ 7Ø×*Ñ*×0Ñ0°Ô6÷7ä�4Ð0°$Ó7ÐCÜ—‘˜t×9Ñ9×>Ñ>Ó?ñ 7Ø×*Ñ*×0Ñ0°Ô6÷7ä�4Ð0°$Ó7ÐCÜ—‘˜t×9Ñ9×>Ñ>Ó?ñ 7Ø×*Ñ*×0Ñ0°Ô6÷7ð 7ð D÷)1ñ 1ú÷7ñ 7ú÷Lñ Lú÷5ñ 5ú÷7ñ 7ú÷7ñ 7ú÷7ð 7ú÷7ð 7ús`   ÁK>Â%LÃ?3LÅ0L%Ç
L2È$L?É>MËMË>LÌLÌL"Ì%L/Ì2L<Ì?M	ÍMÍM!rg   )r—   ri   rj   ri   )r«   ri   rj   ri   )r¶   ri   rj   ri   )r¶   ri   rº   ri   rj   ri   )NNNNNF)r¶   útf.Tensor | Noner—   zOptional[tf.Tensor]rÁ   rÃ   r¯   rÃ   rº   rÃ   r¾   Úboolrj   ri   rk   )rm   rn   ro   rp   rB   r£   r±   r¸   r»   r^   rc   rq   rr   s   @rS   rt   rt   i   s‡   ø„ ñõ0ód'+óRóóFð '+Ø$(Ø+/Ø)-Ø*.Øð#à#ð#ð "ð#ð )ð	#ð
 'ð#ð (ð#ð ð#ð 
ó#÷J7rT   rt   c                  óh   ‡ — e Zd Zdˆ fd„Zdd„Zdd	d„Z	 	 	 d
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zˆ xZS )ÚTFLayoutLMv3SelfAttentionc                óâ  •— t        ‰| �  d	i |¤Ž |j                  |j                  z  dk7  r&t	        d|j                  › d|j                  › d�«      ‚|j                  | _        t        |j                  |j                  z  «      | _        | j                  | j                  z  | _        t        j                  | j                  «      | _
        t        j                  j                  | j                  t        |j                  «      d¬«      | _        t        j                  j                  | j                  t        |j                  «      d¬«      | _        t        j                  j                  | j                  t        |j                  «      d¬«      | _        t        j                  j'                  |j(                  «      | _        |j,                  | _        |j.                  | _        || _        y )
Nr   zThe hidden size (z6) is not a multiple of the number of attention heads (ú)Úquery©r>   r?   ÚkeyÚvaluer@   )rA   rB   rJ   Únum_attention_headsÚ
ValueErrorÚintÚattention_head_sizeÚall_head_sizeÚmathÚsqrtÚattention_score_normaliserr   rH   ÚDenser   rK   rÉ   rË   rÌ   r†   Úattention_probs_dropout_probrˆ   Úhas_relative_attention_biasÚhas_spatial_attention_biasrN   r�   s      €rS   rB   z"TFLayoutLMv3SelfAttention.__init__+  s¡  ø€ Ü‰ÑÑ"˜6Ò"Ø×Ñ × :Ñ :Ñ:¸aÒ?ÜØ# F×$6Ñ$6Ð#7ð 8Ø ×4Ñ4Ð5°Qð8óð ð
 $*×#=Ñ#=ˆÔ Ü#& v×'9Ñ'9¸F×<VÑ<VÑ'VÓ#WˆÔ Ø!×5Ñ5¸×8PÑ8PÑPˆÔÜ*.¯)©)°D×4LÑ4LÓ*MˆÔ'ä—\‘\×'Ñ'Ø×ÑÜ.¨v×/GÑ/GÓHØð (ó 
ˆŒ
ô
 —<‘<×%Ñ%Ø×ÑÜ.¨v×/GÑ/GÓHØð &ó 
ˆŒô
 —\‘\×'Ñ'Ø×ÑÜ.¨v×/GÑ/GÓHØð (ó 
ˆŒ
ô —|‘|×+Ñ+¨F×,OÑ,OÓPˆŒØ+1×+MÑ+MˆÔ(Ø*0×*KÑ*KˆÔ'Øˆ�rT   c                óÊ   — t        j                  |«      }|d   |d   | j                  | j                  f}t        j                  ||«      }t        j
                  |g d¢¬«      S )Nr   r   ©r   r   r   r   rV   )rY   r§   rÍ   rÐ   r[   rZ   )rO   Úxr§   Ú	new_shapes       rS   Útranspose_for_scoresz.TFLayoutLMv3SelfAttention.transpose_for_scoresM  sY   € Ü—‘˜“ˆà�!‰HØ�!‰HØ×$Ñ$Ø×$Ñ$ð	
ˆ	ô �J‰J�q˜)Ó$ˆÜ�|‰|˜A¢LÔ1Ð1rT   c                ó¶   — ||z  }t        j                  t        j                  |d¬«      d¬«      }||z
  |z  }t         j                  j	                  |d¬«      S )aß  
        https://arxiv.org/abs/2105.13290 Section 2.4 Stabilization of training: Precision Bottleneck Relaxation
        (PB-Relax). A replacement of the original keras.layers.Softmax(axis=-1)(attention_scores). Seems the new
        attention_probs will result in a slower speed and a little bias. Can use
        tf.debugging.assert_near(standard_attention_probs, cogview_attention_probs, atol=1e-08) for comparison. The
        smaller atol (e.g., 1e-08), the better.
        rX   r’   )rY   Úexpand_dimsÚ
reduce_maxrÒ   Úsoftmax)rO   Úattention_scoresÚalphaÚscaled_attention_scoresÚ	max_valueÚnew_attention_scoress         rS   Úcogview_attentionz+TFLayoutLMv3SelfAttention.cogview_attentionX  sT   € ð #3°UÑ":ÐÜ—N‘N¤2§=¡=Ð1HÈrÔ#RÐY[Ô\ˆ	Ø 7¸)Ñ CÀuÑLÐÜ�w‰w�‰Ð3¸"ˆÓ=Ð=rT   c                ó.  — | j                  | j                  |«      «      }| j                  | j                  |«      «      }	| j                  | j                  |«      «      }
|
| j                  z  }t        j                  |g d¢¬«      }t        j                  ||«      }| j                  r"| j                  r|||z   | j                  z  z  }n| j                  r||| j                  z  z  }|�||z  }| j                  |«      }| j                  ||¬«      }|�||z  }t        j                  ||	«      }t        j                  |g d¢¬«      }t        j                  |«      }t        j                  ||d   |d   | j                  f«      }|r||f}|S |f}|S )N)r   r   r   r   rV   r½   rÚ   r   r   )rÝ   rË   rÌ   rÉ   rÔ   rY   rZ   Úmatmulr×   rØ   rç   rˆ   r§   r[   rÑ   )rO   Úhidden_statesÚattention_maskÚ	head_maskÚoutput_attentionsÚrel_posÚ
rel_2d_posr¾   Ú	key_layerÚvalue_layerÚquery_layerÚnormalised_query_layerÚtransposed_key_layerrâ   Úattention_probsÚcontext_layerr§   Úoutputss                     rS   r^   zTFLayoutLMv3SelfAttention.calle  sž  € ð ×-Ñ-¨d¯h©h°}Ó.EÓFˆ	Ø×/Ñ/°·
±
¸=Ó0IÓJˆØ×/Ñ/°·
±
¸=Ó0IÓJˆð "-¨t×/NÑ/NÑ!NÐÜ!Ÿ|™|ØšLô 
Ðô Ÿ9™9Ð%;Ð=QÓRÐà×+Ò+°×0OÒ0OØ ¨:Ñ!5¸×9XÑ9XÑ XÑXÑØ×-Ò-Ø ¨$×*IÑ*IÑ IÑIÐàÐ%à Ñ.Ðð ×0Ñ0Ð1AÓBˆàŸ,™, À˜,ÓJˆð Ð Ø-°	Ñ9ˆOäŸ	™	 /°;Ó?ˆÜŸ™Ø¢ô
ˆô —‘˜Ó'ˆÜŸ
™
Ø˜E !™H e¨A¡h°×0BÑ0BÐCó
ˆñ 7H�= /Ð2ˆàˆð O\ÐM]ˆàˆrT   c                ó  — | j                   ry d| _         t        | dd «      �dt        j                  | j                  j
                  «      5  | j                  j                  d d | j                  j                  g«       d d d «       t        | dd «      �dt        j                  | j                  j
                  «      5  | j                  j                  d d | j                  j                  g«       d d d «       t        | dd «      �et        j                  | j                  j
                  «      5  | j                  j                  d d | j                  j                  g«       d d d «       y y # 1 sw Y   ŒíxY w# 1 sw Y   ŒˆxY w# 1 sw Y   y xY w)NTrÉ   rË   rÌ   )r`   ra   rY   rb   rÉ   r?   rc   rN   rJ   rË   rÌ   re   s     rS   rc   zTFLayoutLMv3SelfAttention.buildš  s9  € Ø�:Š:ØØˆŒ
Ü�4˜ $Ó'Ð3Ü—‘˜tŸz™zŸ™Ó/ñ HØ—
‘
× Ñ  $¨¨d¯k©k×.EÑ.EÐ!FÔG÷Hä�4˜ Ó%Ð1Ü—‘˜tŸx™xŸ}™}Ó-ñ FØ—‘—‘  d¨D¯K©K×,CÑ,CÐDÔE÷Fä�4˜ $Ó'Ð3Ü—‘˜tŸz™zŸ™Ó/ñ HØ—
‘
× Ñ  $¨¨d¯k©k×.EÑ.EÐ!FÔG÷Hð Hð 4÷Hð Hú÷Fð Fú÷Hð Hús$   Á3E*Â<3E6Ä-3FÅ*E3Å6E?ÆFrg   )rÛ   ri   )é    )râ   ri   rã   zUnion[float, int]©NNF©rê   ri   rë   rÃ   rì   rÃ   rí   rÄ   rî   rÃ   rï   rÃ   r¾   rÄ   rj   z4Union[Tuple[tf.Tensor], Tuple[tf.Tensor, tf.Tensor]]rk   )	rm   rn   ro   rB   rÝ   rç   r^   rc   rq   rr   s   @rS   rÆ   rÆ   *  sx   ø„ õ óD	2ô>ð& %)Ø'+Øð3à ð3ð )ð3ð $ð	3ð
  ð3ð "ð3ð %ð3ð ð3ð 
>ó3÷jHrT   rÆ   c                  ó2   ‡ — e Zd Zdˆ fd„Zddd„Zdd„Zˆ xZS )ÚTFLayoutLMv3SelfOutputc                óx  •— t        ‰| �  di |¤Ž t        j                  j	                  |j
                  t        |j                  «      d¬«      | _        t        j                  j                  |j                  d¬«      | _        t        j                  j                  |j                  ¬«      | _        || _        y ©NÚdense©Úunitsr>   r?   ry   rz   )Úrater@   ©rA   rB   r   rH   rÕ   rJ   r   rK   r   r„   r…   ry   r†   r‡   rˆ   rN   r�   s      €rS   rB   zTFLayoutLMv3SelfOutput.__init__«  ó‘   ø€ Ü‰ÑÑ"˜6Ò"ä—\‘\×'Ñ'Ø×$Ñ$¼È×IaÑIaÓ9bÐipð (ó 
ˆŒ
ô Ÿ™×8Ñ8À×AVÑAVÐ]hÐ8ÓiˆŒÜ—|‘|×+Ñ+°×1KÑ1KÐ+ÓLˆŒØˆ�rT   c                óz   — | j                  |¬«      }| j                  ||¬«      }| j                  ||z   ¬«      }|S ©N©Úinputs)r	  r¾   ©r   rˆ   ry   ©rO   rê   Úinput_tensorr¾   s       rS   r^   zTFLayoutLMv3SelfOutput.callµ  ó?   € ØŸ
™
¨-˜
Ó8ˆØŸ™¨MÀH˜ÓMˆØŸ™¨m¸lÑ.J˜ÓKˆàÐrT   c                ó"  — | j                   ry d| _         t        | dd «      �dt        j                  | j                  j
                  «      5  | j                  j                  d d | j                  j                  g«       d d d «       t        | dd «      �et        j                  | j                  j
                  «      5  | j                  j                  d d | j                  j                  g«       d d d «       y y # 1 sw Y   Œ|xY w# 1 sw Y   y xY w©NTr   ry   )
r`   ra   rY   rb   r   r?   rc   rN   rJ   ry   re   s     rS   rc   zTFLayoutLMv3SelfOutput.build¼  sÞ   € Ø�:Š:ØØˆŒ
Ü�4˜ $Ó'Ð3Ü—‘˜tŸz™zŸ™Ó/ñ HØ—
‘
× Ñ  $¨¨d¯k©k×.EÑ.EÐ!FÔG÷Hä�4˜ dÓ+Ð7Ü—‘˜tŸ~™~×2Ñ2Ó3ñ LØ—‘×$Ñ$ d¨D°$·+±+×2IÑ2IÐ%JÔK÷Lð Lð 8÷Hð Hú÷Lð Lúó   Á3C9Â<3DÃ9DÄDrg   ©F©rê   ri   r  ri   r¾   rÄ   rj   ri   rk   ©rm   rn   ro   rB   r^   rc   rq   rr   s   @rS   rý   rý   ª  ó   ø„ õô÷	LrT   rý   c                  óV   ‡ — e Zd Zdˆ fd„Z	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zˆ xZS )ÚTFLayoutLMv3Attentionc                ól   •— t        ‰| �  di |¤Ž t        |d¬«      | _        t	        |d¬«      | _        y )NrO   ©r?   Úoutputr@   )rA   rB   rÆ   Úself_attentionrý   Úself_outputr�   s      €rS   rB   zTFLayoutLMv3Attention.__init__É  s1   ø€ Ü‰ÑÑ"˜6Ò"Ü7¸ÀVÔLˆÔÜ1°&¸xÔHˆÕrT   c           	     óv   — | j                  |||||||¬«      }| j                  |d   ||¬«      }	|	f|dd  z   }
|
S )Nr½   r   r   )r  r  )rO   rê   rë   rì   rí   rî   rï   r¾   Úself_outputsÚattention_outputr÷   s              rS   r^   zTFLayoutLMv3Attention.callÎ  sf   € ð ×*Ñ*ØØØØØØØð +ó 
ˆð  ×+Ñ+¨L¸©O¸]ÐU]Ð+Ó^ÐØ#Ð%¨°Q°RÐ(8Ñ8ˆØˆrT   c                óÆ  — | j                   ry d| _         t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �Nt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       y y # 1 sw Y   ŒexY w# 1 sw Y   y xY w)NTr  r  )r`   ra   rY   rb   r  r?   rc   r  re   s     rS   rc   zTFLayoutLMv3Attention.buildå  s¾   € Ø�:Š:ØØˆŒ
Ü�4Ð)¨4Ó0Ð<Ü—‘˜t×2Ñ2×7Ñ7Ó8ñ 0Ø×#Ñ#×)Ñ)¨$Ô/÷0ä�4˜¨Ó-Ð9Ü—‘˜t×/Ñ/×4Ñ4Ó5ñ -Ø× Ñ ×&Ñ& tÔ,÷-ð -ð :÷0ð 0ú÷-ð -úó   ÁCÂ%CÃCÃC rg   rú   rû   rk   r  rr   s   @rS   r  r  È  sl   ø„ õIð %)Ø'+Øðà ðð )ðð $ð	ð
  ðð "ðð %ðð ðð 
>ó÷.	-rT   r  c                  ó0   ‡ — e Zd Zdˆ fd„Zdd„Zdd„Zˆ xZS )ÚTFLayoutLMv3Intermediatec                óT  •— t        ‰| �  di |¤Ž t        j                  j	                  |j
                  t        |j                  «      d¬«      | _        t        |j                  t        «      r"t        |j                  «      | _        || _        y |j                  | _        || _        y )Nr   r  r@   )rA   rB   r   rH   rÕ   Úintermediate_sizer   rK   r   rC   Ú
hidden_actÚstrr	   Úintermediate_act_fnrN   r�   s      €rS   rB   z!TFLayoutLMv3Intermediate.__init__ó  sŒ   ø€ Ü‰ÑÑ"˜6Ò"ä—\‘\×'Ñ'Ø×*Ñ*¼Èv×OgÑOgÓ?hÐovð (ó 
ˆŒ
ô �f×'Ñ'¬Ô-Ü'8¸×9JÑ9JÓ'KˆDÔ$ð ˆ�ð (.×'8Ñ'8ˆDÔ$Øˆ�rT   c                óL   — | j                  |¬«      }| j                  |«      }|S )Nr  )r   r'  )rO   rê   s     rS   r^   zTFLayoutLMv3Intermediate.call   s(   € ØŸ
™
¨-˜
Ó8ˆØ×0Ñ0°Ó?ˆàÐrT   c                ó(  — | j                   ry d| _         t        | dd «      �et        j                  | j                  j
                  «      5  | j                  j                  d d | j                  j                  g«       d d d «       y y # 1 sw Y   y xY w)NTr   )	r`   ra   rY   rb   r   r?   rc   rN   rJ   re   s     rS   rc   zTFLayoutLMv3Intermediate.build  s}   € Ø�:Š:ØØˆŒ
Ü�4˜ $Ó'Ð3Ü—‘˜tŸz™zŸ™Ó/ñ HØ—
‘
× Ñ  $¨¨d¯k©k×.EÑ.EÐ!FÔG÷Hð Hð 4÷Hð Hús   Á3BÂBrg   )rê   ri   rj   ri   rk   r  rr   s   @rS   r"  r"  ò  s   ø„ õó÷HrT   r"  c                  ó2   ‡ — e Zd Zdˆ fd„Zddd„Zdd„Zˆ xZS )ÚTFLayoutLMv3Outputc                óx  •— t        ‰| �  di |¤Ž t        j                  j	                  |j
                  t        |j                  «      d¬«      | _        t        j                  j                  |j                  d¬«      | _        t        j                  j                  |j                  ¬«      | _        || _        y rÿ   r  r�   s      €rS   rB   zTFLayoutLMv3Output.__init__  r  rT   c                óz   — | j                  |¬«      }| j                  ||¬«      }| j                  ||z   ¬«      }|S r  r
  r  s       rS   r^   zTFLayoutLMv3Output.call  r  rT   c                ó"  — | j                   ry d| _         t        | dd «      �dt        j                  | j                  j
                  «      5  | j                  j                  d d | j                  j                  g«       d d d «       t        | dd «      �et        j                  | j                  j
                  «      5  | j                  j                  d d | j                  j                  g«       d d d «       y y # 1 sw Y   Œ|xY w# 1 sw Y   y xY wr  )r`   ra   rY   rb   r   r?   rc   rN   r$  ry   rJ   re   s     rS   rc   zTFLayoutLMv3Output.build"  sÞ   € Ø�:Š:ØØˆŒ
Ü�4˜ $Ó'Ð3Ü—‘˜tŸz™zŸ™Ó/ñ NØ—
‘
× Ñ  $¨¨d¯k©k×.KÑ.KÐ!LÔM÷Nä�4˜ dÓ+Ð7Ü—‘˜tŸ~™~×2Ñ2Ó3ñ LØ—‘×$Ñ$ d¨D°$·+±+×2IÑ2IÐ%JÔK÷Lð Lð 8÷Nð Nú÷Lð Lúr  rg   r  r  rk   r  rr   s   @rS   r+  r+    r  rT   r+  c                  óV   ‡ — e Zd Zdˆ fd„Z	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zˆ xZS )ÚTFLayoutLMv3Layerc                ó�   •— t        ‰| �  di |¤Ž t        |d¬«      | _        t	        |d¬«      | _        t        |d¬«      | _        y )NÚ	attentionr  Úintermediater  r@   )rA   rB   r  r2  r"  r3  r+  Úbert_outputr�   s      €rS   rB   zTFLayoutLMv3Layer.__init__/  s?   ø€ Ü‰ÑÑ"˜6Ò"Ü.¨v¸KÔHˆŒÜ4°VÀ.ÔQˆÔÜ-¨f¸8ÔDˆÕrT   c           	     ó    — | j                  |||||||¬«      }|d   }	|dd  }
| j                  |	«      }| j                  ||	|¬«      }|f|
z   }
|
S )N)rí   rî   rï   r¾   r   r   r½   )r2  r3  r4  )rO   rê   rë   rì   rí   rî   rï   r¾   Úself_attention_outputsr  r÷   Úintermediate_outputÚlayer_outputs                rS   r^   zTFLayoutLMv3Layer.call5  sƒ   € ð "&§¡ØØØØ/ØØ!Øð "0ó "
Ðð 2°!Ñ4ÐØ(¨¨Ð,ˆØ"×/Ñ/Ð0@ÓAÐØ×'Ñ'Ð(;Ð=MÐX`Ð'ÓaˆØ�/ GÑ+ˆØˆrT   c                ó’  — | j                   ry d| _         t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �Nt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       y y # 1 sw Y   Œ¿xY w# 1 sw Y   ŒqxY w# 1 sw Y   y xY w)NTr2  r3  r4  )	r`   ra   rY   rb   r2  r?   rc   r3  r4  re   s     rS   rc   zTFLayoutLMv3Layer.buildO  s	  € Ø�:Š:ØØˆŒ
Ü�4˜ dÓ+Ð7Ü—‘˜tŸ~™~×2Ñ2Ó3ñ +Ø—‘×$Ñ$ TÔ*÷+ä�4˜¨Ó.Ð:Ü—‘˜t×0Ñ0×5Ñ5Ó6ñ .Ø×!Ñ!×'Ñ'¨Ô-÷.ä�4˜¨Ó-Ð9Ü—‘˜t×/Ñ/×4Ñ4Ó5ñ -Ø× Ñ ×&Ñ& tÔ,÷-ð -ð :÷+ð +ú÷.ð .ú÷-ð -ús$   ÁD%Â%D1Ã?D=Ä%D.Ä1D:Ä=Erg   rú   rû   rk   r  rr   s   @rS   r0  r0  .  sl   ø„ õEð %)Ø'+Øðà ðð )ðð $ð	ð
  ðð "ðð %ðð ðð 
>ó÷4-rT   r0  c                  ó˜   ‡ — e Zd Zdˆ fd„Zd	d„Z	 	 	 	 	 	 	 	 d
d„Zdd„Zdd„Z	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Z	ˆ xZ
S )ÚTFLayoutLMv3Encoderc                óD  •— t        ‰| �  di |¤Ž || _        t        |j                  «      D �cg c]  }t        |d|› �¬«      ‘Œ c}| _        |j                  | _        |j                  | _        | j                  rg|j                  | _	        |j                  | _
        t        j                  j                  |j                  t        |j                   «      dd¬«      | _        | j                  r­|j$                  | _        |j&                  | _        t        j                  j                  |j                  t        |j                   «      dd¬«      | _        t        j                  j                  |j                  t        |j                   «      dd¬«      | _        y y c c}w )	Nzlayer.r  FÚrel_pos_bias)r  r>   r=   r?   Úrel_pos_x_biasÚrel_pos_y_biasr@   )rA   rB   rN   r¨   Únum_hidden_layersr0  Úlayerr×   rØ   Úrel_pos_binsÚmax_rel_posr   rH   rÕ   rÍ   r   rK   r=  Úmax_rel_2d_posÚrel_2d_pos_binsr>  r?  )rO   rN   rP   ÚirR   s       €rS   rB   zTFLayoutLMv3Encoder.__init___  sf  ø€ Ü‰ÑÑ"˜6Ò"ØˆŒÜLQÐRX×RjÑRjÓLkÖlÀqÔ'¨°v¸a¸S°\ÖBÒlˆŒ
à+1×+MÑ+MˆÔ(Ø*0×*KÑ*KˆÔ'à×+Ò+Ø &× 3Ñ 3ˆDÔØ%×1Ñ1ˆDÔÜ %§¡× 2Ñ 2Ø×0Ñ0Ü#2°6×3KÑ3KÓ#LØØ#ð	 !3ó !ˆDÔð ×*Ò*Ø"(×"7Ñ"7ˆDÔØ#)×#9Ñ#9ˆDÔ Ü"'§,¡,×"4Ñ"4Ø×0Ñ0Ü#2°6×3KÑ3KÓ#LØØ%ð	 #5ó #ˆDÔô #(§,¡,×"4Ñ"4Ø×0Ñ0Ü#2°6×3KÑ3KÓ#LØØ%ð	 #5ó #ˆDÕð +ùò ms   ¯Fc                ó  — |dz  }t        j                  |«      }|dz  }||k  }t         j                  j                  t        j                  |t         j
                  «      |z  «      }t        j                  ||z  «      }||z  ||z
  z  }	||	z   }
t        j                  |
|j                  «      }
t        j                  |
|dz
  «      }
t        j                  |dkD  |j                  «      |z  t        j                  |||
«      z   S )Nr   r   r   )	rY   ÚabsrÒ   Úlogr³   Úfloat32r¦   ÚminimumÚwhere)rO   Úrelative_positionsÚnum_bucketsÚmax_distanceÚbucketsÚmax_exact_bucketsÚis_smallÚbuckets_log_ratioÚdistance_log_ratioÚbuckets_big_offsetÚbuckets_bigs              rS   Úrelative_position_bucketz,TFLayoutLMv3Encoder.relative_position_bucket�  sÿ   € ð " QÑ&ˆÜ—&‘&Ð+Ó,ˆð (¨1Ñ,ÐØÐ.Ñ.ˆô ŸG™GŸK™K¬¯©°¼¿¹Ó(DÐGXÑ(XÓYÐÜ!ŸX™X lÐ5FÑ&FÓGÐàÐ 2Ñ2°kÐDUÑ6UÑVð 	ð (Ð*<Ñ<ˆÜ—g‘g˜k¨7¯=©=Ó9ˆÜ—j‘j ¨k¸A©oÓ>ˆä—‘Ð*¨QÑ.°·±Ó>ÀÑLÔPR×PXÑPXØ�g˜{óQ
ñ 
ð 	
rT   c                óP  — t        j                  |d¬«      t        j                  |d¬«      z
  }| j                  |||«      }t        j                  ||| j                  ¬«      } ||«      }t        j
                  |g d¢«      }t        j                  || j                  ¬«      }|S )Néþÿÿÿr’   rX   )Údepthr¦   )r   r   r   r   r¥   )rY   rß   rW  Úone_hotÚcompute_dtyperZ   r³   )	rO   Údense_layerr¯   rN  rO  Úrel_pos_matrixrî   Úrel_pos_one_hotÚ	embeddings	            rS   Ú_cal_pos_embz TFLayoutLMv3Encoder._cal_pos_embš  sˆ   € ô Ÿ™¨¸2Ô>ÄÇÁÐP\ÐceÔAfÑfˆØ×/Ñ/°ÀÈ\ÓZˆÜŸ*™* W°KÀt×GYÑGYÔZˆÙ Ó0ˆ	ä—L‘L ªLÓ9ˆ	Ü—G‘G˜I¨T×-?Ñ-?Ô@ˆ	ØÐrT   c                óf   — | j                  | j                  || j                  | j                  «      S rk   )ra  r=  rB  rC  )rO   r¯   s     rS   Ú_cal_1d_pos_embz#TFLayoutLMv3Encoder._cal_1d_pos_embª  s,   € Ø× Ñ  ×!2Ñ!2°LÀ$×BSÑBSÐUY×UeÑUeÓfÐfrT   c                ó  — |d d …d d …df   }|d d …d d …df   }| j                  | j                  || j                  | j                  «      }| j                  | j                  || j                  | j                  «      }||z   }|S )Nr   r   )ra  r>  rE  rD  r?  )rO   r—   Úposition_coord_xÚposition_coord_yÚ	rel_pos_xÚ	rel_pos_yrï   s          rS   Ú_cal_2d_pos_embz#TFLayoutLMv3Encoder._cal_2d_pos_emb­  s’   € Ø¢¢1 a ™=ÐØ¢¢1 a ™=ÐØ×%Ñ%Ø×ÑØØ× Ñ Ø×Ñó	
ˆ	ð ×%Ñ%Ø×ÑØØ× Ñ Ø×Ñó	
ˆ	ð  Ñ*ˆ
ØÐrT   c
           
     óŒ  — |rdnd }
|rdnd }| j                   r| j                  |«      nd }| j                  r| j                  |«      nd }t	        | j
                  «      D ]6  \  }}|r|
|fz   }
|�||   nd } ||||||||	¬«      }|d   }|sŒ.||d   fz   }Œ8 |r|
|fz   }
|rt        ||
|¬«      S t        d„ ||
|fD «       «      S )Nr@   )rî   rï   r¾   r   r   ©Úlast_hidden_staterê   Ú
attentionsc              3  ó&   K  — | ]	  }|€Œ|–— Œ y ­wrk   r@   )Ú.0rÌ   s     rS   ú	<genexpr>z+TFLayoutLMv3Encoder.call.<locals>.<genexpr>ô  s   è ø€ ò ØÐ^cÑ^o”ñùs   ‚Š)r×   rc  rØ   ri  Ú	enumeraterA  r
   Útuple)rO   rê   r—   rë   rì   rí   Úoutput_hidden_statesÚreturn_dictr¯   r¾   Úall_hidden_statesÚall_self_attentionsrî   rï   rF  Úlayer_moduleÚlayer_head_maskÚlayer_outputss                     rS   r^   zTFLayoutLMv3Encoder.call¿  s  € ñ" #7™B¸DÐÙ$5™b¸4Ðà8<×8XÒ8X�$×&Ñ& |Ô4Ð^bˆØ37×3RÒ3R�T×)Ñ)¨$Ô/ÐX\ˆ
ä(¨¯©Ó4ò 	P‰OˆAˆ|Ù#Ø$5¸Ð8HÑ$HÐ!à.7Ð.C˜i¨šlÈˆOá(ØØØØ!ØØ%Ø!ôˆMð *¨!Ñ,ˆMÚ Ø&9¸]È1Ñ=MÐ<OÑ&OÑ#ð%	Pñ(  Ø 1°]Ð4DÑ DÐáÜ$Ø"/Ø/Ø.ôð ô ñ Ø$1Ð3DÐFYÐ#Zôó ð rT   c                ó¨  — | j                   ry d| _         t        | dd «      �Zt        j                  | j                  j
                  «      5  | j                  j                  d d | j                  g«       d d d «       t        | dd «      �Zt        j                  | j                  j
                  «      5  | j                  j                  d d | j                  g«       d d d «       t        | dd «      �Zt        j                  | j                  j
                  «      5  | j                  j                  d d | j                  g«       d d d «       t        | dd «      �K| j                  D ];  }t        j                  |j
                  «      5  |j                  d «       d d d «       Œ= y y # 1 sw Y   �Œ1xY w# 1 sw Y   ŒÖxY w# 1 sw Y   Œ{xY w# 1 sw Y   ŒnxY w)NTr=  r>  r?  rA  )r`   ra   rY   rb   r=  r?   rc   rB  r>  rE  r?  rA  )rO   rf   rA  s      rS   rc   zTFLayoutLMv3Encoder.buildø  s•  € Ø�:Š:ØØˆŒ
Ü�4˜¨Ó.Ð:Ü—‘˜t×0Ñ0×5Ñ5Ó6ñ IØ×!Ñ!×'Ñ'¨¨t°T×5FÑ5FÐ(GÔH÷Iä�4Ð)¨4Ó0Ð<Ü—‘˜t×2Ñ2×7Ñ7Ó8ñ NØ×#Ñ#×)Ñ)¨4°°t×7KÑ7KÐ*LÔM÷Nä�4Ð)¨4Ó0Ð<Ü—‘˜t×2Ñ2×7Ñ7Ó8ñ NØ×#Ñ#×)Ñ)¨4°°t×7KÑ7KÐ*LÔM÷Nä�4˜ $Ó'Ð3ØŸ™ò &�Ü—]‘] 5§:¡:Ó.ñ &Ø—K‘K Ô%÷&ð &ñ&ð 4÷Iñ Iú÷Nð Nú÷Nð Nú÷&ð &ús0   Á)F#Â2)F0Ä)F<ÆGÆ#F-Æ0F9Æ<GÇG	rg   )rM  ri   rN  rÏ   rO  rÏ   )r]  zkeras.layers.Denser¯   ri   rN  rÏ   rO  rÏ   )r¯   ri   )r—   ri   )NNNFFTNF)rê   ri   r—   rÃ   rë   rÃ   rì   rÃ   rí   rÄ   rs  rÄ   rt  rÄ   r¯   rÃ   r¾   rÄ   rj   úoUnion[TFBaseModelOutput, Tuple[tf.Tensor], Tuple[tf.Tensor, tf.Tensor], Tuple[tf.Tensor, tf.Tensor, tf.Tensor]]rk   )rm   rn   ro   rB   rW  ra  rc  ri  r^   rc   rq   rr   s   @rS   r;  r;  ^  sË   ø„ õ óD
ð2à'ðð  ðð ð	ð
 óó góð* "&Ø+/Ø&*Ø"'Ø%*Ø Ø)-Øð7à ð7ð ð7ð )ð	7ð
 $ð7ð  ð7ð #ð7ð ð7ð 'ð7ð ð7ð
ó7÷r&rT   r;  c                  óÊ   ‡ — e Zd ZeZdˆ fd„Zdd„Zdd„Zdd„Zd„ Z	ddd„Z
dd„Zdd„Zdd	„Zdd
„Ze	 	 	 	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       Zˆ xZS )ÚTFLayoutLMv3MainLayerc                ód  •— t        ‰| �  di |¤Ž || _        |j                  rt	        |d¬«      | _        |j                  rÝt        |d¬«      | _        t        j                  j                  |j                  d¬«      | _        t        j                  j                  |j                  d¬«      | _        |j"                  s|j$                  r-|j&                  |j(                  z  }| j+                  ||f¬«       t        j                  j                  dd	¬«      | _        t/        |d
¬«      | _        y )Nr]   r  Úpatch_embedry   rz   rˆ   )Ú
image_sizeg�íµ ÷Æ°>ÚnormÚencoderr@   )rA   rB   rN   Ú
text_embedrt   r]   Úvisual_embedr3   r  r   rH   r„   r…   ry   r†   r‡   rˆ   r×   rØ   rL   rD   Úinit_visual_bboxr�  r;  r‚  )rO   rN   rP   r€  rR   s       €rS   rB   zTFLayoutLMv3MainLayer.__init__  só   ø€ Ü‰ÑÑ"˜6Ò"àˆŒà×ÒÜ8¸ÀlÔSˆDŒOà×ÒÜ:¸6ÈÔVˆDÔÜ"Ÿ\™\×<Ñ<ÀV×EZÑEZÐalÐ<ÓmˆDŒNÜ Ÿ<™<×/Ñ/°×0JÑ0JÐQZÐ/Ó[ˆDŒLà×1Ò1°V×5VÒ5VØ#×.Ñ.°&×2CÑ2CÑC�
Ø×%Ñ%°*¸jÐ1IÐ%ÔJäŸ™×7Ñ7ÀÈ6Ð7ÓRˆDŒIä*¨6¸	ÔBˆ�rT   c                óê  — | j                   j                  r³| j                   j                  | j                   j                  z  }| j	                  dd| j                   j
                  fddt        j                  d¬«      | _        | j	                  d||z  dz   | j                   j
                  fddt        j                  d¬«      | _	        | j                  ry d| _
        t        | dd «      �Mt        j                  | j                  j                  «      5  | j                  j                  d «       d d d «       t        | dd «      �Mt        j                  | j                   j                  «      5  | j                   j                  d «       d d d «       t        | d	d «      �Mt        j                  | j"                  j                  «      5  | j"                  j                  d «       d d d «       t        | d
d «      �dt        j                  | j$                  j                  «      5  | j$                  j                  d d | j                   j
                  g«       d d d «       t        | dd «      �Mt        j                  | j&                  j                  «      5  | j&                  j                  d «       d d d «       t        | dd «      �et        j                  | j(                  j                  «      5  | j(                  j                  d d | j                   j
                  g«       d d d «       y y # 1 sw Y   �ŒüxY w# 1 sw Y   �Œ¯xY w# 1 sw Y   �ŒbxY w# 1 sw Y   ŒýxY w# 1 sw Y   Œ¯xY w# 1 sw Y   y xY w)Nr   r¿   TÚ	cls_token)r§   ÚinitializerÚ	trainabler¦   r?   Ú	pos_embedr‚  r]   r  ry   rˆ   r�  )rN   r„  rL   rD   Ú
add_weightrJ   rY   rJ  r‡  rŠ  r`   ra   rb   r‚  r?   rc   r]   r  ry   rˆ   r�  )rO   rf   r€  s      rS   rc   zTFLayoutLMv3MainLayer.build$  s»  € Ø�;‰;×#Ò#ØŸ™×/Ñ/°4·;±;×3IÑ3IÑIˆJØ!Ÿ_™_Ø˜!˜TŸ[™[×4Ñ4Ð5Ø#ØÜ—j‘jØ ð -ó ˆDŒNð "Ÿ_™_Ø˜* zÑ1°AÑ5°t·{±{×7NÑ7NÐOØ#ØÜ—j‘jØ ð -ó ˆDŒNð �:Š:ØØˆŒ
Ü�4˜ DÓ)Ð5Ü—‘˜tŸ|™|×0Ñ0Ó1ñ )Ø—‘×"Ñ" 4Ô(÷)ä�4˜ tÓ,Ð8Ü—‘˜tŸ™×3Ñ3Ó4ñ ,Ø—‘×%Ñ% dÔ+÷,ä�4˜¨Ó-Ð9Ü—‘˜t×/Ñ/×4Ñ4Ó5ñ -Ø× Ñ ×&Ñ& tÔ,÷-ä�4˜ dÓ+Ð7Ü—‘˜tŸ~™~×2Ñ2Ó3ñ LØ—‘×$Ñ$ d¨D°$·+±+×2IÑ2IÐ%JÔK÷Lä�4˜ DÓ)Ð5Ü—‘˜tŸ|™|×0Ñ0Ó1ñ )Ø—‘×"Ñ" 4Ô(÷)ä�4˜ Ó&Ð2Ü—‘˜tŸy™yŸ~™~Ó.ñ GØ—	‘	—‘  t¨T¯[©[×-DÑ-DÐ EÔF÷Gð Gð 3÷)ñ )ú÷,ñ ,ú÷-ñ -ú÷Lð Lú÷)ð )ú÷Gð GúsH   ÄL*Å.L7ÇMÈ"3MÊMË-3M)Ì*L4Ì7MÍMÍMÍM&Í)M2c                ó.   — | j                   j                  S rk   )r]   rv   )rO   s    rS   Úget_input_embeddingsz*TFLayoutLMv3MainLayer.get_input_embeddingsL  s   € Ø�‰×.Ñ.Ð.rT   c                ó:   — || j                   j                  _        y rk   )r]   rv   Úweight)rO   rÌ   s     rS   Úset_input_embeddingsz*TFLayoutLMv3MainLayer.set_input_embeddingsO  s   € Ø16ˆ�‰×'Ñ'Õ.rT   c                ó   — t         ‚)z�
        Prunes heads of the model. heads_to_prune: dict of {layer_num: list of heads to prune in this layer} See base
        class PreTrainedModel
        )ÚNotImplementedError)rO   Úheads_to_prunes     rS   Ú_prune_headsz"TFLayoutLMv3MainLayer._prune_headsS  s
   € ô
 "Ð!rT   c                ó|  — |\  }}t        j                  d||dz   z  |«      |z  }t        j                  |d¬«      }t        j                  ||dg«      }t        j                  d||dz   z  |«      |z  }t        j                  |d¬«      }t        j                  |d|g«      }t        j                  |d d …d d…f   |d d |d d …dd …f   |dd  gd¬«      }t        j
                  |ddg«      }t        j                  dd|dz
  |dz
  ggt         j                  ¬«      }t        j                  ||gd¬«      | _	        y )Nr   r   r’   rX   r   r¥   )
rY   r¨   rß   rª   Ústackr[   Úconstantr©   r–   Úvisual_bbox)	rO   r€  Úmax_lenÚheightÚwidthÚvisual_bbox_xÚvisual_bbox_yr˜  Úcls_token_boxs	            rS   r…  z&TFLayoutLMv3MainLayer.init_visual_bboxZ  s0  € ð #‰ˆ�äŸ™  G¨u°q©yÑ$9¸7ÓCÀuÑLˆÜŸ™ }¸1Ô=ˆÜŸ™ °°q¨zÓ:ˆäŸ™  G¨v¸©zÑ$:¸GÓDÈÑNˆÜŸ™ }¸1Ô=ˆÜŸ™ °°6¨{Ó;ˆä—h‘hØš1˜c˜r˜c˜6Ñ" M°#°2Ð$6¸ÂaÈÉÀeÑ8LÈmÐ\]Ð\^ÐN_Ð`Øô
ˆô —j‘j ¨r°1¨gÓ6ˆäŸ™ a¨¨G°a©K¸À1¹Ð%EÐ$FÌbÏhÉhÔWˆÜŸ9™9 m°[Ð%AÈÔJˆÕrT   c                ó¨   — t        j                  | j                  d¬«      }t        j                  ||ddg«      }t        j                  ||¬«      }|S )Nr   r’   r   r¥   )rY   rß   r˜  rª   r³   )rO   r°   r¦   r˜  s       rS   Úcalculate_visual_bboxz+TFLayoutLMv3MainLayer.calculate_visual_bboxq  sE   € Ü—n‘n T×%5Ñ%5¸AÔ>ˆÜ—g‘g˜k¨J¸¸1Ð+=Ó>ˆÜ—g‘g˜k°Ô7ˆØÐrT   c                ó*  — | j                  |«      }t        j                  |«      d   }t        j                  | j                  |ddg«      }t        j
                  ||gd¬«      }t        | dd «      �|| j                  z  }| j                  |«      }|S )Nr   r   r’   rŠ  )	r  rY   r§   rª   r‡  r–   ra   rŠ  r�  )rO   r\   r]   r°   Ú
cls_tokenss        rS   Úembed_imagez!TFLayoutLMv3MainLayer.embed_imagew  sŠ   € Ø×%Ñ% lÓ3ˆ
ô —X‘X˜jÓ)¨!Ñ,ˆ
Ü—W‘W˜TŸ^™^¨j¸!¸QÐ-?Ó@ˆ
Ü—Y‘Y 
¨JÐ7¸aÔ@ˆ
ô �4˜ dÓ+Ð7Ø˜$Ÿ.™.Ñ(ˆJà—Y‘Y˜zÓ*ˆ
ØÐrT   c                ó\  — t        |j                  «      }|dk(  rt        j                  |d¬«      }nM|dk(  r/t        j                  |d¬«      }t        j                  |d¬«      }nt	        d|j                  › d�«      ‚t        j
                  || j                  «      }d|z
  t        z  }|S )Nr   r   r’   r   z&Wrong shape for attention_mask (shape ú).g      ð?)Úlenr§   rY   rß   rÎ   r³   r\  ÚLARGE_NEGATIVE)rO   rë   Ún_dimsÚextended_attention_masks       rS   Úget_extended_attention_maskz1TFLayoutLMv3MainLayer.get_extended_attention_mask†  s©   € ô �^×)Ñ)Ó*ˆð �QŠ;Ü&(§n¡n°^È!Ô&LÑ#Ø�qŠ[ô ')§n¡n°^È!Ô&LÐ#Ü&(§n¡nÐ5LÐSTÔ&UÑ#äÐEÀn×FZÑFZÐE[Ð[]Ð^Ó_Ð_ô #%§'¡'Ð*AÀ4×CUÑCUÓ"VÐØ#&Ð)@Ñ#@ÄNÑ"RÐà&Ð&rT   c                ó  — |€d g| j                   j                  z  S t        j                  |«      }|dk(  rŒt        j                  |d¬«      }t        j                  |d¬«      }t        j                  |d¬«      }t        j                  |d¬«      }t        j
                  || j                   j                  ddddg«      }ni|dk(  rFt        j                  |d¬«      }t        j                  |d¬«      }t        j                  |d¬«      }n|dk7  rt        d|j                  › d�«      ‚t        j                  |«      dk(  sJ d	t        j                  |«      › d
�«       ‚t        j                  || j                  «      }|S )Nr   r   r’   rX   r   r    z!Wrong shape for head_mask (shape r¥  zGot head_mask rank of z, but require 5.)
rN   r@  rY   Úrankrß   rª   rÎ   r§   r³   r\  )rO   rì   r¨  s      rS   Úget_head_maskz#TFLayoutLMv3MainLayer.get_head_mask¡  sD  € ØÐØ�6˜DŸK™K×9Ñ9Ñ9Ð9ä—‘˜Ó#ˆØ�QŠ;äŸ™ y°qÔ9ˆIÜŸ™ y°qÔ9ˆIÜŸ™ y°rÔ:ˆIÜŸ™ y°rÔ:ˆIÜŸ™Ø˜DŸK™K×9Ñ9¸1¸aÀÀAÐFó‰Ið �qŠ[äŸ™ y°qÔ9ˆIÜŸ™ y°rÔ:ˆIÜŸ™ y°rÔ:‰IØ�qŠ[ÜÐ@ÀÇÁÐ@QÐQSÐTÓUÐUÜ�w‰w�yÓ! QÒ&ÐeÐ*@ÄÇÁÈÓASÐ@TÐTdÐ(eÓeÐ&Ü—G‘G˜I t×'9Ñ'9Ó:ˆ	ØÐrT   c           
     ó¼  — |	�|	n| j                   j                  }	|
�|
n| j                   j                  }
|�|n| j                   j                  }|� t	        j
                  |«      }|d   }|d   }nH|� t	        j
                  |«      }|d   }|d   }n&|�t	        j
                  |«      d   }nt        d«      ‚|�|j                  }n=|�|j                  }n.|�|j                  }n|�|j                  }nt        j                  }|€|�i|€t	        j                  |f|¬«      }|€t	        j                  |f|¬«      }|€t	        j                  |df|¬«      }| j                  ||||||¬«      }d }d }|��×| j                  |«      }t	        j                  |t	        j
                  |«      d   f|¬«      }|€|}nt	        j                  ||gd¬«      }| j                   j                  r0| j                  ||«      }|€|}nt	        j                  ||gd¬«      }| j                   j                   s| j                   j                  rÂt	        j"                  dt	        j
                  |«      d   |¬«      }t	        j$                  |d¬«      }t	        j&                  ||dg«      }|€|�_t	        j$                  t	        j"                  d|¬«      d¬«      }t	        j&                  ||dg«      }t	        j                  ||gd¬«      }n|}|€|€|}nt	        j                  |gd¬«      }| j)                  |«      }| j+                  ||¬«      }n¡| j                   j                   s| j                   j                  ru| j                   j                   rGt	        j$                  t	        j"                  d|¬«      d¬«      }t	        j&                  ||dg«      }|}| j                   j                  r|}| j-                  |«      }| j/                  |«      }| j1                  |||||	|
|¬	«      }|d   }|s	|f|dd  z   S t3        ||j4                  |j6                  ¬
«      S )Nr   r   zEYou have to specify either input_ids or inputs_embeds or pixel_valuesr¥   r   )r¶   r—   r¯   rÁ   rº   r¾   r’   r½   )r—   r¯   rë   rì   rí   rs  rt  rk  )rN   rí   rs  rt  rY   r§   rÎ   r¦   r©   Úonesr¿   r]   r£  r–   rØ   r   r×   r¨   rß   rª   ry   rˆ   rª  r­  r‚  r
   rê   rm  )rO   r¶   r—   rë   rÁ   r¯   rì   rº   r\   rí   rs  rt  r¾   rf   r°   Ú
seq_lengthÚ	int_dtypeÚembedding_outputÚ
final_bboxÚfinal_position_idsÚvisual_embeddingsÚvisual_attention_maskr˜  Úvisual_position_idsr©  Úencoder_outputsÚsequence_outputs                              rS   r^   zTFLayoutLMv3MainLayer.callº  sW  € ð6 2CÐ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ð$DÑ È$Ï+É+×JjÑJjð 	ð &1Ð%<‘kÀ$Ç+Á+×BYÑBYˆàÐ ÜŸ(™( 9Ó-ˆKØ$ Q™ˆJØ$ Q™‰JØÐ&ÜŸ(™( =Ó1ˆKØ$ Q™ˆJØ$ Q™‰JØÐ%ÜŸ™ ,Ó/°Ñ2‰JäÐdÓeÐeð Ð Ø!Ÿ™‰IØÐØŸ
™
‰IØÐ'Ø&×,Ñ,‰IØÐ'Ø&×,Ñ,‰IäŸ™ˆIàÐ  MÐ$=ØÐ%Ü!#§¡¨*°jÐ)AÈÔ!S�ØÐ%Ü!#§¡¨:°zÐ*BÈ)Ô!T�Øˆ|Ü—x‘x ¨Z¸Ð ;À9ÔM�à#Ÿ™Ø#ØØ)Ø-Ø+Ø!ð  /ó  Ðð ˆ
Ø!ÐØÑ#à $× 0Ñ 0°Ó >Ðô %'§G¡G¨Z¼¿¹ÐBSÓ9TÐUVÑ9WÐ,XÐ`iÔ$jÐ!ØÐ%Ø!6‘ä!#§¡¨NÐ<QÐ+RÐYZÔ![�ð �{‰{×5Ò5Ø"×8Ñ8¸ÀYÓO�Ø�<Ø!,‘Jä!#§¡¨D°+Ð+>ÀQÔ!G�Jð �{‰{×6Ò6¸$¿+¹+×:`Ò:`Ü&(§h¡h¨q´"·(±(Ð;LÓ2MÈaÑ2PÐXaÔ&bÐ#Ü&(§n¡nÐ5HÈqÔ&QÐ#Ü&(§g¡gÐ.AÀJÐPQÀ?Ó&SÐ#àÐ(¨MÐ,EÜ#%§>¡>´"·(±(¸1¸jÐPYÔ2ZÐabÔ#c�LÜ#%§7¡7¨<¸*Àa¸Ó#I�LÜ)+¯©°LÐBUÐ3VÐ]^Ô)_Ñ&à)<Ð&ð Ð  ]Ð%:Ø#4Ñ ä#%§9¡9Ð.>Ð@QÐ-RÐYZÔ#[Ð Ø#Ÿ~™~Ð.>Ó?ÐØ#Ÿ|™|Ð,<Àx˜|ÓPÑà�[‰[×4Ò4¸¿¹×8^Ò8^Ø�{‰{×6Ò6Ü!Ÿ~™~¬b¯h©h°q¸*ÈIÔ.VÐ]^Ô_�Ü!Ÿw™w |°jÀ!°_ÓE�Ø%1Ð"à�{‰{×5Ò5Ø!�
à"&×"BÑ"BÀ>Ó"RÐð ×&Ñ& yÓ1ˆ	àŸ,™,ØØØ+Ø2ØØ/Ø!5Ø#ð 'ó 	
ˆð *¨!Ñ,ˆáØ#Ð%¨¸¸Ð(;Ñ;Ð;ä Ø-Ø)×7Ñ7Ø&×1Ñ1ô
ð 	
rT   rg   rk   )rj   zkeras.layers.Layer)rÌ   ztf.Variable)iè  )r€  zTuple[int, int]r™  rÏ   )r°   rÏ   r¦   ztf.DTyperh   )rë   ri   rj   ri   )rì   rÃ   rj   z(Union[tf.Tensor, List[tf.Tensor | None]]©NNNNNNNNNNNF©r¶   rÃ   r—   rÃ   rë   rÃ   rÁ   rÃ   r¯   rÃ   rì   rÃ   rº   rÃ   r\   rÃ   rí   úOptional[bool]rs  r¼  rt  r¼  r¾   rÄ   rj   r{  )rm   rn   ro   r   Úconfig_classrB   rc   r�  r�  r”  r…  r   r£  rª  r­  r   r^   rq   rr   s   @rS   r}  r}    s  ø„ à#€LõCó*&GóP/ó7ò"ôKó.óó'ó6ð2 ð '+Ø!%Ø+/Ø+/Ø)-Ø&*Ø*.Ø)-Ø,0Ø/3Ø&*Øð`
à#ð`
ð ð`
ð )ð	`
ð
 )ð`
ð 'ð`
ð $ð`
ð (ð`
ð 'ð`
ð *ð`
ð -ð`
ð $ð`
ð ð`
ð
ò`
ó ô`
rT   r}  c                  ó4   ‡ — e Zd ZdZeZdZeˆ fd„«       Zˆ xZ	S )ÚTFLayoutLMv3PreTrainedModelz†
    An abstract class to handle weights initialization and a simple interface for downloading and loading pretrained
    models.
    Ú
layoutlmv3c                ón   •— t         ‰| �  }t        j                  dt        j                  d¬«      |d<   |S )N)NNr   r—   r  )rA   Úinput_signaturerY   Ú
TensorSpecr©   )rO   ÚsigrR   s     €rS   rÂ  z+TFLayoutLMv3PreTrainedModel.input_signatureg  s,   ø€ ä‰gÑ%ˆÜ—m‘m O´R·X±XÀFÔKˆˆF‰Øˆ
rT   )
rm   rn   ro   rp   r   r½  Úbase_model_prefixÚpropertyrÂ  rq   rr   s   @rS   r¿  r¿  ^  s'   ø„ ñð
 $€LØ$Ðàóó ôrT   r¿  a�	  
    This model inherits from [`TFPreTrainedModel`]. Check the superclass documentation for the generic methods the
    library implements for all its model (such as downloading or saving, resizing the input embeddings, pruning heads
    etc.)

    This model is also a [keras.Model](https://www.tensorflow.org/api_docs/python/tf/keras/Model) subclass. Use it
    as a regular TF 2.0 Keras Model and refer to the TF 2.0 documentation for all matter related to general usage and
    behavior.

    <Tip>

    TensorFlow models and layers in `transformers` accept two formats as input:

    - having all inputs as keyword arguments (like PyTorch models), or
    - having all inputs as a list, tuple or dict in the first positional argument.

    The reason the second format is supported is that Keras methods prefer this format when passing inputs to models
    and layers. Because of this support, when using methods like `model.fit()` things should "just work" for you - just
    pass your inputs and labels in any format that `model.fit()` supports! If, however, you want to use the second
    format outside of Keras methods like `fit()` and `predict()`, such as when creating your own layers or models with
    the Keras `Functional` API, there are three possibilities you can use to gather all the input Tensors in the first
    positional argument:

    - a single Tensor with `input_ids` only and nothing else: `model(input_ids)`
    - a list of varying length with one or several input Tensors IN THE ORDER given in the docstring:
    `model([input_ids, attention_mask])` or `model([input_ids, attention_mask, token_type_ids])`
    - a dictionary with one or several input Tensors associated to the input names given in the docstring:
    `model({"input_ids": input_ids, "token_type_ids": token_type_ids})`

    Note that when creating models and layers with
    [subclassing](https://keras.io/guides/making_new_layers_and_models_via_subclassing/) then you don't need to worry
    about any of this, as you can just pass inputs like you would to any other Python function!

    </Tip>

    Parameters:
        config ([`LayoutLMv3Config`]): Model configuration class with all the parameters of the model.
            Initializing with a config file does not load the weights associated with the model, only the
            configuration. Check out the [`~TFPreTrainedModel.from_pretrained`] method to load the model weights.
a³  
    Args:
        input_ids (`Numpy array` or `tf.Tensor` of shape `(batch_size, 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 (`Numpy array` or `tf.Tensor` 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.

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

        pixel_values (`tf.Tensor` of shape `(batch_size, num_channels, height, width)`):
            Batch of document images. Each image is divided into patches of shape `(num_channels, config.patch_size,
            config.patch_size)` and the total number of patches (=`patch_sequence_length`) equals to `((height /
            config.patch_size) * (width / config.patch_size))`.

        attention_mask (`tf.Tensor` of shape `(batch_size, sequence_length)`, *optional*):
            Mask to avoid performing attention on padding token indices. Mask values selected in `[0, 1]`:

            - 1 for tokens that are **not masked**,
            - 0 for tokens that are **masked**.

            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 attention masks?](../glossary#attention-mask)
        token_type_ids (`Numpy array` or `tf.Tensor` of shape `(batch_size, 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 (`Numpy array` or `tf.Tensor` of shape `(batch_size, 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)
        head_mask (`tf.Tensor` of shape `(num_heads,)` or `(num_layers, num_heads)`, *optional*):
            Mask to nullify selected heads of the self-attention modules. Mask values selected in `[0, 1]`:

            - 1 indicates the head is **not masked**,
            - 0 indicates the head is **masked**.

        inputs_embeds (`tf.Tensor` of shape `(batch_size, 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.
        output_attentions (`bool`, *optional*):
            Whether or not to return the attentions tensors of all attention layers. See `attentions` under returned
            tensors for more detail.
        output_hidden_states (`bool`, *optional*):
            Whether or not to return the hidden states of all layers. See `hidden_states` under returned tensors for
            more detail.
        return_dict (`bool`, *optional*):
            Whether or not to return a [`~utils.ModelOutput`] instead of a plain tuple.
zdThe bare LayoutLMv3 Model transformer outputting raw hidden-states without any specific head on top.c                  óº   ‡ — e Zd ZdgZˆ fd„Ze ee«       ee	e
¬«      	 	 	 	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       «       «       Zdd„Zˆ xZS )	ÚTFLayoutLMv3Modelr¯   c                óP   •— t        ‰| �  |g|¢­i |¤Ž t        |d¬«      | _        y )NrÀ  r  )rA   rB   r}  rÀ  )rO   rN   r	  rP   rR   s       €rS   rB   zTFLayoutLMv3Model.__init__ì  s(   ø€ Ü‰Ñ˜Ð3 &Ò3¨FÒ3Ü/°¸\ÔJˆ�rT   ©Úoutput_typer½  c                ó@   — | j                  |||||||||	|
||¬«      }|S )a  
        Returns:

        Examples:

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

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

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

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

        >>> outputs = model(**encoding)
        >>> last_hidden_states = outputs.last_hidden_state
        ```)r¶   r—   rë   rÁ   r¯   rì   rº   r\   rí   rs  rt  r¾   )rÀ  )rO   r¶   r—   rë   rÁ   r¯   rì   rº   r\   rí   rs  rt  r¾   r÷   s                 rS   r^   zTFLayoutLMv3Model.callð  sC   € ð^ —/‘/ØØØ)Ø)Ø%ØØ'Ø%Ø/Ø!5Ø#Øð "ó 
ˆð ˆrT   c                óú   — | j                   ry d| _         t        | dd «      �Nt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       y y # 1 sw Y   y xY w)NTrÀ  )r`   ra   rY   rb   rÀ  r?   rc   re   s     rS   rc   zTFLayoutLMv3Model.build0  si   € Ø�:Š:ØØˆŒ
Ü�4˜ tÓ,Ð8Ü—‘˜tŸ™×3Ñ3Ó4ñ ,Ø—‘×%Ñ% dÔ+÷,ð ,ð 9÷,ð ,ús   ÁA1Á1A:rº  r»  rk   )rm   rn   ro   Ú"_keys_to_ignore_on_load_unexpectedrB   r   r   ÚLAYOUTLMV3_INPUTS_DOCSTRINGr   r
   Ú_CONFIG_FOR_DOCr^   rc   rq   rr   s   @rS   rÈ  rÈ  ä  sô   ø„ ð +:Ð):Ð&ôKð Ù*Ð+FÓGÙÐ+<È?Ô[ð '+Ø!%Ø+/Ø+/Ø)-Ø&*Ø*.Ø)-Ø,0Ø/3Ø&*Øð;à#ð;ð ð;ð )ð	;ð
 )ð;ð 'ð;ð $ð;ð (ð;ð 'ð;ð *ð;ð -ð;ð $ð;ð ð;ð
ò;ó \ó Hó ð;÷z,rT   rÈ  c                  ó6   ‡ — e Zd ZdZdˆ fd„Zddd„Zdd„Zˆ xZS )	ÚTFLayoutLMv3ClassificationHeadz\
    Head for sentence-level classification tasks. Reference: RobertaClassificationHead
    c                óØ  •— t        ‰| �  di |¤Ž t        j                  j	                  |j
                  dt        |j                  «      d¬«      | _        |j                  �|j                  n|j                  }t        j                  j                  |d¬«      | _        t        j                  j	                  |j                  t        |j                  «      d¬«      | _        || _        y )	NÚtanhr   )Ú
activationr>   r?   rˆ   r  Úout_projrÊ   r@   )rA   rB   r   rH   rÕ   rJ   r   rK   r   Úclassifier_dropoutr‡   r†   rˆ   Ú
num_labelsrÖ  rN   )rO   rN   rP   r×  rR   s       €rS   rB   z'TFLayoutLMv3ClassificationHead.__init__>  sÒ   ø€ Ü‰ÑÑ"˜6Ò"Ü—\‘\×'Ñ'Ø×ÑØÜ.¨v×/GÑ/GÓHØð	 (ó 
ˆŒ
ð *0×)BÑ)BÐ)NˆF×%Ò%ÐTZ×TnÑTnð 	ô —|‘|×+Ñ+ØØð ,ó 
ˆŒô Ÿ™×*Ñ*Ø×ÑÜ.¨v×/GÑ/GÓHØð +ó 
ˆŒð
 ˆ�rT   c                ó–   — | j                  ||¬«      }| j                  |«      }| j                  ||¬«      }| j                  |«      }|S )Nr½   )rˆ   r   rÖ  )rO   r	  r¾   r÷   s       rS   r^   z#TFLayoutLMv3ClassificationHead.callT  sG   € Ø—,‘,˜v°�,Ó9ˆØ—*‘*˜WÓ%ˆØ—,‘,˜w°�,Ó:ˆØ—-‘- Ó(ˆØˆrT   c                óî  — | j                   ry d| _         t        | dd «      �dt        j                  | j                  j
                  «      5  | j                  j                  d d | j                  j                  g«       d d d «       t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �et        j                  | j                  j
                  «      5  | j                  j                  d d | j                  j                  g«       d d d «       y y # 1 sw Y   ŒÖxY w# 1 sw Y   ŒˆxY w# 1 sw Y   y xY w)NTr   rˆ   rÖ  )r`   ra   rY   rb   r   r?   rc   rN   rJ   rˆ   rÖ  re   s     rS   rc   z$TFLayoutLMv3ClassificationHead.build[  s*  € Ø�:Š:ØØˆŒ
Ü�4˜ $Ó'Ð3Ü—‘˜tŸz™zŸ™Ó/ñ HØ—
‘
× Ñ  $¨¨d¯k©k×.EÑ.EÐ!FÔG÷Hä�4˜ DÓ)Ð5Ü—‘˜tŸ|™|×0Ñ0Ó1ñ )Ø—‘×"Ñ" 4Ô(÷)ä�4˜ TÓ*Ð6Ü—‘˜tŸ}™}×1Ñ1Ó2ñ KØ—‘×#Ñ# T¨4°·±×1HÑ1HÐ$IÔJ÷Kð Kð 7÷Hð Hú÷)ð )ú÷Kð Kús$   Á3EÂ<EÄ3E+ÅEÅE(Å+E4rg   r  )r	  ri   r¾   rÄ   rj   ri   rk   rl   rr   s   @rS   rÒ  rÒ  9  s   ø„ ñõô,÷KrT   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dgZdˆ fd„Ze ee«       ee	e
¬«      	 	 	 	 	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       «       «       Zd	d„Zˆ xZS )
Ú%TFLayoutLMv3ForSequenceClassificationr¯   c                ó|   •— t        ‰| �  |fi |¤Ž || _        t        |d¬«      | _        t        |d¬«      | _        y )NrÀ  r  Ú
classifier)rA   rB   rN   r}  rÀ  rÒ  rÞ  r�   s      €rS   rB   z.TFLayoutLMv3ForSequenceClassification.__init__v  s8   ø€ Ü‰Ñ˜Ñ* 6Ò*ØˆŒÜ/°¸\ÔJˆŒÜ8¸ÀlÔSˆ�rT   rÊ  c                óP  — |
�|
n| j                   j                  }
| j                  ||||||||	|
|||¬«      }|d   dd…ddd…f   }| j                  ||¬«      }|€dn| j	                  ||«      }|
s|f|dd z   }|�|f|z   S |S t        |||j                  |j                  ¬«      S )a¾  
        Returns:

        Examples:

        ```python
        >>> from transformers import AutoProcessor, TFAutoModelForSequenceClassification
        >>> from datasets import load_dataset
        >>> import tensorflow as tf

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

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

        >>> encoding = processor(image, words, boxes=boxes, return_tensors="tf")
        >>> sequence_label = tf.convert_to_tensor([1])

        >>> outputs = model(**encoding, labels=sequence_label)
        >>> loss = outputs.loss
        >>> logits = outputs.logits
        ```N©rë   rÁ   r¯   rì   rº   rí   rs  rt  r—   r\   r¾   r   r½   r   ©ÚlossÚlogitsrê   rm  )rN   Úuse_return_dictrÀ  rÞ  Úhf_compute_lossr   rê   rm  )rO   r¶   rë   rÁ   r¯   rì   rº   Úlabelsrí   rs  rt  r—   r\   r¾   r÷   r¹  rã  râ  r  s                      rS   r^   z*TFLayoutLMv3ForSequenceClassification.call|  sã   € ðh &1Ð%<‘kÀ$Ç+Á+×B]ÑB]ˆà—/‘/ØØ)Ø)Ø%ØØ'Ø/Ø!5Ø#ØØ%Øð "ó 
ˆð " !™*¢Q¨ª1 WÑ-ˆØ—‘ ¸8�ÓDˆà�~‰t¨4×+?Ñ+?ÀÈÓ+OˆáØ�Y ¨¨ Ñ,ˆFØ)-Ð)9�T�G˜fÑ$ÐE¸vÐEä)ØØØ!×/Ñ/Ø×)Ñ)ô	
ð 	
rT   c                óÆ  — | j                   ry d| _         t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �Nt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       y y # 1 sw Y   ŒexY w# 1 sw Y   y xY w)NTrÀ  rÞ  )r`   ra   rY   rb   rÀ  r?   rc   rÞ  re   s     rS   rc   z+TFLayoutLMv3ForSequenceClassification.buildÐ  óµ   € Ø�:Š:ØØˆŒ
Ü�4˜ tÓ,Ð8Ü—‘˜tŸ™×3Ñ3Ó4ñ ,Ø—‘×%Ñ% dÔ+÷,ä�4˜ tÓ,Ð8Ü—‘˜tŸ™×3Ñ3Ó4ñ ,Ø—‘×%Ñ% dÔ+÷,ð ,ð 9÷,ð ,ú÷,ð ,úr   rg   ©NNNNNNNNNNNNF)r¶   rÃ   rë   rÃ   rÁ   rÃ   r¯   rÃ   rì   rÃ   rº   rÃ   ræ  rÃ   rí   r¼  rs  r¼  rt  r¼  r—   rÃ   r\   rÃ   r¾   r¼  rj   z«Union[TFSequenceClassifierOutput, Tuple[tf.Tensor], Tuple[tf.Tensor, tf.Tensor], Tuple[tf.Tensor, tf.Tensor, tf.Tensor], Tuple[tf.Tensor, tf.Tensor, tf.Tensor, tf.Tensor]]rk   )rm   rn   ro   rÎ  rB   r   r   rÏ  r   r   rÐ  r^   rc   rq   rr   s   @rS   rÜ  rÜ  j  s  ø„ ð +:Ð):Ð&õTð Ù*Ð+FÓGÙÐ+EÐTcÔdð '+Ø+/Ø+/Ø)-Ø&*Ø*.Ø#'Ø,0Ø/3Ø&*Ø!%Ø)-Ø#(ðO
à#ðO
ð )ðO
ð )ð	O
ð
 'ðO
ð $ðO
ð (ðO
ð !ðO
ð *ðO
ð -ðO
ð $ðO
ð ðO
ð 'ðO
ð !ðO
ð
òO
ó eó Hó ðO
÷b	,rT   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).
    c                  óÂ   ‡ — e Zd ZdgZdˆ fd„Ze ee«       ee	e
¬«      	 	 	 	 	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       «       «       Zd	d„Zˆ xZS )
Ú"TFLayoutLMv3ForTokenClassificationr¯   c                ó´  •— t        ‰| �  |fi |¤Ž |j                  | _        t        |d¬«      | _        t
        j                  j                  |j                  d¬«      | _	        |j                  dk  rLt
        j                  j                  |j                  t        |j                  «      d¬«      | _        || _        y t        |d¬«      | _        || _        y )NrÀ  r  rˆ   r#   rÞ  rÊ   )rA   rB   rØ  r}  rÀ  r   rH   r†   r‡   rˆ   rÕ   r   rK   rÞ  rÒ  rN   r�   s      €rS   rB   z+TFLayoutLMv3ForTokenClassification.__init__é  s´   ø€ Ü‰Ñ˜Ñ* 6Ò*Ø ×+Ñ+ˆŒä/°¸\ÔJˆŒÜ—|‘|×+Ñ+¨F×,FÑ,FÈYÐ+ÓWˆŒØ×Ñ˜rÒ!Ü#Ÿl™l×0Ñ0Ø×!Ñ!Ü#2°6×3KÑ3KÓ#LØ!ð 1ó ˆDŒOð ˆ�ô =¸VÈ,ÔWˆDŒOØˆ�rT   rÊ  c                óÚ  — |�|n| j                   j                  }| j                  ||||||||	|
|||¬«      }|�t        j                  |«      }nt        j                  |«      dd }|d   }|d   dd…d|…f   }| j                  ||¬«      }| j                  |«      }|€dn| j                  ||«      }|s|f|dd z   }|�|f|z   S |S t        |||j                  |j                  ¬«      S )ag  
        labels (`tf.Tensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the token classification loss. Indices should be in `[0, ..., config.num_labels - 1]`.

        Returns:

        Examples:

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

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

        >>> dataset = load_dataset("nielsr/funsd-layoutlmv3", split="train", trust_remote_code=True)
        >>> 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="tf")

        >>> outputs = model(**encoding)
        >>> loss = outputs.loss
        >>> logits = outputs.logits
        ```N)r—   rë   rÁ   r¯   rì   rº   rí   rs  rt  r\   r¾   rX   r   r   r½   rá  )rN   rä  rÀ  rY   r§   rˆ   rÞ  rå  r   rê   rm  )rO   r¶   r—   rë   rÁ   r¯   rì   rº   ræ  rí   rs  rt  r\   r¾   r÷   rf   r°  r¹  rã  râ  r  s                        rS   r^   z'TFLayoutLMv3ForTokenClassification.callù  s%  € ðl &1Ð%<‘kÀ$Ç+Á+×B]ÑB]ˆà—/‘/ØØØ)Ø)Ø%ØØ'Ø/Ø!5Ø#Ø%Øð "ó 
ˆð Ð ÜŸ(™( 9Ó-‰KäŸ(™( =Ó1°#°2Ð6ˆKà  ‘^ˆ
à! !™*¢Q¨¨¨ ^Ñ4ˆØŸ,™, À˜,ÓJˆØ—‘ Ó1ˆà�~‰t¨4×+?Ñ+?ÀÈÓ+OˆáØ�Y ¨¨ Ñ,ˆFØ)-Ð)9�T�G˜fÑ$ÐE¸vÐEä&ØØØ!×/Ñ/Ø×)Ñ)ô	
ð 	
rT   c                óÀ  — | j                   ry d| _         t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �et        j                  | j                  j
                  «      5  | j                  j                  d d | j                  j                  g«       d d d «       y y # 1 sw Y   ŒÖxY w# 1 sw Y   ŒˆxY w# 1 sw Y   y xY w)NTrÀ  rˆ   rÞ  )r`   ra   rY   rb   rÀ  r?   rc   rˆ   rÞ  rN   rJ   re   s     rS   rc   z(TFLayoutLMv3ForTokenClassification.buildW  s  € Ø�:Š:ØØˆŒ
Ü�4˜ tÓ,Ð8Ü—‘˜tŸ™×3Ñ3Ó4ñ ,Ø—‘×%Ñ% dÔ+÷,ä�4˜ DÓ)Ð5Ü—‘˜tŸ|™|×0Ñ0Ó1ñ )Ø—‘×"Ñ" 4Ô(÷)ä�4˜ tÓ,Ð8Ü—‘˜tŸ™×3Ñ3Ó4ñ MØ—‘×%Ñ% t¨T°4·;±;×3JÑ3JÐ&KÔL÷Mð Mð 9÷,ð ,ú÷)ð )ú÷Mð Mús$   ÁD<Â%EÃ?3EÄ<EÅEÅErg   ré  )r¶   rÃ   r—   rÃ   rë   rÃ   rÁ   rÃ   r¯   rÃ   rì   rÃ   rº   rÃ   ræ  rÃ   rí   r¼  rs  r¼  rt  r¼  r\   rÃ   r¾   r¼  rj   z¨Union[TFTokenClassifierOutput, Tuple[tf.Tensor], Tuple[tf.Tensor, tf.Tensor], Tuple[tf.Tensor, tf.Tensor, tf.Tensor], Tuple[tf.Tensor, tf.Tensor, tf.Tensor, tf.Tensor]]rk   )rm   rn   ro   rÎ  rB   r   r   rÏ  r   r   rÐ  r^   rc   rq   rr   s   @rS   rë  rë  Ü  s  ø„ ð +:Ð):Ð&õð  Ù*Ð+FÓGÙÐ+BÐQ`Ôað '+Ø!%Ø+/Ø+/Ø)-Ø&*Ø*.Ø#'Ø,0Ø/3Ø&*Ø)-Ø#(ðY
à#ðY
ð ðY
ð )ð	Y
ð
 )ðY
ð 'ðY
ð $ðY
ð (ðY
ð !ðY
ð *ðY
ð -ðY
ð $ðY
ð 'ðY
ð !ðY
ð
òY
ó bó Hó ðY
÷vMrT   rë  a  
    LayoutLMv3 Model with a span classification head on top for extractive question-answering tasks such as
    [DocVQA](https://rrc.cvc.uab.es/?ch=17) (a linear layer on top of the text part of the hidden-states output to
    compute `span start logits` and `span end logits`).
    c                  óÈ   ‡ — e Zd ZdgZdˆ fd„Ze ee«       ee	e
¬«      	 	 	 	 	 	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       «       «       Zd	d„Zˆ xZS )
Ú TFLayoutLMv3ForQuestionAnsweringr¯   c                ó�   •— t        ‰| �  |fi |¤Ž |j                  | _        t        |d¬«      | _        t        |d¬«      | _        y )NrÀ  r  Ú
qa_outputs)rA   rB   rØ  r}  rÀ  rÒ  rò  r�   s      €rS   rB   z)TFLayoutLMv3ForQuestionAnswering.__init__r  s>   ø€ Ü‰Ñ˜Ñ* 6Ò*à ×+Ñ+ˆŒä/°¸\ÔJˆŒÜ8¸ÀlÔSˆ�rT   rÊ  c                óæ  — |�|n| j                   j                  }| j                  |||||||	|
||||¬«      }|d   }| j                  ||¬«      }t	        j
                  |dd¬«      \  }}t	        j                  |d¬«      }t	        j                  |d¬«      }d}|�|�||d	œ}| j                  |||f¬
«      }|s||f|dd z   }|�|f|z   S |S t        ||||j                  |j                  ¬«      S )ak  
        start_positions (`tf.Tensor` of shape `(batch_size,)`, *optional*):
            Labels for position (index) of the start of the labelled span for computing the token classification loss.
            Positions are clamped to the length of the sequence (`sequence_length`). Position outside of the sequence
            are not taken into account for computing the loss.
        end_positions (`tf.Tensor` of shape `(batch_size,)`, *optional*):
            Labels for position (index) of the end of the labelled span for computing the token classification loss.
            Positions are clamped to the length of the sequence (`sequence_length`). Position outside of the sequence
            are not taken into account for computing the loss.

        Returns:

        Examples:

        ```python
        >>> from transformers import AutoProcessor, TFAutoModelForQuestionAnswering
        >>> from datasets import load_dataset
        >>> import tensorflow as tf

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

        >>> dataset = load_dataset("nielsr/funsd-layoutlmv3", split="train", trust_remote_code=True)
        >>> 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="tf")
        >>> start_positions = tf.convert_to_tensor([1])
        >>> end_positions = tf.convert_to_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
        ```Nrà  r   r½   r   rX   )rÌ   Únum_or_size_splitsr“   )Úinputr“   )Ústart_positionÚend_position)rã  r   )râ  Ústart_logitsÚ
end_logitsrê   rm  )rN   rä  rÀ  rò  rY   ÚsplitÚsqueezerå  r   rê   rm  )rO   r¶   rë   rÁ   r¯   rì   rº   Ústart_positionsÚend_positionsrí   rs  r—   r\   rt  r¾   r÷   r¹  rã  rø  rù  râ  ræ  r  s                          rS   r^   z%TFLayoutLMv3ForQuestionAnswering.callz  s2  € ðB &1Ð%<‘kÀ$Ç+Á+×B]ÑB]ˆà—/‘/ØØ)Ø)Ø%ØØ'Ø/Ø!5Ø#ØØ%Øð "ó 
ˆð " !™*ˆà—‘ ¸8�ÓDˆÜ#%§8¡8°&ÈQÐUWÔ#XÑ ˆ�jÜ—z‘z¨¸2Ô>ˆÜ—Z‘Z j°rÔ:ˆ
àˆàÐ&¨=Ð+DØ(7ÈÑWˆFØ×'Ñ'¨¸ÀjÐ7QÐ'ÓRˆDáØ" JÐ/°'¸!¸"°+Ñ=ˆFØ)-Ð)9�T�G˜fÑ$ÐE¸vÐEä-ØØ%Ø!Ø!×/Ñ/Ø×)Ñ)ô
ð 	
rT   c                óÆ  — | j                   ry d| _         t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �Nt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       y y # 1 sw Y   ŒexY w# 1 sw Y   y xY w)NTrÀ  rò  )r`   ra   rY   rb   rÀ  r?   rc   rò  re   s     rS   rc   z&TFLayoutLMv3ForQuestionAnswering.buildå  rè  r   rg   )NNNNNNNNNNNNNF)r¶   rÃ   rë   rÃ   rÁ   rÃ   r¯   rÃ   rì   rÃ   rº   rÃ   rü  rÃ   rý  rÃ   rí   r¼  rs  r¼  r—   rÃ   r\   rÃ   rt  r¼  r¾   rÄ   rj   z¯Union[TFQuestionAnsweringModelOutput, Tuple[tf.Tensor], Tuple[tf.Tensor, tf.Tensor], Tuple[tf.Tensor, tf.Tensor, tf.Tensor], Tuple[tf.Tensor, tf.Tensor, tf.Tensor, tf.Tensor]]rk   )rm   rn   ro   rÎ  rB   r   r   rÏ  r   r   rÐ  r^   rc   rq   rr   s   @rS   rð  rð  f  s   ø„ ð +:Ð):Ð&õTð Ù*Ð+FÓGÙÐ+IÐXgÔhð '+Ø+/Ø+/Ø)-Ø&*Ø*.Ø,0Ø*.Ø,0Ø/3Ø!%Ø)-Ø&*Øðf
à#ðf
ð )ðf
ð )ð	f
ð
 'ðf
ð $ðf
ð (ðf
ð *ðf
ð (ðf
ð *ðf
ð -ðf
ð ðf
ð 'ðf
ð $ðf
ð ðf
ð 
ò!f
ó ió Hó ðf
÷P	,rT   rð  )rð  rÜ  rë  rÈ  r¿  )=rp   Ú
__future__r   rE   rÒ   Útypingr   r   r   r   Ú
tensorflowrY   Úactivations_tfr	   Úmodeling_tf_outputsr
   r   r   r   Úmodeling_tf_utilsr   r   r   r   r   r   r   r   Útf_utilsr   Úutilsr   r   r   Úconfiguration_layoutlmv3r   rÐ  Ú_DUMMY_INPUT_IDSÚ_DUMMY_BBOXr§  rH   ÚLayerr3   rt   rÆ   rý   r  r"  r+  r0  r;  r}  r¿  ÚLAYOUTLMV3_START_DOCSTRINGrÏ  rÈ  rÒ  rÜ  rë  rð  Ú__all__r@   rT   rS   ú<module>r     sŒ  ðñ å "ã Û ß /Ó /ã å /÷ó ÷	÷ 	ó 	õ 7ß kÑ kÝ 6ð %€ò ÚðÐ ò ’<¢Ð1ÚÒ'Ò)9Ð:ð€ð €ô'N %§,¡,×"4Ñ"4ô 'NôT~7 §¡×!3Ñ!3ô ~7ôB|H §¡× 2Ñ 2ô |Hô@L˜UŸ\™\×/Ñ/ô Lô<&-˜EŸL™L×.Ñ.ô &-ôTH˜uŸ|™|×1Ñ1ô Hô<L˜Ÿ™×+Ñ+ô Lô<--˜Ÿ™×*Ñ*ô --ô`j&˜%Ÿ,™,×,Ñ,ô j&ðZ ôO
˜EŸL™L×.Ñ.ó O
ó ðO
ôd
Ð"3ô ð 'Ð ðRJÐ ñZ ØjØóôN,Ð3ó N,ó	ðN,ôb.K U§\¡\×%7Ñ%7ô .Kñb ðð
 óôg,Ð,GÐIeó g,óðg,ñT ðð óô~MÐ)DÐF_ó ~Móð~MñB ðð
 óô@,Ð'BÐD[ó @,óð@,òF�rT   