§
    ‚Štjœ  ã                   ó@  — d Z ddlZddlmZ ddl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 dd
lmZ ddlmZmZmZ ddlmZ ddlmZ ddlmZ ddlmZmZmZmZm Z  ddl!m"Z" ddl#m$Z$m%Z% ddl&m'Z'  e j(        e)¦  «        Z* ed¬¦  «        e G d„ de¦  «        ¦   «         ¦   «         Z+ G d„ dej,        ¦  «        Z- G d„ dej,        ¦  «        Z. G d„ dej,        ¦  «        Z/ G d„ dej,        ¦  «        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j,        ¦  «        Z5 G d*„ d+e¦  «        Z6 G d,„ d-ej,        ¦  «        Z7 G d.„ d/ej,        ¦  «        Z8e G d0„ d1e¦  «        ¦   «         Z9 G d2„ d3e9¦  «        Z:e G d4„ d5e9¦  «        ¦   «         Z;e G d6„ d7e9¦  «        ¦   «         Z< ed8¬¦  «         G d9„ d:e9¦  «        ¦   «         Z= ed;¬¦  «         G d<„ d=e9¦  «        ¦   «         Z>g d>¢Z?dS )?zPyTorch Bros model.é    N)Ú	dataclass)Únn)ÚCrossEntropyLossé   )Úinitialization)ÚACT2FN)Úcreate_bidirectional_mask)ÚGradientCheckpointingLayer)Ú"BaseModelOutputWithCrossAttentionsÚ,BaseModelOutputWithPoolingAndCrossAttentionsÚTokenClassifierOutput)ÚPreTrainedModel)ÚUnpack)Úapply_chunking_to_forward)ÚModelOutputÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚlogging)Úmerge_with_config_defaults)ÚOutputRecorderÚcapture_outputsé   )Ú
BrosConfigz@
    Base class for outputs of token classification models.
    )Úcustom_introc                   óÂ   — e Zd ZU dZdZej        dz  ed<   dZej        dz  ed<   dZ	ej        dz  ed<   dZ
eej                 dz  ed<   dZeej                 dz  ed<   dS )ÚBrosSpadeOutputaò  
    loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `labels` is provided):
        Classification loss.
    initial_token_logits (`torch.FloatTensor` of shape `(batch_size, sequence_length, config.num_labels)`):
        Classification scores for entity initial tokens (before SoftMax).
    subsequent_token_logits (`torch.FloatTensor` of shape `(batch_size, sequence_length, sequence_length+1)`):
        Classification scores for entity sequence tokens (before SoftMax).
    NÚlossÚinitial_token_logitsÚsubsequent_token_logitsÚhidden_statesÚ
attentions)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚtorchÚFloatTensorÚ__annotations__r   r    r!   Útupler"   © ó    úd/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/bros/modeling_bros.pyr   r   ,   s¢   € € € € € € ðð ð &*€Dˆ%Ô
˜dÑ
"Ð)Ð)Ñ)Ø59Ð˜%Ô+¨dÑ2Ð9Ð9Ñ9Ø8<Ð˜UÔ.°Ñ5Ð<Ð<Ñ<Ø59€M�5˜Ô*Ô+¨dÑ2Ð9Ð9Ñ9Ø26€J��eÔ'Ô(¨4Ñ/Ð6Ð6Ñ6Ð6Ð6r,   r   c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚBrosPositionalEmbedding1Dc                 óÞ   •— t          ¦   «                              ¦   «          |j        | _        ddt          j        d| j        d¦  «        | j        z  z  z  }|                      d|¦  «         d S )Nr   é'  ç        ç       @Úinv_freq)ÚsuperÚ__init__Údim_bbox_sinusoid_emb_1dr'   ÚarangeÚregister_buffer)ÚselfÚconfigr4   Ú	__class__s      €r-   r6   z"BrosPositionalEmbedding1D.__init__F   sm   ø€ Ý‰Œ×ÒÑÔÐà(.Ô(GˆÔ%àØ•e”l 3¨Ô(EÀsÑKÔKÈdÔNkÑkÑlñ
ˆð 	×Ò˜Z¨Ñ2Ô2Ð2Ð2Ð2r,   Úpos_seqÚreturnc                 ó.  — |                      ¦   «         }|\  }}}|                     |||d¦  «        | j                             ddd| j        dz  ¦  «        z  }t	          j        |                     ¦   «         |                     ¦   «         gd¬¦  «        }|S )Nr   é   éÿÿÿÿ©Údim)ÚsizeÚviewr4   r7   r'   ÚcatÚsinÚcos)r:   r=   Úseq_sizeÚb1Úb2Úb3Úsinusoid_inpÚpos_embs           r-   Úforwardz!BrosPositionalEmbedding1D.forwardP   sŒ   € Ø—<’<‘>”>ˆØ‰
ˆˆB�Ø—|’| B¨¨B°Ñ2Ô2°T´]×5GÒ5GÈÈ1ÈaÐQUÔQnÐrsÑQsÑ5tÔ5tÑtˆÝ”)˜\×-Ò-Ñ/Ô/°×1AÒ1AÑ1CÔ1CÐDÈ"ÐMÑMÔMˆØˆr,   ©r#   r$   r%   r6   r'   ÚTensorrO   Ú__classcell__©r<   s   @r-   r/   r/   C   s^   ø€ € € € € ð3ð 3ð 3ð 3ð 3ð˜uœ|ð °´ð ð ð ð ð ð ð ð r,   r/   c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚBrosPositionalEmbedding2Dc                 ó°   •— t          ¦   «                              ¦   «          |j        | _        t          |¦  «        | _        t          |¦  «        | _        d S ©N)r5   r6   Údim_bboxr/   Ú	x_pos_embÚ	y_pos_emb©r:   r;   r<   s     €r-   r6   z"BrosPositionalEmbedding2D.__init__Y   sD   ø€ Ý‰Œ×ÒÑÔÐàœˆŒÝ2°6Ñ:Ô:ˆŒÝ2°6Ñ:Ô:ˆŒˆˆr,   Úbboxr>   c                 ó8  — g }t          | j        ¦  «        D ]l}|dz  dk    r1|                     |                      |d|f         ¦  «        ¦  «         Œ<|                     |                      |d|f         ¦  «        ¦  «         Œmt          j        |d¬¦  «        }|S )Nr@   r   .rA   rB   )ÚrangerX   ÚappendrY   rZ   r'   rF   )r:   r\   ÚstackÚiÚbbox_pos_embs        r-   rO   z!BrosPositionalEmbedding2D.forward`   s™   € ØˆÝ�t”}Ñ%Ô%ð 	;ð 	;ˆAØ�1‰u˜ŠzˆzØ—’˜TŸ^š^¨D°°a°¬LÑ9Ô9Ñ:Ô:Ð:Ð:à—’˜TŸ^š^¨D°°a°¬LÑ9Ô9Ñ:Ô:Ð:Ð:Ý”y ¨BÐ/Ñ/Ô/ˆØÐr,   rP   rS   s   @r-   rU   rU   X   s^   ø€ € € € € ð;ð ;ð ;ð ;ð ;ð˜EœLð ¨U¬\ð ð ð ð ð ð ð ð r,   rU   c                   ó4   ‡ — e Zd Zˆ fd„Zdej        fd„Zˆ xZS )ÚBrosBboxEmbeddingsc                 ó¼   •— t          ¦   «                              ¦   «          t          |¦  «        | _        t	          j        |j        |j        d¬¦  «        | _        d S )NF)Úbias)	r5   r6   rU   Úbbox_sinusoid_embr   ÚLinearÚdim_bbox_sinusoid_emb_2dÚdim_bbox_projectionÚbbox_projectionr[   s     €r-   r6   zBrosBboxEmbeddings.__init__l   sO   ø€ Ý‰Œ×ÒÑÔÐÝ!:¸6Ñ!BÔ!BˆÔÝ!œy¨Ô)HÈ&ÔJdÐkpÐqÑqÔqˆÔÐÐr,   r\   c                 óÐ   — |                      dd¦  «        }|d d d …d d …d d …f         |d d …d d d …d d …f         z
  }|                      |¦  «        }|                      |¦  «        }|S )Nr   r   )Ú	transposerg   rk   )r:   r\   Úbbox_tÚbbox_posrb   s        r-   rO   zBrosBboxEmbeddings.forwardq   s}   € Ø—’  1Ñ%Ô%ˆØ˜$    1 1 1 a a a˜-Ô(¨6°!°!°!°T¸1¸1¸1¸a¸a¸a°-Ô+@Ñ@ˆØ×-Ò-¨hÑ7Ô7ˆØ×+Ò+¨LÑ9Ô9ˆàÐr,   rP   rS   s   @r-   rd   rd   k   sZ   ø€ € € € € ðrð rð rð rð rð
˜EœLð ð ð ð ð ð ð ð r,   rd   c                   ó’   ‡ — e Zd ZdZˆ fd„Z	 	 	 	 d
dej        dz  dej        dz  dej        dz  dej        dz  dej        f
d	„Zˆ xZS )ÚBrosTextEmbeddingszGConstruct the embeddings from word, position and token_type embeddings.c                 óä  •— t          ¦   «                              ¦   «          t          j        |j        |j        |j        ¬¦  «        | _        t          j        |j        |j        ¦  «        | _	        t          j        |j
        |j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t          j        |j        ¦  «        | _        |                      dt%          j        |j        ¦  «                             d¦  «        ¦  «         |                      dt%          j        | j                             ¦   «         t$          j        | j        j        ¬¦  «        d¬¦  «         d S )	N)Úpadding_idx©ÚepsÚposition_ids©r   rA   Útoken_type_ids©ÚdtypeÚdeviceF)Ú
