o
    ¡¿¯ië  ã                   @   sL   d dl mZmZ d dlmZ d dlZd dlmZ G dd„ dejj	eeƒZ
dS )é    )ÚABCÚabstractmethod)ÚTupleN)ÚBatchScorerInterfacec                	   @   s:   e Zd ZdZedejdejdeejejf fdd„ƒZdS )ÚAbsLMao  The abstract LM class

    To share the loss calculation way among different models,
    We uses delegate pattern here:
    The instance of this class should be passed to "LanguageModel"

    >>> from espnet2.lm.abs_model import AbsLM
    >>> lm = AbsLM()
    >>> model = LanguageESPnetModel(lm=lm)

    This "model" is one of mediator objects for "Task" class.

    ÚinputÚhiddenÚreturnc                 C   s   t ‚)N)ÚNotImplementedError)Úselfr   r   © r   úH/home/ubuntu/.local/lib/python3.10/site-packages/espnet2/lm/abs_model.pyÚforward   s   zAbsLM.forwardN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚtorchÚTensorr   r   r   r   r   r   r   	   s    ÿÿþr   )Úabcr   r   Útypingr   r   Úespnet.nets.scorer_interfacer   ÚnnÚModuler   r   r   r   r   Ú<module>   s
    