
    9iE              
       8   S SK r S SKJrJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJr  SS	KJrJrJrJr  \R(                  " 5       r\R*                  " \R,                  \R.                  S
9\R*                  " \R0                  \R.                  S
9\R*                  " \R2                  \R.                  S
9\R*                  " \R4                  \R.                  S
9\R*                  " \R6                  \R.                  S
9 " S S\5      5       5       5       5       5       rg)    N)CrossEntropyLossMSELoss)Models)MODELS)&AttentionTextClassificationModelOutput)logger)Tasks   )PeerClassificationHead	PeerModelPeerPreTrainedModelPeerTopModel)module_namec                   R   ^  \ rS rSrU 4S jrSSSSSSSSS\" 5       S4S jrSrU =r$ )PeerForSequenceClassification!   c                   > [         TU ]  U5        UR                  U l        Xl        [        R
                  " U5      n[        R
                  " U5      nUR                  S:  d   S5       eUR                  Ul        UR                  UR                  -
  Ul        [        U5      U l	        [        U5      U l        [        U5      U l        U R                  5         g )Nr   z9config.num_hidden_layers_shared should be greater than 0!)super__init__
num_labelsconfigcopydeepcopynum_hidden_layers_sharednum_hidden_layersr   teams1_shared_bottomr   teams1_discr_topr   
classifierinit_weights)selfr   kwargsconfig_discr_topconfig_shared_bottom	__class__s        n/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/models/nlp/peer/text_classification.pyr   &PeerForSequenceClassification.__init__*   s      ++==0#}}V4..2o4oo2171P1P.-=-O-O77.8* %..B$C! ,-= >08    Nc                 D   Ub  UOU R                   R                  nU R                  XX4UXhU	X5
      nU R                  US   XX4XVXU
U5      nUnUS   nU R	                  U5      nSnUb~  U R
                  S:X  a2  [        5       nU" UR                  S5      UR                  S5      5      nO<[        5       nU" UR                  SU R
                  5      UR                  S5      5      nU(       d  U4USS -   nUb  U4U-   $ U$ [        UUUR                  UR                  S9$ )a~  
labels (:obj:`torch.LongTensor` of shape :obj:`(batch_size,)`, `optional`):
    Labels for computing the sequence classification/regression loss. Indices should be in :obj:`[0, ...,
    config.num_labels - 1]`. If :obj:`config.num_labels == 1` a regression loss is computed (Mean-Square loss),
    If :obj:`config.num_labels > 1` a classification loss is computed (Cross-Entropy).
Nr   r
   )losslogitshidden_states
attentions)r   use_return_dictr   r   r   r   r   viewr   r   r,   r-   )r    	input_idsattention_masktoken_type_idsposition_ids	head_maskinputs_embedslabelsoutput_attentionsoutput_hidden_statesside_info_setsreturn_dicthidden_states_discr_bottomhidden_states_discr_topdiscriminator_hidden_statessequence_outputr+   r*   loss_fctoutputs                       r%   forward%PeerForSequenceClassification.forward?   sC   ( &1%<k$++B]B]%)%>%>~Y.B&)"
 #'"7"7&q)9)^	# '>#5a81!#"9BRA+-KKDOO4fkk"oG Z"=ab"AAF*.*:THv%FF55CC2==	
 	
r'   )r   r   r   r   r   )	__name__
__module____qualname____firstlineno__r   dictrA   __static_attributes____classcell__)r$   s   @r%   r   r   !   s7    . "!%6:
 :
r'   r   )r   torch.nnr   r   modelscope.metainfor   modelscope.models.builderr   modelscope.outputsr   modelscope.utilsr   loggingmodelscope.utils.constantr	   backboner   r   r   r   
get_loggerregister_moduletext_classificationpeernlisentiment_classificationsentence_similarityzero_shot_classificationr    r'   r%   <module>r[      s   $  . & , E . +% % 
			 11v{{K		v{{;	""=11v{{K	""=Q
$7 Q
= L= < LQ
r'   