persistent)r5   r6   r   Ú	EmbeddingÚ
vocab_sizeÚhidden_sizeÚpad_token_idÚword_embeddingsÚmax_position_embeddingsÚposition_embeddingsÚtype_vocab_sizeÚtoken_type_embeddingsÚ	LayerNormÚlayer_norm_epsÚDropoutÚhidden_dropout_probÚdropoutr9   r'   r8   ÚexpandÚzerosrv   rD   Úlongr{   r[   s     €r-   r6   zBrosTextEmbeddings.__init__}   s6  ø€ Ý‰Œ×ÒÑÔÐå!œ|¨FÔ,=¸vÔ?QÐ_eÔ_rÐsÑsÔsˆÔÝ#%¤<°Ô0NÐPVÔPbÑ#cÔ#cˆÔ Ý%'¤\°&Ô2HÈ&ÔJ\Ñ%]Ô%]ˆÔ"åœ fÔ&8¸fÔ>SÐTÑTÔTˆŒÝ”z &Ô"<Ñ=Ô=ˆŒà×Ò˜^­U¬\¸&Ô:XÑ-YÔ-Y×-`Ò-`ÐahÑ-iÔ-iÑjÔjÐjØ×ÒØÝŒKØÔ!×&Ò&Ñ(Ô(Ý”jØÔ(Ô/ðñ ô ð
 ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r,   NÚ	input_idsrx   rv   Úinputs_embedsr>   c                 ón  — |�|                      ¦   «         }n|                      ¦   «         d d…         }|d         }|€| j        d d …d |…f         }|€mt          | d¦  «        r2| j        d d …d |…f         }|                     |d         |¦  «        }|}n+t          j        |t
          j        | j        j        ¬¦  «        }|€|  	                    |¦  «        }|  
                    |¦  «        }	||	z   }
|                      |¦  «        }|
|z  }
|                      |
¦  «        }
|                      |
¦  «        }
|
S )NrA   r   rx   r   ry   )rD   rv   Úhasattrrx   r‹   r'   rŒ   r�   r{   r�   r…   rƒ   r†   rŠ   )r:   rŽ   rx   rv   r�   Úinput_shapeÚ
seq_lengthÚbuffered_token_type_idsÚ buffered_token_type_ids_expandedr…   Ú
embeddingsrƒ   s               r-   rO   zBrosTextEmbeddings.forward’   sT  € ð Ð Ø#Ÿ.š.Ñ*Ô*ˆKˆKà'×,Ò,Ñ.Ô.¨s°¨sÔ3ˆKà  ”^ˆ
àÐØÔ,¨Q¨Q¨Q°°°¨^Ô<ˆLàÐ!Ý�tÐ-Ñ.Ô.ð mØ*.Ô*=¸a¸a¸aÀÀ*À¸nÔ*MÐ'Ø3J×3QÒ3QÐR]Ð^_ÔR`ÐblÑ3mÔ3mÐ0Ø!A��å!&¤¨[ÅÄ
ÐSWÔSdÔSkÐ!lÑ!lÔ!l�àÐ Ø ×0Ò0°Ñ;Ô;ˆMØ $× :Ò :¸>Ñ JÔ JÐØ"Ð%:Ñ:ˆ
à"×6Ò6°|ÑDÔDÐØÐ)Ñ)ˆ
à—^’^ JÑ/Ô/ˆ
Ø—\’\ *Ñ-Ô-ˆ
ØÐr,   )NNNN)	r#   r$   r%   r&   r6   r'   rQ   rO   rR   rS   s   @r-   rq   rq   z   s³   ø€ € € € € ØQÐQð
ð 
ð 
ð 
ð 
ð. *.Ø.2Ø,0Ø-1ð#ð #à”< $Ñ&ð#ð œ tÑ+ð#ð ”l TÑ)ð	#ð
 ”| dÑ*ð#ð 
Œð#ð #ð #ð #ð #ð #ð #ð #r,   rq   c                   ó    ‡ — e Zd Zˆ fd„Z	 	 	 d
dej        dej        dej        dz  dej        dz  dej        dz  deej                 fd	„Zˆ xZS )ÚBrosSelfAttentionc                 ó|  •— 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        | _        d S )Nr   Úembedding_sizezThe hidden size (z6) is not a multiple of the number of attention heads (ú))r5   r6   r   Únum_attention_headsr‘   Ú
ValueErrorÚintÚattention_head_sizeÚall_head_sizer   rh   ÚqueryÚkeyÚvaluerˆ   Úattention_probs_dropout_probrŠ   Ú
is_decoderr[   s     €r-   r6   zBrosSelfAttention.__init__¹   s#  ø€ Ý‰Œ×ÒÑÔÐØÔ Ô :Ñ:¸aÒ?Ð?ÍÐPVÐXhÑHiÔHiÐ?Ýð8 FÔ$6ð 8ð 8Ø Ô4ð8ð 8ð 8ñô ð ð
 $*Ô#=ˆÔ Ý#& vÔ'9¸FÔ<VÑ'VÑ#WÔ#WˆÔ Ø!Ô5¸Ô8PÑPˆÔå”Y˜vÔ1°4Ô3EÑFÔFˆŒ
Ý”9˜VÔ/°Ô1CÑDÔDˆŒÝ”Y˜vÔ1°4Ô3EÑFÔFˆŒ
å”z &Ô"EÑFÔFˆŒà Ô+ˆŒˆˆr,   Nr!   rb   Úattention_maskÚencoder_hidden_statesÚencoder_attention_maskr>   c                 ó2  — |j         d         d| j        | j        f}|                      |¦  «                             |¦  «                             dd¦  «        }|d u}|r{|                      |¦  «                             |¦  «                             dd¦  «        }	|                      |¦  «                             |¦  «                             dd¦  «        }
|}nx|                      |¦  «                             |¦  «                             dd¦  «        }	|                      |¦  «                             |¦  «                             dd¦  «        }
t          j	        ||	                     dd¦  «        ¦  «        }|j         \  }}}}|                     ||||¦  «        }| 
                    g d¢¦  «        }t          j        d||f¦  «        }||z   }|t          j        | j        ¦  «        z  }|�||z   } t          j        d¬¦  «        |¦  «        }|                      |¦  «        }t          j	        ||
¦  «        }| 
                    dddd	¦  «                             ¦   «         }|                     ¦   «         d d…         | j        fz   } |j        |Ž }||fS )
