
    9i	                     R    S SK r S SKr " S S\R                  R                  5      rg)    Nc                   8   ^  \ rS rSrU 4S jrSS jrS rSrU =r$ )PromptSpell   c                 f  > [         [        U ]  5         Xl        X l        [
        R                  R                  U R                  U R                  5      U l        X0l	        U R                  S:X  a  [
        R                  R                  U R                  U R                  SSSS9U l        [
        R                  R                  [
        R                  R                  SU R                  -  U R                  5      [
        R                  R                  5       [
        R                  R                  U R                  U R                  5      5      U l        g U R                  S:X  a  [
        R                  R                  [
        R                  R                  U R                  U R                  5      [
        R                  R                  5       [
        R                  R                  U R                  U R                  5      5      U l        g U R                  S:w  a  [!        SU R                  -   5      eg )Nlstm   T)
input_sizehidden_size
num_layersbidirectionalbatch_firstmlpnonezPrompt function )superr   __init__spell_lengthr
   torchnn	Embeddingspell_embeddings
spell_funcLSTM	lstm_head
SequentialLinearReLUmlp_headNotImplementedError)selfr   r
   r   	__class__s       g/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/models/nlp/mglm/model/prompt.pyr   PromptSpell.__init__
   s   k4)+(& % 2 243D3D373C3C!E$??f$"XX]]++ ,,"  + "DN "HH//D$4$4 4d6F6FG 0 0$2B2BCEDM __%!HH// 0 0$2B2BC 0 0$2B2BCEDM __&%&84??&JKK '    c                    Sn[         R                  " 5          [        U R                  5       H  n[        R
                  " U5      nUc  X   nO@X   n[        R                  " U5      nX   n	[        R                  " 5       n
Xz-  U	SU
-
  -  -   nX`R                  R                  R                  U'   M     S S S 5        g ! , (       d  f       g = f)Ni     )
r   no_gradranger   random	randrangechoicer   weightdata)r   word_embeddingstask_tokens	num_wordsi
rand_tokentarget_embeddingword_embedding
task_tokentask_embeddingratios              r!   init_embeddingPromptSpell.init_embedding%   s    	]]_4,,-#--i8
&'6'B$%4%@N!'{!;J%4%@N"MMOE'5'=E	A# (#$7G%%,,11!4 . __s   BB>>
Cc                     U R                   R                  R                  S5      nU R                  S:X  a  U R	                  U5      S   nU R                  S:X  d  U R                  S:X  a  U R                  U5      nU$ )Nr   r   r   )r   r+   	unsqueezer   r   r   )r   prompt_embedss     r!   forwardPromptSpell.forward5   sh    --44>>qA??f$ NN=9!<M??f$5(@ MM-8Mr#   )r
   r   r   r   r   r   )NN)	__name__
__module____qualname____firstlineno__r   r7   r<   __static_attributes____classcell__)r    s   @r!   r   r      s    L6H  r#   r   )r(   r   r   Moduler    r#   r!   <module>rF      s!     3%((// 3r#   