a
    Ad                     @   s.   d dl Z d dlmZmZ G dd dejZdS )    N)sd_hijack_clipdevicesc                       s,   e Zd Z fddZdd Zdd Z  ZS )!FrozenXLMREmbedderWithCustomWordsc                    sD   t  || |jj| _|jj| _|jj| _| j	
 dd | _d S )N,)super__init__configbos_token_idid_starteos_token_idid_endpad_token_idid_pad	tokenizer	get_vocabgetcomma_token)selfwrappedhijack	__class__ >/var/www/html/stable-diffusion-webui/modules/sd_hijack_xlmr.pyr      s
    


z*FrozenXLMREmbedderWithCustomWords.__init__c                 C   s2   || j kj|jtjd}| j||d}|d }|S )N)devicedtype)	input_idsattention_maskprojection_state)r   tor   torchint64r   )r   tokensr   featureszr   r   r   encode_with_transformers   s    z:FrozenXLMREmbedderWithCustomWords.encode_with_transformersc                 C   s@   | j jj}| j j||dddd }|j |tjd}|S )NptF)
max_lengthreturn_tensorsadd_special_tokensr   r   )	r   roberta
embeddingsr   token_embeddingr   r   r   squeeze)r   	init_textnvptembedding_layeridsembeddedr   r   r   encode_embedding_init_text   s    
z<FrozenXLMREmbedderWithCustomWords.encode_embedding_init_text)__name__
__module____qualname__r   r%   r3   __classcell__r   r   r   r   r      s   	r   )r    modulesr   r   !FrozenCLIPEmbedderWithCustomWordsr   r   r   r   r   <module>   s   