Nr   rA   r   r@   éþÿÿÿ)r@   r   r   r   zbnid,bijd->bnijrB   r   )Úshaperœ   rŸ   r¡   rE   rm   r¢   r£   r'   ÚmatmulÚpermuteÚeinsumÚmathÚsqrtr   ÚSoftmaxrŠ   Ú
contiguousrD   r    )r:   r!   rb   r¦   r§   r¨   Úhidden_shapeÚquery_layerÚis_cross_attentionÚ	key_layerÚvalue_layerÚattention_scoresÚ
batch_sizeÚn_headr“   Úd_headÚbbox_pos_scoresÚattention_probsÚcontext_layerÚnew_context_layer_shapes                       r-   rO   zBrosSelfAttention.forwardÍ   s�  € ð &Ô+¨AÔ.°°DÔ4LÈdÔNfÐgˆØ—j’j Ñ/Ô/×4Ò4°\ÑBÔB×LÒLÈQÐPQÑRÔRˆð
 3¸$Ð>Ðàð 	WØŸšÐ!6Ñ7Ô7×<Ò<¸\ÑJÔJ×TÒTÐUVÐXYÑZÔZˆIØŸ*š*Ð%:Ñ;Ô;×@Ò@ÀÑNÔN×XÒXÐYZÐ\]Ñ^Ô^ˆKØ3ˆNˆNàŸš Ñ/Ô/×4Ò4°\ÑBÔB×LÒLÈQÐPQÑRÔRˆIØŸ*š* ]Ñ3Ô3×8Ò8¸ÑFÔF×PÒPÐQRÐTUÑVÔVˆKõ !œ<¨°Y×5HÒ5HÈÈRÑ5PÔ5PÑQÔQÐð 2=Ô1BÑ.ˆ
�F˜J¨Ø#×(Ò(¨°ZÀÈVÑTÔTˆØ#×+Ò+¨L¨L¨LÑ9Ô9ˆÝœ,Ð'8¸;ÈÐ:UÑVÔVˆà+¨oÑ=Ðà+­d¬i¸Ô8PÑ.QÔ.QÑQÐØÐ%à/°.Ñ@Ðð -�"œ*¨Ð,Ñ,Ô,Ð-=Ñ>Ô>ˆð Ÿ,š, Ñ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Ð-Ð-r,   ©NNN)	r#   r$   r%   r6   r'   rQ   r*   rO   rR   rS   s   @r-   r˜   r˜   ¸   s¶   ø€ € € € € ð,ð ,ð ,ð ,ð ,ð0 /3Ø59Ø6:ð5.ð 5.à”|ð5.ð ”lð5.ð œ tÑ+ð	5.ð
  %œ|¨dÑ2ð5.ð !&¤¨tÑ 3ð5.ð 
ˆuŒ|Ô	ð5.ð 5.ð 5.ð 5.ð 5.ð 5.ð 5.ð 5.r,   r˜   c                   óP   ‡ — e Zd Zˆ fd„Zdej        dej        dej        fd„Zˆ xZS )ÚBrosSelfOutputc                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t          j        |j	        ¦  «        | _
        d S ©Nrt   )r5   r6   r   rh   r   Údenser†   r‡   rˆ   r‰   rŠ   r[   s     €r-   r6   zBrosSelfOutput.__init__  sf   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3EÑFÔFˆŒ
Ýœ fÔ&8¸fÔ>SÐTÑTÔTˆŒÝ”z &Ô"<Ñ=Ô=ˆŒˆˆr,   r!   Úinput_tensorr>   c                 óŠ   — |                       |¦  «        }|                      |¦  «        }|                      ||z   ¦  «        }|S rW   ©rÅ   rŠ   r†   ©r:   r!   rÆ   s      r-   rO   zBrosSelfOutput.forward  ó@   € ØŸ
š
 =Ñ1Ô1ˆØŸš ]Ñ3Ô3ˆØŸš }°|Ñ'CÑDÔDˆØÐr,   rP   rS   s   @r-   rÂ   rÂ     ói   ø€ € € € € ð>ð >ð >ð >ð >ð U¤\ð ÀÄð ÐRWÔR^ð ð ð ð ð ð ð ð r,   rÂ   c                   ó”   ‡ — e Zd Zˆ fd„Z	 	 	 d
dej        dej        dej        dz  dej        dz  dej        dz  dej        fd	„Zˆ xZS )ÚBrosAttentionc                 ó˜   •— t          ¦   «                              ¦   «          t          |¦  «        | _        t	          |¦  «        | _        d S rW   )r5   r6   r˜   r:   rÂ   Úoutputr[   s     €r-   r6   zBrosAttention.__init__  s;   ø€ Ý‰Œ×ÒÑÔÐÝ% fÑ-Ô-ˆŒ	Ý$ VÑ,Ô,ˆŒˆˆr,   Nr!   rb   r¦   r§   r¨   r>   c                 óp   — |}|                       |||||¬¦  «        \  }}|                      ||¦  «        }|S )N©rb   r¦   r§   r¨   )r:   rÏ   )r:   r!   rb   r¦   r§   r¨   ÚresidualÚ_s           r-   rO   zBrosAttention.forward  sP   € ð !ˆØŸ9š9ØØ%Ø)Ø"7Ø#9ð %ñ 
ô 
Ñˆ�qð Ÿš M°8Ñ<Ô<ˆØÐr,   rÀ   rP   rS   s   @r-   rÍ   rÍ     s±   ø€ € € € € ð-ð -ð -ð -ð -ð /3Ø59Ø6:ðð à”|ðð ”lðð œ tÑ+ð	ð
  %œ|¨dÑ2ðð !&¤¨tÑ 3ðð 
Œðð ð ð ð ð ð ð r,   rÍ   c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚBrosIntermediatec                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          |j        t          ¦  «        rt          |j                 | _        d S |j        | _        d S rW   )r5   r6   r   rh   r   Úintermediate_sizerÅ   Ú
isinstanceÚ
hidden_actÚstrr   Úintermediate_act_fnr[   s     €r-   r6   zBrosIntermediate.__init__0  sn   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3KÑLÔLˆŒ
Ý�fÔ'­Ñ-Ô-ð 	9Ý'-¨fÔ.?Ô'@ˆDÔ$Ð$Ð$à'-Ô'8ˆDÔ$Ð$Ð$r,   r!   r>   c                 óZ   — |                       |¦  «        }|                      |¦  «        }|S rW   )rÅ   rÛ   )r:   r!   s     r-   rO   zBrosIntermediate.forward8  s,   € ØŸ
š
 =Ñ1Ô1ˆØ×0Ò0°Ñ?Ô?ˆØÐr,   rP   rS   s   @r-   rÕ   rÕ   /  s^   ø€ € € € € ð9ð 9ð 9ð 9ð 9ð U¤\ð °e´lð ð ð ð ð ð ð ð r,   rÕ   c                   óP   ‡ — e Zd Zˆ fd„Zdej        dej        dej        fd„Zˆ xZS )Ú
