o
    W+ i                      @   s   d 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 ejejejdG d	d
 d
eZG dd dejZdS )zPyTorch LSTM model.     N)Models)
TorchModel)MODELS)BackboneModelOutput)Tasks)Z	group_keymodule_namec                       s,   e Zd Zd fdd	ZdefddZ  ZS )	LSTMModeld   c                    s<   t    |d|}t||| _tj||dddd| _d S )NZlstm_hidden_size   T)Z
num_layersbidirectionalZbatch_first)super__init__get	Embedding	embeddingnnZLSTMlstm)self
vocab_sizeembed_widthZhidden_sizekwargs	__class__ o/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/modelscope/models/nlp/lstm/backbone.pyr      s   
zLSTMModel.__init__returnc                 K   s"   |  |}| |\}}t|dS )N)Zlast_hidden_state)r   r   r   )r   	input_idsr   r   Zlstm_output_r   r   r   forward   s   

zLSTMModel.forward)r	   )__name__
__module____qualname__r   r   r   __classcell__r   r   r   r   r      s    r   c                       s$   e Zd Z fddZdd Z  ZS )r   c                    s    t t|   t||| _d S N)r   r   r   r   r   )r   r   r   r   r   r   r   #   s   zEmbedding.__init__c                 C   s
   |  |S r#   )r   )r   r   r   r   r   r   (   s   
zEmbedding.forward)r   r    r!   r   r   r"   r   r   r   r   r   !   s    r   )__doc__Ztorch.nnr   Zmodelscope.metainfor   Zmodelscope.modelsr   Zmodelscope.models.builderr   Zmodelscope.outputsr   Zmodelscope.utils.constantr   Zregister_moduleZbackboner   r   Moduler   r   r   r   r   <module>   s   