Team Ai
Apppublic

xdecoder/Instruct-X-Decoder

sourceHugging Faceafl-3.0updated 3y agoView on Hugging Face
163likes
vlpencoder.cpython-38.pyc43 linesDownload Raw Back to __pycache__
1U

2E$�c��@s�ddlZddlmZddlmZddlmZddlmZddl	m3Z4dd	lmZm
Z
dd5lmZmZGdd�dej�Zed
d��ZdS)�N)�nn)�6functional)�
trunc_normal_�)�register_model�)�configurable)�build_tokenizer�build_lang_encoder)�prompt_engineering�get_prompt_templatescs^eZdZe�fdd��Zedd��Zddd	�Zdd7d�Zddd
�Z	ddd�Z8ddd�Z�ZS)�LanguageEncodercs>t���||_||_||_||_||_t�t	�9g��|_dS�N)�super�__init__�	tokenizer�tokenizer_type�lang_encoder�	lang_proj�
max_token_numr�	Parameter�torch�ones�logit_scale)�selfrrr�lang_projectionr��	__class__��5/data/arXiv/demo/Demo/xdecoder/language/vlpencoder.pyrs	10zLanguageEncoder.__init__c	Cs�t|dd�}|ddd}t|dd||d�}|ddd}|ddd}|dd}t�t�||��}t|dd	�|||||d11�S)N�MODEL�TEXTZ	TOKENIZER�VERBOSE�CONTEXT_LENGTHZWIDTH�DIM_PROJg{�G�z�?)�std)rrrrr)r	r12rrr�emptyr)	�cls�cfgrrrrZdim_langZdim_projectionrrrr�from_config!s�zLanguageEncoder.from_config�defaultFTc	s�|s�|r2�fdd�tt���D�}|r6|�d�n�}g}g}	|D]N}13�j|14dd�jdd�}|d��|d	��|�|d�|	�|d	�qBt�|�}t�|	�}
�j|�	�|
�	�f�d15�}t16�d�|�|�n�t������fdd
�}t
�}g}|�r*�D]&��fdd�|D�}|�||���qn|�|���|�rRdg}|�||��tj|dd�}t17�d�|�|�W5QRXdS)Ncs6g|].}t�|�dd��dd��dd�ddd��qS)�-other��-merged�-stuffi'�.)�topk�suffix)r�replace)�.0�label)�class_namesrr�18<listcomp>9s�z7LanguageEncoder.get_text_embeddings.<locals>.<listcomp>zA background in coco.�19max_lengthT�pt��paddingZ20truncationr7Zreturn_tensors�	input_ids�attention_mask��norm�{}_text_embeddingscsT�j|dd�jdd�}�j|d��|d��f�d�}|jdd	�}||��}|S)21Nr7Tr8r9r;r<r=r��dim)rr�forward_language�cuda�meanr>)�txts�tokensZclss_embedding)r>rrr�extract_mean_embUs�"z=LanguageEncoder.get_text_embeddings.<locals>.extract_mean_embcs.g|]&}|���dd��dd��dd���qS)r+r,r-r.)�formatr2)r3�template)�clssrrr6bsrr@)�range�len�appendrr�squeeze_r�stackrBrC�setattrrH�no_gradr)rr5�name�is_evalZadd_bgd�promptr>Zarbitary_conceptsr;Zattention_masks�txtrFZarbitary_tokensZarbitary_attention_masksZtext_embrG�	templatesZclss_embeddingsrEr)r5rJr>rr�get_text_embeddings5sP2223��242526	z#LanguageEncoder.get_text_embeddingsc	Csr|s.|j|dd|jdd�}dd�|��D�}n|}|j|d|df|d	�\}}|||d27�}t|d�|�|�|S)Nr7Tr8r9cSsi|]\}}||���qSr)rC)r3�key�valuerrr�28<dictcomp>ssz=LanguageEncoder.get_text_token_embeddings.<locals>.<dictcomp>r;r<r=)rF�	token_emb�	class_embz{}_token_embeddings)rr�items�forward_language_tokenrPrH)	rrErR�tokenr>rFr[r\�retrrr�get_text_token_embeddingsns"��z)LanguageEncoder.get_text_token_embeddingscCsz|j|�}|d}|jdkrB|t�|�d��|djdd�f}n|dd�df}||j}|rv||jddd�d}|S�	NZlast_hidden_state�clipr�����r@T�rA�keepdim�H�����z>�rrr�arange�size�argmaxrr>)r�textsr>�xrrrrB}s2930&31z LanguageEncoder.forward_languagecCs�|j|�}|d}|jdkrB|t�|�d��|djdd�f}n|dd�df}||j}||j}|r�||jddd�d}||jddd�d}||fSrbrh)rrlr>rmZtoken_xZclass_xrrrr^�s3233&3435z&LanguageEncoder.forward_language_tokencCsR|rdS||jddd�d}t|d�|��}|j��||�d��dd�}|S)	NrdTrergr?rrr)r>�getattrrHr�exp�	unsqueeze�	transpose)r�v_embrR�fake�t_emb�outputrrr�compute_similarity�s z"LanguageEncoder.compute_similarity)r*FFTT)r*FF)T)F)r*F)
�__name__�36__module__�__qualname__rr�classmethodr)rWrarBr^rv�
__classcell__rrrrr
s37389394041r
cKst|�Sr)r
)r(�kwargsrrr�get_language_model�sr})rr�torch.nnr�F�timm.models.layersr�registryr�utilsrZLangEncoderr	r42�43utils.miscrr�Moduler
r}rrrr�<module>s