BrosOutputc                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t          j	        |j
        ¦  «        | _        d S rÄ   )r5   r6   r   rh   r×   r   rÅ   r†   r‡   rˆ   r‰   rŠ   r[   s     €r-   r6   zBrosOutput.__init__?  sf   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ7¸Ô9KÑLÔLˆŒ
Ýœ fÔ&8¸fÔ>SÐTÑTÔTˆŒÝ”z &Ô"<Ñ=Ô=ˆŒˆˆr,   r!   rÆ   r>   c                 óŠ   — |                       |¦  «        }|                      |¦  «        }|                      ||z   ¦  «        }|S rW   rÈ   rÉ   s      r-   rO   zBrosOutput.forwardE  rÊ   r,   rP   rS   s   @r-   rÞ   rÞ   >  rË   r,   rÞ   c                   óª   ‡ — e Zd Zˆ fd„Z	 	 	 ddej        dej        dej        dz  dej        dz  dej        dz  dee         d	ej        fd
„Z	d„ Z
ˆ xZS )Ú	BrosLayerc                 ó~  •— t          ¦   «                              ¦   «          |j        | _        d| _        t	          |¦  «        | _        |j        | _        |j        | _        | j        r-| j        st          | › d�¦  «        ‚t	          |¦  «        | _	        t          |¦  «        | _        t          |¦  «        | _        d S )Nr   z> should be used as a decoder model if cross attention is added)r5   r6   Úchunk_size_feed_forwardÚseq_len_dimrÍ   Ú	attentionr¥   Úadd_cross_attentionÚ	ExceptionÚcrossattentionrÕ   ÚintermediaterÞ   rÏ   r[   s     €r-   r6   zBrosLayer.__init__M  s°   ø€ Ý‰Œ×ÒÑÔÐØ'-Ô'EˆÔ$ØˆÔÝ& vÑ.Ô.ˆŒØ Ô+ˆŒØ#)Ô#=ˆÔ ØÔ#ð 	8Ø”?ð iÝ 4Ð gÐ gÐ gÑhÔhÐhÝ"/°Ñ"7Ô"7ˆDÔÝ,¨VÑ4Ô4ˆÔÝ  Ñ(Ô(ˆŒˆˆr,   Nr!   rb   r¦   r§   r¨   Úkwargsr>   c                 óú   — |                       |||¬¦  «        }| j        r:|�8t          | d¦  «        rt          d| › d�¦  «        ‚ | j        |f|||dœ|¤Ž\  }}t          | j        | j        | j        |¦  «        }|S )N)rb   r¦   ré   z'If `encoder_hidden_states` are passed, z` has to be instantiated with cross-attention layers by setting `config.add_cross_attention=True`)r¦   r§   r¨   )	ræ   r¥   r‘   rè   ré   r   Úfeed_forward_chunkrä   rå   )r:   r!   rb   r¦   r§   r¨   rë   rÓ   s           r-   rO   zBrosLayer.forward[  sß   € ð ŸšØØ%Ø)ð 'ñ 
ô 
ˆð Œ?ð 	Ð4Ð@Ý�tÐ-Ñ.Ô.ð Ýð e¸dð  eð  eð  eñô ð ð  3˜tÔ2Øð à-Ø&;Ø'=ð	 ð  ð
 ð ð  ÑˆM˜1õ 2ØÔ#ØÔ(ØÔØñ	
ô 
ˆð Ðr,   c                 ó\   — |                       |¦  «        }|                      ||¦  «        }|S rW   )rê   rÏ   )r:   Úattention_outputÚintermediate_outputÚlayer_outputs       r-   rí   zBrosLayer.feed_forward_chunk�  s2   € Ø"×/Ò/Ð0@ÑAÔAÐØ—{’{Ð#6Ð8HÑIÔIˆØÐr,   rÀ   )r#   r$   r%   r6   r'   rQ   r(   r   r   rO   rí   rR   rS   s   @r-   râ   râ   L  sÔ   ø€ € € € € ð)ð )ð )ð )ð )ð$ 48Ø:>Ø;?ð$ð $à”|ð$ð ”lð$ð Ô)¨DÑ0ð	$ð
  %Ô0°4Ñ7ð$ð !&Ô 1°DÑ 8ð$ð Ð+Ô,ð$ð 
Œð$ð $ð $ð $ðLð ð ð ð ð ð r,   râ   c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )Ú
BrosPoolerc                 óÀ   •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        ¦   «         | _        d S rW   )r5   r6   r   rh   r   rÅ   ÚTanhÚ
activationr[   s     €r-   r6   zBrosPooler.__init__‰  sC   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3EÑFÔFˆŒ
Ýœ'™)œ)ˆŒˆˆr,   r!   r>   c                 ór   — |d d …df         }|                       |¦  «        }|                      |¦  «        }|S )Nr   )rÅ   rö   )r:   r!   Úfirst_token_tensorÚpooled_outputs       r-   rO   zBrosPooler.forwardŽ  s@   € ð +¨1¨1¨1¨a¨4Ô0ÐØŸ
š
Ð#5Ñ6Ô6ˆØŸš¨Ñ6Ô6ˆØÐr,   rP   rS   s   @r-   ró   ró   ˆ  s^   ø€ € € € € ð$ð $ð $ð $ð $ð
 U¤\ð °e´lð ð ð ð ð ð ð ð r,   ró   c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚBrosRelationExtractorc                 óö  •— t          ¦   «                              ¦   «          |j        | _        |j        | _        |j        | _        |j        | _        t          j        | j        ¦  «        | _	        t          j
        | j        | j        | j        z  ¦  «        | _        t          j
        | j        | j        | j        z  ¦  «        | _        t          j        t          j        d| j        ¦  «        ¦  «        | _        d S )Nr   )r5   r6   Ún_relationsr   Úbackbone_hidden_sizeÚhead_hidden_sizeÚclassifier_dropout_probr   rˆ   Údroprh   r¡   r¢   Ú	Parameterr'   rŒ   Ú
dummy_noder[   s     €r-   r6   zBrosRelationExtractor.__init__˜  s¿   ø€ Ý‰Œ×ÒÑÔÐØ!Ô-ˆÔØ$*Ô$6ˆÔ!Ø &Ô 2ˆÔØ'-Ô'EˆÔ$å”J˜tÔ;Ñ<Ô<ˆŒ	Ý”Y˜tÔ8¸$Ô:JÈTÔMbÑ:bÑcÔcˆŒ
å”9˜TÔ6¸Ô8HÈ4ÔK`Ñ8`ÑaÔaˆŒåœ,¥u¤{°1°dÔ6OÑ'PÔ'PÑQÔQˆŒˆˆr,   r´   r¶   c           	      óü  — |                       |                      |¦  «        ¦  «        }| j                             d¦  «                             d|                     d¦  «        d¦  «        }t          j        ||gd¬¦  «        }|                      |                      |¦  «        ¦  «        }| 	                    |                     d¦  «        |                     d¦  «        | j
        | j        ¦  «        }| 	                    |                     d¦  «        |                     d¦  «        | j
        | j        ¦  «        }t          j        |                     dddd¦  «        |                     dddd¦  «        ¦  «        }|S )Nr   r   ©Úaxisr@   r   )r¡   r  r  Ú	unsqueezeÚrepeatrD   r'   rF   r¢   rE   rý   rÿ   r¬   r­   )r:   r´   r¶   Ú	dummy_vecÚrelation_scores        r-   rO   zBrosRelationExtractor.forward¦  sF  € Ø—j’j §¢¨;Ñ!7Ô!7Ñ8Ô8ˆà”O×-Ò-¨aÑ0Ô0×7Ò7¸¸9¿>º>È!Ñ;LÔ;LÈaÑPÔPˆ	Ý”I˜y¨)Ð4¸1Ð=Ñ=Ô=ˆ	Ø—H’H˜TŸYšY yÑ1Ô1Ñ2Ô2ˆ	à!×&Ò&Ø×Ò˜QÑÔ ×!1Ò!1°!Ñ!4Ô!4°dÔ6FÈÔH]ñ
