o
    ip                     @   sL   d dl mZ d dlmZ d dlmZ ddlmZmZm	Z	 G dd deZ
dS )	    )Optional)Module)Tensor   )BertEmbeddingsBertEmbeddingConfigBertLayerConfigc                	       sh   e Zd Zdedededdf fddZdedefd	d
Z		ddede	e de	e defddZ
  ZS )RobertaEmbeddingsembedding_configlayer_configpadding_idxreturnNc                   s    t    t||| _|| _d S )N)super__init__r   innerr   )selfr
   r   r   	__class__ b/home/ubuntu/.local/lib/python3.10/site-packages/curated_transformers/models/roberta/embeddings.pyr   	   s   

zRobertaEmbeddings.__init__xc                 C   s&   | | j }|jdd| | j S )N   )dim)ner   intcumsum)r   r   maskr   r   r   _get_position_ids   s   z#RobertaEmbeddings._get_position_ids	input_idstoken_type_idsposition_idsc                 C   s    |du r	|  |}| |||S )z`
        Shapes:
            input_ids, token_type_ids, position_ids - (batch, seq_len)
        N)r   r   )r   r   r   r    r   r   r   forward   s   

zRobertaEmbeddings.forward)NN)__name__
__module____qualname__r   r   r   r   r   r   r   r!   __classcell__r   r   r   r   r	      s,    r	   N)typingr   torch.nnr   torchr   bertr   r   r   r	   r   r   r   r   <module>   s
    