ô 
ˆð —N’N 9§>¢>°!Ñ#4Ô#4°i·n²nÀQÑ6GÔ6GÈÔIYÐ[_Ô[pÑqÔqˆ	åœØ×Ò  1 a¨Ñ+Ô+¨Y×->Ò->¸qÀ!ÀQÈÑ-JÔ-Jñ
ô 
ˆð Ðr,   rP   rS   s   @r-   rû   rû   —  sc   ø€ € € € € ðRð Rð Rð Rð Rð 5¤<ð ¸E¼Lð ð ð ð ð ð ð ð r,   rû   c                   ó¤   ‡ — e Zd ZU eed<   dZe eedd¬¦  «         eedd¬¦  «        dœZ	 e
j        ¦   «         dej        fˆ fd	„¦   «         Zˆ xZS )
ÚBrosPreTrainedModelr;   Úbrosr   ræ   )ÚindexÚ
layer_nameré   )r!   r"   Úcross_attentionsÚmodulec                 óx  •— t          ¦   «                              |¦  «         | j        j        }t	          |t
          ¦  «        rt          j        |j        |¬¦  «         dS t	          |t          ¦  «        rjt          j
        |j        t          j        |j        j        d         ¦  «                             d¦  «        ¦  «         t          j        |j        ¦  «         dS t	          |t$          ¦  «        rEddt          j        d|j        d¦  «        |j        z  z  z  }t          j
        |j        |¦  «         dS dS )	zInitialize the weights)ÚstdrA   rw   r   r1   r2   r3   N)r5   Ú_init_weightsr;   Úinitializer_rangerØ   rû   ÚinitÚnormal_r  rq   Úcopy_rv   r'   r8   r«   r‹   Úzeros_rx   r/   r7   r4   )r:   r  r  r4   r<   s       €r-   r  z!BrosPreTrainedModel._init_weightsÃ  s#  ø€ õ 	‰Œ×Ò˜fÑ%Ô%Ð%ØŒkÔ+ˆÝ�fÕ3Ñ4Ô4ð 		2ÝŒL˜Ô*°Ð4Ñ4Ô4Ð4Ð4Ð4Ý˜Õ 2Ñ3Ô3ð 	2ÝŒJ�vÔ*­E¬L¸Ô9LÔ9RÐSUÔ9VÑ,WÔ,W×,^Ò,^Ð_fÑ,gÔ,gÑhÔhÐhÝŒK˜Ô-Ñ.Ô.Ð.Ð.Ð.Ý˜Õ 9Ñ:Ô:ð 	2ØØ�%œ, s¨FÔ,KÈSÑQÔQÐTZÔTsÑsÑtñˆHõ ŒJ�v”¨Ñ1Ô1Ð1Ð1Ð1ð		2ð 	2r,   )r#   r$   r%   r   r)   Úbase_model_prefixrâ   r   r˜   Ú_can_record_outputsr'   Úno_gradr   ÚModuler  rR   rS   s   @r-   r  r  ¹  s©   ø€ € € € € € àÐÐÑØÐà"Ø$�nÐ%6¸aÈKÐXÑXÔXØ*˜NÐ+<ÀAÐRbÐcÑcÔcðð Ðð €U„]�_„_ð2 B¤Ið 2ð 2ð 2ð 2ð 2ñ „_ð2ð 2ð 2ð 2ð 2r,   r  c                   óÖ   ‡ — e Zd Zˆ fd„Zee	 	 	 ddej        dej        dej        dz  dej        dz  dej        dz  de	e
         d	eej                 ez  fd
„¦   «         ¦   «         Zˆ xZS )ÚBrosEncoderc                 óâ   •‡— t          ¦   «                              ‰¦  «         t          j        ˆfd„t	          ‰j        ¦  «        D ¦   «         ¦  «        | _        |                      ¦   «          d S )Nc                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS r+   )râ   )Ú.0rÓ   r;   s     €r-   ú
<listcomp>z(BrosEncoder.__init__.<locals>.<listcomp>×  s!   ø€ Ð#_Ð#_Ð#_¸!¥I¨fÑ$5Ô$5Ð#_Ð#_Ð#_r,   )r5   r6   r   Ú
ModuleListr^   Únum_hidden_layersÚlayerÚ	post_initr[   s    `€r-   r6   zBrosEncoder.__init__Õ  sc   øø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý”]Ð#_Ð#_Ð#_Ð#_½uÀVÔE]Ñ?^Ô?^Ð#_Ñ#_Ô#_Ñ`Ô`ˆŒ
Ø�ŠÑÔÐÐÐr,   Nr!   rb   r¦   r§   r¨   rë   r>   c           	      óR   — | j         D ]} ||f||||dœ|¤Ž}Œt          |¬¦  «        S )NrÑ   )Úlast_hidden_state)r&  r   )r:   r!   rb   r¦   r§   r¨   rë   Úlayer_modules           r-   rO   zBrosEncoder.forwardÚ  sg   € ð !œJð 	ð 	ˆLØ(˜LØðà)Ø-Ø&;Ø'=ðð ð ðð ˆMˆMõ 2Ø+ð
ñ 
ô 
ð 	
r,   rÀ   )r#   r$   r%   r6   r   r   r'   rQ   r(   r   r   r*   r   rO   rR   rS   s   @r-   r  r  Ô  sæ   ø€ € € € € ðð ð ð ð ð
  Øð
 48Ø:>Ø;?ð
ð 
à”|ð
ð ”lð
ð Ô)¨DÑ0ð	
ð
  %Ô0°4Ñ7ð
ð !&Ô 1°DÑ 8ð
ð Ð+Ô,ð
ð 
ˆuŒ|Ô	ÐAÑ	Að
ð 
ð 
ñ „_ñ  Ôð
ð 
ð 
ð 
ð 
r,   r  c                   ó6  ‡ — e Zd Zdˆ 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j	                 ez  fd„¦   «         ¦   «         Zˆ xZS )Ú	BrosModelTc                 ó(  •— t          ¦   «                              |¦  «         || _        t          |¦  «        | _        t          |¦  «        | _        t          |¦  «        | _        |rt          |¦  «        nd| _
        |                      ¦   «          dS )zv
        add_pooling_layer (bool, *optional*, defaults to `True`):
            Whether to add a pooling layer
        N)r5   r6   r;   rq   r–   rd   Úbbox_embeddingsr  Úencoderró   Úpoolerr'  )r:   r;   Úadd_pooling_layerr<   s      €r-   r6   zBrosModel.__init__ö  s�   ø€ õ
 	‰Œ×Ò˜Ñ Ô Ð ØˆŒå,¨VÑ4Ô4ˆŒÝ1°&Ñ9Ô9ˆÔÝ" 6Ñ*Ô*ˆŒà,=ÐG•j Ñ(Ô(Ð(À4ˆŒà�ŠÑÔÐÐÐr,   c                 ó   — | j         j        S rW   ©r–   r�   )r:   s    r-   Úget_input_embeddingszBrosModel.get_input_embeddings  s   € ØŒÔ.Ð.r,   c                 ó   — || j         _        d S rW   r3  )r:   r£   s     r-   Úset_input_embeddingszBrosModel.set_input_embeddings	  s   € Ø*/ˆŒÔ'Ð'Ð'r,   NrŽ   r\   r¦   rx   rv   r�   r§   r¨   rë   r>   c	                 óˆ  — |du |duz  rt          d¦  «        ‚|€t          d¦  «        ‚|                      ||||¬¦  «        }
|
j        dd…         }|
j        }|€t	          j        ||¬¦  «        }t          | j        |
|¬¦  «        }|�t          | j        |
||¬¦  «        }|j        d         d	k    r|dd…dd…g d
¢f         }|| j        j        z  }|  	                    |¦  «        } | j
        |
f||||dœ|	¤Ž}|d         }| j        �|                      |¦  «        nd}t          |||j        |j        |j        ¬¦  «        S )aÍ  
        bbox ('torch.FloatTensor' of shape '(batch_size, num_boxes, 4)'):
            Bounding box coordinates for each token in the input sequence. Each bounding box is a list of four values
            (x1, y1, x2, y2), where (x1, y1) is the top left corner, and (x2, y2) is the bottom right corner of the
            bounding box.

        Examples:

        ```python
        >>> import torch
        >>> from transformers import BrosProcessor, BrosModel

        >>> processor = BrosProcessor.from_pretrained("jinho8345/bros-base-uncased")

        >>> model = BrosModel.from_pretrained("jinho8345/bros-base-uncased")

        >>> encoding = processor("Hello, my dog is cute", add_special_tokens=False, return_tensors="pt")
        >>> bbox = torch.tensor([[[0, 0, 1, 1]]]).repeat(1, encoding["input_ids"].shape[-1], 1)
        >>> encoding["bbox"] = bbox

        >>> outputs = model(**encoding)
        >>> last_hidden_states = outputs.last_hidden_state
        ```Nz:You must specify exactly one of input_ids or inputs_embedszYou have to specify bbox)rŽ   rv   rx   r�   rA   )r{   )r;   r�   r¦   )r;   r�   r¦   r§   é   )r   r   r@   r   r@   r   r   r   rÑ   r   )r)  Úpooler_outputr!   r"   r  )r�   r–   r«   r{   r'   Úonesr	   r;   Ú
bbox_scaler.  r/  r0  r   r!   r"   r  )r:   rŽ   r\   r¦   rx   rv   r�   r§   r¨   rë   Úembedding_outputr’   r{   Úscaled_bboxÚbbox_position_embeddingsÚencoder_outputsÚsequence_outputrù   s                     r-   rO   zBrosModel.forward  sÉ  € ðJ ˜Ð -°tÐ";Ñ<ð 	[ÝÐYÑZÔZÐZàˆ<ÝÐ7Ñ8Ô8Ð8àŸ?š?ØØ%Ø)Ø'ð	 +ñ 
ô 
Ðð 'Ô,¨S¨b¨SÔ1ˆØ!Ô(ˆàÐ!Ý"œZ¨¸FÐCÑCÔCˆNå2Ø”;Ø*Ø)ð
ñ 
ô 
ˆð "Ð-Ý%>Ø”{Ø.Ø5Ø&;ð	&ñ &ô &Ð"ð Œ:�bŒ>˜QÒÐØ˜˜˜˜1˜1˜1Ð6Ð6Ð6Ð6Ô7ˆDØ˜Tœ[Ô3Ñ3ˆØ#'×#7Ò#7¸Ñ#DÔ#DÐ à>J¸d¼lØð?
à1Ø)Ø"7Ø#9ð?
ð ?
ð ð?
ð ?
ˆð *¨!Ô,ˆØ8<¼Ð8O˜Ÿš OÑ4Ô4Ð4ÐUYˆå;Ø-Ø'Ø)Ô7Ø&Ô1Ø,Ô=ð
ñ 
ô 
ð 	
r,   )T©NNNNNNNN)r#   r$   r%   r6   r4  r6  r   r   r'   rQ   r   r   r*   r   rO   rR   rS   s   @r-   r,  r,  ô  se  ø€ € € € € ðð ð ð ð ð ð /ð /ð /ð0ð 0ð 0ð Øð *.Ø$(Ø.2Ø.2Ø,0Ø-1Ø59Ø6:ð[
ð [
à”< $Ñ&ð[
ð Œl˜TÑ!ð[
ð œ tÑ+ð	[
ð
 œ tÑ+ð[
ð ”l TÑ)ð[
ð ”| dÑ*ð[
ð  %œ|¨dÑ2ð[
ð !&¤¨tÑ 3ð[
ð Ð+Ô,ð[
ð 
ˆuŒ|Ô	ÐKÑ	Kð[
ð [
ð [
ñ „^ñ Ôð[
ð [
ð [
ð [
ð [
r,   r,  c                   ó.  ‡ — e Zd ZdgZˆ f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j                 ez  fd„¦   «         ¦   «         Zˆ xZS )ÚBrosForTokenClassificationr0  c                 óh  •— t          ¦   «                              |¦  «         |j        | _        t          |¦  «        | _        t          |d¦  «        r|j        n|j        }t          j	        |¦  «        | _
        t          j        |j        |j        ¦  «        | _        |                      ¦   «          d S ©NÚclassifier_dropout)r5   r6   Ú
num_labelsr,  r  r‘   rF  r‰   r   rˆ   rŠ   rh   r   Ú
classifierr'  ©r:   r;   rF  r<   s      €r-   r6   z#BrosForTokenClassification.__init__p  s›   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø Ô+ˆŒå˜fÑ%Ô%ˆŒ	å)0°Ð9MÑ)NÔ)NÐnˆFÔ%Ð%ÐTZÔTnð 	õ ”zÐ"4Ñ5Ô5ˆŒÝœ) FÔ$6¸Ô8IÑJÔJˆŒà�ŠÑÔÐÐÐr,   NrŽ   r\   r¦   Úbbox_first_token_maskrx   rv   r�   Úlabelsrë   r>   c	           	      ó  —  | j         |f|||||dœ|	¤Ž}
|
d         }|                      |¦  «        }|                      |¦  «        }d}|�¢t          ¦   «         }|�Z|                     d¦  «        } ||                     d| j        ¦  «        |         |                     d¦  «        |         ¦  «        }n8 ||                     d| j        ¦  «        |                     d¦  «        ¦  «        }t          |||
j        |
j        ¬¦  «        S )aè  
        bbox ('torch.FloatTensor' of shape '(batch_size, num_boxes, 4)'):
            Bounding box coordinates for each token in the input sequence. Each bounding box is a list of four values
            (x1, y1, x2, y2), where (x1, y1) is the top left corner, and (x2, y2) is the bottom right corner of the
            bounding box.
        bbox_first_token_mask (`torch.FloatTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Mask to indicate the first token of each bounding box. Mask values selected in `[0, 1]`:

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

        Examples:

        ```python
        >>> import torch
        >>> from transformers import BrosProcessor, BrosForTokenClassification

        >>> processor = BrosProcessor.from_pretrained("jinho8345/bros-base-uncased")

        >>> model = BrosForTokenClassification.from_pretrained("jinho8345/bros-base-uncased")

        >>> encoding = processor("Hello, my dog is cute", add_special_tokens=False, return_tensors="pt")
        >>> bbox = torch.tensor([[[0, 0, 1, 1]]]).repeat(1, encoding["input_ids"].shape[-1], 1)
        >>> encoding["bbox"] = bbox

        >>> outputs = model(**encoding)
        ```)r\   r¦   rx   rv   r�   r   NrA   ©r   Úlogitsr!   r"   )	r  rŠ   rH  r   rE   rG  r   r!   r"   )r:   rŽ   r\   r¦   rJ  rx   rv   r�   rK  rë   Úoutputsr@  rN  r   Úloss_fcts                  r-   rO   z"BrosForTokenClassification.forward}  s7  € ðR AJÀÄ	ØðA
àØ)Ø)Ø%Ø'ðA
ð A
ð ðA
ð A
ˆð " !œ*ˆàŸ,š, Ñ7Ô7ˆØ—’ Ñ1Ô1ˆàˆØÐÝ'Ñ)Ô)ˆHØ$Ð0Ø(=×(BÒ(BÀ2Ñ(FÔ(FÐ%Ø�xØ—K’K  D¤OÑ4Ô4Ð5JÔKÈVÏ[Ê[ÐY[É_Ì_Ð]rÔMsñô ��ð  �x §¢¨B°´Ñ @Ô @À&Ç+Â+ÈbÁ/Ä/ÑRÔR�å$ØØØ!Ô/ØÔ)ð	
ñ 
ô 
ð 	
r,   rA  ©r#   r$   r%   Ú"_keys_to_ignore_on_load_unexpectedr6   r   r   r'   rQ   r   r   r*   r   rO   rR   rS   s   @r-   rC  rC  l  sJ  ø€ € € € € à*3¨Ð&ðð ð ð ð ð Øð *.Ø$(Ø.2Ø59Ø.2Ø,0Ø-1Ø&*ðF
ð F
à”< $Ñ&ðF
ð Œl˜TÑ!ðF
ð œ tÑ+ð	F
ð
  %œ|¨dÑ2ðF
ð œ tÑ+ðF
ð ”l TÑ)ðF
ð ”| dÑ*ðF
ð ”˜tÑ#ðF
ð Ð+Ô,ðF
ð 
ˆuŒ|Ô	Ð4Ñ	4ðF
ð F
ð F
ñ „^ñ ÔðF
ð F
ð F
ð F
ð F
r,   rC  a  
    Bros Model with a token classification head on top (initial_token_layers and subsequent_token_layer on top of the
    hidden-states output) e.g. for Named-Entity-Recognition (NER) tasks. The initial_token_classifier is used to
    predict the first token of each entity, and the subsequent_token_classifier is used to predict the subsequent
    tokens within an entity. Compared to BrosForTokenClassification, this model is more robust to serialization errors
    since it predicts next token from one token.
    c                   óD  ‡ — e Zd ZdgZˆ f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j                 ez  fd„¦   «         ¦   «         Zˆ xZS )Ú!BrosSpadeEEForTokenClassificationr0  c           	      óH  •— t          ¦   «                              |¦  «         || _        |j        | _        |j        | _        |j        | _        t          |¦  «        | _        t          |d¦  «        r|j
        n|j        }t          j        t          j        |¦  «        t          j        |j        |j        ¦  «        t          j        |¦  «        t          j        |j        |j        ¦  «        ¦  «        | _        t#          |¦  «        | _        |                      ¦   «          d S rE  )r5   r6   r;   rG  rý   r   rþ   r,  r  r‘   rF  r‰   r   Ú
Sequentialrˆ   rh   Úinitial_token_classifierrû   Úsubsequent_token_classifierr'  rI  s      €r-   r6   z*BrosSpadeEEForTokenClassification.__init__Ô  sú   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒØ Ô+ˆŒØ!Ô-ˆÔØ$*Ô$6ˆÔ!å˜fÑ%Ô%ˆŒ	å)0°Ð9MÑ)NÔ)NÐnˆFÔ%Ð%ÐTZÔTnð 	õ
 )+¬ÝŒJÐ)Ñ*Ô*ÝŒI�fÔ(¨&Ô*<Ñ=Ô=ÝŒJÐ)Ñ*Ô*ÝŒI�fÔ(¨&Ô*;Ñ<Ô<ñ	)
ô )
ˆÔ%õ ,AÀÑ+HÔ+HˆÔ(à�ŠÑÔÐÐÐr,   NrŽ   r\   r¦   rJ  rx   rv   r�   Úinitial_token_labelsÚsubsequent_token_labelsrë   r>   c
           
      ó¾  —  | j         d
||||||dœ|
¤Ž}|d         }|                     dd¦  «                             ¦   «         }|                      |¦  «                             dd¦  «                             ¦   «         }|                      ||¦  «                             d¦  «        }d|z
  }|j        \  }}|j        }t          j	        |t          j
        |dg|j        |¬¦  «        gd¬¦  «                             ¦   «         }|                     |dd…ddd…f         t          j        |j        ¦  «        j        ¦  «        }t          j        ||dz   ¦  «                             |t          j        ¬¦  «        }|                     |ddd…dd…f         t          j        |j        ¦  «        j        ¦  «        }|                     d¦  «                             ¦   «         }d}|�Ü|	�Út'          ¦   «         }|                     d¦  «        }|�G|                     d¦  «        } ||                     d| j        ¦  «        |         ||         ¦  «        }n% ||                     d| j        ¦  «        |¦  «        }|	                     d¦  «        }	 ||                     d|dz   ¦  «        |         |	|         ¦  «        }||z   }t+          ||||j        |j        ¬	¦  «        S )a>  
        bbox ('torch.FloatTensor' of shape '(batch_size, num_boxes, 4)'):
            Bounding box coordinates for each token in the input sequence. Each bounding box is a list of four values
            (x1, y1, x2, y2), where (x1, y1) is the top left corner, and (x2, y2) is the bottom right corner of the
            bounding box.
        bbox_first_token_mask (`torch.FloatTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Mask to indicate the first token of each bounding box. Mask values selected in `[0, 1]`:

            - 1 for tokens that are **not masked**,
            - 0 for tokens that are **masked**.
        initial_token_labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for the initial token classification.
        subsequent_token_labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for the subsequent token classification.

        Examples:

        ```python
        >>> import torch
        >>> from transformers import BrosProcessor, BrosSpadeEEForTokenClassification

        >>> processor = BrosProcessor.from_pretrained("jinho8345/bros-base-uncased")

        >>> model = BrosSpadeEEForTokenClassification.from_pretrained("jinho8345/bros-base-uncased")

        >>> encoding = processor("Hello, my dog is cute", add_special_tokens=False, return_tensors="pt")
        >>> bbox = torch.tensor([[[0, 0, 1, 1]]]).repeat(1, encoding["input_ids"].shape[-1], 1)
        >>> encoding["bbox"] = bbox

        >>> outputs = model(**encoding)
        ```©rŽ   r\   r¦   rx   rv   r�   r   r   ry   r  N©r{   rz   rA   )r   r   r    r!   r"   r+   )r  rm   r²   rW  rX  Úsqueezer«   r{   r'   rF   rŒ   rz   ÚboolÚmasked_fillÚfinfoÚminÚeyeÚtorE   r   rG  r   r!   r"   )r:   rŽ   r\   r¦   rJ  rx   rv   r�   rY  rZ  rë   rO  Úlast_hidden_statesr   r    Úinv_attention_maskr¹   Úmax_seq_lengthr{   Úinvalid_token_maskÚself_token_maskÚsubsequent_token_maskr   rP  Úinitial_token_lossÚsubsequent_token_losss                             r-   rO   z)BrosSpadeEEForTokenClassification.forwardí  s;  € ð\ AJÀÄ	ð A
ØØØ)Ø)Ø%Ø'ðA
ð A
ð ðA
ð A
ˆð % QœZÐØ/×9Ò9¸!¸QÑ?Ô?×JÒJÑLÔLÐØ#×<Ò<Ð=OÑPÔP×ZÒZÐ[\Ð^_Ñ`Ô`×kÒkÑmÔmÐØ"&×"BÒ"BÐCUÐWiÑ"jÔ"j×"rÒ"rÐstÑ"uÔ"uÐð  Ñ/ÐØ%7Ô%=Ñ"ˆ
�NØ#Ô*ˆÝ"œYØ¥¤¨j¸!¨_ÐDVÔD\ÐekÐ!lÑ!lÔ!lÐmÐtuð
ñ 
ô 
ç
Š$‰&Œ&ð 	ð #:×"EÒ"EØ˜q˜q˜q $¨¨¨˜zÔ*­E¬KÐ8OÔ8UÑ,VÔ,VÔ,Zñ#
ô #
Ðõ  œ) N°NÀQÑ4FÑGÔG×JÒJÐRXÕ`eÔ`jÐJÑkÔkˆØ"9×"EÒ"EØ˜D ! ! ! Q Q Q˜JÔ'­¬Ð5LÔ5RÑ)SÔ)SÔ)Wñ#
ô #
Ðð !/× 3Ò 3°BÑ 7Ô 7× <Ò <Ñ >Ô >ÐàˆØÐ+Ð0GÐ0SÝ'Ñ)Ô)ˆHð $8×#<Ò#<¸RÑ#@Ô#@Ð Ø$Ð0Ø(=×(BÒ(BÀ2Ñ(FÔ(FÐ%Ø%- XØ(×-Ò-¨b°$´/ÑBÔBÐCXÔYØ(Ð)>Ô?ñ&ô &Ð"Ð"ð
 &. XÐ.B×.GÒ.GÈÈDÌOÑ.\Ô.\Ð^rÑ%sÔ%sÐ"à&=×&BÒ&BÀ2Ñ&FÔ&FÐ#Ø$, HØ'×,Ò,¨R°À!Ñ1CÑDÔDÐEZÔ[Ø'Ð(=Ô>ñ%ô %Ð!ð
 &Ð(=Ñ=ˆDåØØ!5Ø$;Ø!Ô/ØÔ)ð
ñ 
ô 
ð 	
r,   )	NNNNNNNNN)r#   r$   r%   rR  r6   r   r   r'   rQ   r   r   r*   r   rO   rR   rS   s   @r-   rT  rT  È  s`  ø€ € € € € ð +4¨Ð&ðð ð ð ð ð2 Øð *.Ø$(Ø.2Ø59Ø.2Ø,0Ø-1Ø48Ø7;ðh
ð h
à”< $Ñ&ðh
ð Œl˜TÑ!ðh
ð œ tÑ+ð	h
ð
  %œ|¨dÑ2ðh
ð œ tÑ+ðh
ð ”l TÑ)ðh
ð ”| dÑ*ðh
ð $œl¨TÑ1ðh
ð "'¤°Ñ!4ðh
ð Ð+Ô,ðh
ð 
ˆuŒ|Ô	˜Ñ	.ðh
ð h
ð h
ñ „^ñ Ôðh
ð h
ð h
ð h
ð h
r,   rT  zì
    Bros Model with a token classification head on top (a entity_linker layer on top of the hidden-states output) e.g.
    for Entity-Linking. The entity_linker is used to predict intra-entity links (one entity to another entity).
    c                   ó.  ‡ — e Zd ZdgZˆ f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j                 ez  fd„¦   «         ¦   «         Zˆ xZS )Ú!BrosSpadeELForTokenClassificationr0  c                 óT  •— t          ¦   «                              |¦  «         || _        |j        | _        |j        | _        |j        | _        t          |¦  «        | _        t          |d¦  «        r|j
        n|j         t          |¦  «        | _        |                      ¦   «          d S rE  )r5   r6   r;   rG  rý   r   rþ   r,  r  r‘   rF  r‰   rû   Úentity_linkerr'  r[   s     €r-   r6   z*BrosSpadeELForTokenClassification.__init__c  s—   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒØ Ô+ˆŒØ!Ô-ˆÔØ$*Ô$6ˆÔ!å˜fÑ%Ô%ˆŒ	Ý&-¨fÐ6JÑ&KÔ&KÐ	kˆÔ	"Ð	"ÐQWÔQkøå2°6Ñ:Ô:ˆÔà�ŠÑÔÐÐÐr,   NrŽ   r\   r¦   rJ  rx   rv   r�   rK  rë   r>   c	           
      óê  —  | j         d
||||||dœ|	¤Ž}
|
d         }|                     dd¦  «                             ¦   «         }|                      ||¦  «                             d¦  «        }d}|��et          ¦   «         }|j        \  }}|j        }t          j	        ||dz   ¦  «         
                    |t          j        ¬¦  «        }|                     d¦  «        }t          j        | t          j        |dgt          j        |¬¦  «        gd¬¦  «        }|                     |dd…ddd…f         t          j        |j        ¦  «        j        ¦  «        }|                     |ddd…dd…f         t          j        |j        ¦  «        j        ¦  «        } ||                     d|dz   ¦  «        |         |                     d¦  «        |         ¦  «        }t'          |||
j        |
j        ¬	¦  «        S )aö  
        bbox ('torch.FloatTensor' of shape '(batch_size, num_boxes, 4)'):
            Bounding box coordinates for each token in the input sequence. Each bounding box is a list of four values
            (x1, y1, x2, y2), where (x1, y1) is the top left corner, and (x2, y2) is the bottom right corner of the
            bounding box.
        bbox_first_token_mask (`torch.FloatTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Mask to indicate the first token of each bounding box. Mask values selected in `[0, 1]`:

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

        Examples:

        ```python
        >>> import torch
        >>> from transformers import BrosProcessor, BrosSpadeELForTokenClassification

        >>> processor = BrosProcessor.from_pretrained("jinho8345/bros-base-uncased")

        >>> model = BrosSpadeELForTokenClassification.from_pretrained("jinho8345/bros-base-uncased")

        >>> encoding = processor("Hello, my dog is cute", add_special_tokens=False, return_tensors="pt")
        >>> bbox = torch.tensor([[[0, 0, 1, 1]]]).repeat(1, encoding["input_ids"].shape[-1], 1)
        >>> encoding["bbox"] = bbox

        >>> outputs = model(**encoding)
        ```r\  r   r   Nr]  rA   ry   r  rM  r+   )r  rm   r²   rp  r^  r   r«   r{   r'   rc  rd  r_  rE   rF   rŒ   r`  ra  rz   rb  r   r!   r"   )r:   rŽ   r\   r¦   rJ  rx   rv   r�   rK  rë   rO  re  rN  r   rP  r¹   rg  r{   ri  Úmasks                       r-   rO   z)BrosSpadeELForTokenClassification.forwardq  s  € ðR AJÀÄ	ð A
ØØØ)Ø)Ø%Ø'ðA
ð A
ð ðA
ð A
ˆð % QœZÐØ/×9Ò9¸!¸QÑ?Ô?×JÒJÑLÔLÐà×#Ò#Ð$6Ð8JÑKÔK×SÒSÐTUÑVÔVˆàˆØÑÝ'Ñ)Ô)ˆHà)7Ô)=Ñ&ˆJ˜Ø#Ô*ˆFå#œi¨¸ÈÑ8JÑKÔK×NÒNÐV\ÕdiÔdnÐNÑoÔoˆOà(×-Ò-¨bÑ1Ô1ˆDÝ$)¤Ià*Ð*Ý”K ¨Q µu´zÈ&ÐQÑQÔQðð ð%ñ %ô %Ð!ð ×'Ò'Ð(=¸a¸a¸aÀÀqÀqÀq¸jÔ(IÍ5Ì;ÐW]ÔWcÑKdÔKdÔKhÑiÔiˆFØ×'Ò'¨¸¸a¸a¸aÀÀÀ¸
Ô(CÅUÄ[ÐQWÔQ]ÑE^ÔE^ÔEbÑcÔcˆFà�8˜FŸKšK¨¨N¸QÑ,>Ñ?Ô?ÀÔEÀvÇ{Â{ÐSUÁÄÐW[ÔG\Ñ]Ô]ˆDå$ØØØ!Ô/ØÔ)ð	
ñ 
ô 
ð 	
r,   rA  rQ  rS   s   @r-   rn  rn  Z  sL  ø€ € € € € ð +4¨Ð&ðð ð ð ð ð Øð *.Ø$(Ø.2Ø59Ø.2Ø,0Ø-1Ø&*ðQ
ð Q
à”< $Ñ&ðQ
ð Œl˜TÑ!ðQ
ð œ tÑ+ð	Q
ð
  %œ|¨dÑ2ðQ
ð œ tÑ+ðQ
ð ”l TÑ)ðQ
ð ”| dÑ*ðQ
ð ”˜tÑ#ðQ
ð Ð+Ô,ðQ
ð 
ˆuŒ|Ô	Ð4Ñ	4ðQ
ð Q
ð Q
ñ „^ñ ÔðQ
ð Q
ð Q
ð Q
ð Q
r,   rn  )r  r,  rC  rT  rn  )@r&   r¯   Údataclassesr   r'   r   Útorch.nnr   Ú r   r  Úactivationsr   Úmasking_utilsr	   Úmodeling_layersr
   Úmodeling_outputsr   r   r   Úmodeling_utilsr   Úprocessing_utilsr   Úpytorch_utilsr   Úutilsr   r   r   r   r   Úutils.genericr   Úutils.output_capturingr   r   Úconfiguration_brosr   Ú
get_loggerr#   Úloggerr   r  r/   rU   rd   rq   r˜   rÂ   rÍ   rÕ   rÞ   râ   ró   rû   r  r  r,  rC  rT  rn  Ú__all__r+   r,   r-   ú<module>r„     s   ðð Ð à €€€Ø !Ð !Ð !Ð !Ð !Ð !à €€€Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %à &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð ð ð ð ð
 .Ð -Ð -Ð -Ð -Ð -Ø &Ð &Ð &Ð &Ð &Ð &Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø _Ð _Ð _Ð _Ð _Ð _Ð _Ð _Ð _Ð _Ð _Ð _Ð _Ð _Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ *Ð *Ð *Ð *Ð *Ð *ð 
ˆÔ	˜HÑ	%Ô	%€ð €ððñ ô ð
 ð7ð 7ð 7ð 7ð 7�kñ 7ô 7ñ „ñô ð7ð"ð ð ð ð  ¤	ñ ô ð ð*ð ð ð ð  ¤	ñ ô ð ð&ð ð ð ð ˜œñ ô ð ð;ð ;ð ;ð ;ð ;˜œñ ;ô ;ð ;ð|J.ð J.ð J.ð J.ð J.˜œ	ñ J.ô J.ð J.ð\ð ð ð ð �R”Yñ ô ð ðð ð ð ð �B”Iñ ô ð ð6ð ð ð ð �r”yñ ô ð ðð ð ð ð �”ñ ô ð ð8ð 8ð 8ð 8ð 8Ð*ñ 8ô 8ð 8ðxð ð ð ð �”ñ ô ð ðð ð ð ð ˜BœIñ ô ð ðD ð2ð 2ð 2ð 2ð 2˜/ñ 2ô 2ñ „ð2ð4
ð 
ð 
ð 
ð 
Ð%ñ 
ô 
ð 
ð@ ðt
ð t
ð t
ð t
ð t
Ð#ñ t
ô t
ñ „ðt
ðn ðX
ð X
ð X
ð X
ð X
Ð!4ñ X
ô X
ñ „ðX
ðv €ððñ ô ðF
ð F
ð F
ð F
ð F
Ð(;ñ F
ô F
ñô ðF
ðR €ððñ ô ðd
ð d
ð d
ð d
ð d
Ð(;ñ d
ô d
ñô ðd
ðNð ð €€€r,   