Team Ai
Apppublic

xdecoder/Instruct-X-Decoder

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

2E$�c�.�@s�dZddlZddlmZmZddlZddlmmZ	ddlm3Z4mZGdd�dej�ZGdd�dej�Z
Gd	d5�d6ej�ZGdd�dej�ZGd
d�dej�Zdd�Zdd�ZdS)z�7Transformer class.8 9Copy-paste from torch.nn.Transformer with modifications:10    * positional encodings are passed in MHattention11    * extra LN at the end of encoder is removed12    * decoder returns a stack of activations from all decoding layers13�N)�List�Optional)�Tensor�nnc	s.eZdZd�fdd	�	Zd14d�Zdd
�Z�ZS)�Transformer����皙�����?�reluFc15s�t���t||||||�}16|r*t�|�nd}t|17||�|_t||||||�}t�|�}
t|||
|	d�|_	|�18�||_||_dS)N)�return_intermediate)
�super�__init__�TransformerEncoderLayerr�	LayerNorm�TransformerEncoder�encoder�TransformerDecoderLayer�TransformerDecoder�decoder�_reset_parameters�d_model�nhead)�selfrr�num_encoder_layers�num_decoder_layers�dim_feedforward�dropout�19activation�normalize_beforeZreturn_intermediate_dec�
encoder_layer�encoder_norm�
decoder_layer�decoder_norm��	__class__��9/data/arXiv/demo/Demo/xdecoder/body/transformer_blocks.pyrs:20��21�zTransformer.__init__cCs*|��D]}|��dkrtj�|�qdS)N�)�22parameters�dimr�init�xavier_uniform_)r�pr'r'r(r8szTransformer._reset_parameterscCs�|j\}}}}|�d��ddd�}|�d��ddd�}|�d��d|d�}|dk	r\|�d�}t�|�}	|j|||d�}23|j|	|24|||d�}|�	dd�|25�ddd��26||||�fS)N�rr))�src_key_padding_mask�pos)�memory_key_padding_maskr1�	query_pos)�shape�flatten�permute�	unsqueeze�repeat�torch�27zeros_likerr�	transpose�view)r�src�maskZquery_embed�	pos_embed�bs�c�h�w�tgt�memory�hsr'r'r(�forward=s 2829�zTransformer.forward)	rrr	r	r30rrFF)�__name__�31__module__�__qualname__rrrG�
__classcell__r'r'r%r(rs�$rcs>eZdZd�fdd�	Zdeeeeeed�dd�Z�ZS)	rNcs&t���t||�|_||_||_dS�N)rr�_get_clones�layers�32num_layers�norm)rr!rOrPr%r'r(rOs33zTransformerEncoder.__init__)r>r0r1cCs8|}|jD]}|||||d�}q34|jdk	r4|�|�}|S)N��src_maskr0r1)rNrP)rr=r>r0r1�output�layerr'r'r(rGUs35�3637zTransformerEncoder.forward)N)NNN�rHrIrJrrrrGrKr'r'r%r(rNs	��rcsPeZdZd�fdd�	Zd	eeeeeeeeeeeed�dd�Z�ZS)38rNFcs,t���t||�|_||_||_||_dSrL)rrrMrNrOrPr
)rr#rOrPr
r%r'r(rjs3940zTransformerDecoder.__init__��tgt_mask�memory_mask�tgt_key_padding_maskr2r1r3c	Cs�|}	g}41|jD]2}||	|||||||d�}	|jr|42�|�|	��q|jdk	rn|�|	�}	|jrn|43��|44�|	�|jr~t�|45�S|	�d�S)NrVr)rNr
�appendrP�popr9�stackr7)rrDrErWrXrYr2r1r3rS�intermediaterTr'r'r(rGqs.46�4748495051zTransformerDecoder.forward)NF)NNNNNNrUr'r'r%r(ris��rcs�eZdZd�fdd�	Zeed�dd	�Zdeeeeeed�dd
�Zdeeeeeed�dd�Zdeeeeeed�dd�Z	�Z52S)rr53rrFcs�t���tj|||d�|_t�||�|_t�|�|_t�||�|_	t�54|�|_t�55|�|_t�|�|_
t�|�|_t|�|_||_dS�N)r)rrr�MultiheadAttention�	self_attn�Linear�linear1�Dropoutr�linear2r�norm1�norm2�dropout1�dropout2�_get_activation_fnrr �rrrrrrr r%r'r(r�s	5657z TransformerEncoderLayer.__init__�r1cCs|dkr|S||SrLr'�r�tensorr1r'r'r(�with_pos_embed�sz&TransformerEncoderLayer.with_pos_embedNrQc	Csx|�||�}}|j|||||d�d}||�|�}|�|�}|�|�|�|�|����}||�|�}|�	|�}|S�N��value�	attn_mask�key_padding_maskr)58rnr`rgrerdrrrbrhrf)rr=rRr0r1�q�k�src2r'r'r(�forward_post�s ��5960z$TransformerEncoderLayer.forward_postc	Csx|�|�}|�||�}}|j|||||d�d}||�|�}|�|�}|�|�|�|�|����}||�	|�}|Sro)61rernr`rgrfrdrrrbrh)rr=rRr0r1rvrtrur'r'r(�forward_pre�s 62��63z#TransformerEncoderLayer.forward_precCs&|jr|�||||�S|�||||�SrL�r rxrw)rr=rRr0r1r'r'r(rG�szTransformerEncoderLayer.forward)r64rrF)NNN)NNN)NNN�rHrIrJrrrrnrwrxrGrKr'r'r%r(r�s<�������rcs�eZdZd�fdd�	Zeed�dd	�Zdeeeeeeeeeeeed�dd
�Zdeeeeeeeeeeeed�dd�Zdeeeeeeeeeeeed�dd�Z	�Z65S)rr66rrFcs�t���tj|||d�|_tj|||d�|_t�||�|_t�|�|_	t�||�|_67t�|�|_t�|�|_
t�|�|_t�|�|_t�|�|_t�|�|_t|�|_||_dSr^)rrrr_r`�multihead_attnrarbrcrrdrrerf�norm3rgrh�dropout3rirr rjr%r'r(r�s	6869z TransformerDecoderLayer.__init__rkcCs|dkr|S||SrLr'rlr'r'r(rnsz&TransformerDecoderLayer.with_pos_embedNrVc		Cs�|�||�}	}70|j|	|71|||d�d}||�|�}|�|�}|j|�||�|�||�|||d�d}||�|�}|�|�}|�|�|�	|�72|����}||�|�}|�|�}|S�Nrpr)�query�keyrqrrrs)
rnr`rgrer{rhrfrdrrrbr}r|)rrDrErWrXrYr2r1r3rtru�tgt2r'r'r(rws6��737475��7677z$TransformerDecoderLayer.forward_postc		Cs�|�|�}	|�|	|�}78}|j|79||	||d�d}	||�|	�}|�|�}	|j|�|	|�|�||�|||d�d}	||�|	�}|�|�}	|�|�	|�80|�|	����}	||�|	�}|Sr~)
rernr`rgrfr{rhr|rdrrrbr})rrDrErWrXrYr2r1r3r�rtrur'r'r(rx%s681��828384��85z#TransformerDecoderLayer.forward_prec		86Cs6|jr|�||||||||�S|�||||||||�SrLry)	rrDrErWrXrYr2r1r3r'r'r(rGDs*�87�zTransformerDecoderLayer.forward)r88rrF)NNNNNN)NNNNNN)NNNNNNrzr'r'r%r(r�s`���#��#��rcst��fdd�t|�D��S)Ncsg|]}t����qSr')�copy�deepcopy)�.0�i��moduler'r(�89<listcomp>gsz_get_clones.<locals>.<listcomp>)r�90ModuleList�range)r��Nr'r�r(rMfsrMcCs>|dkrtjS|dkrtjS|dkr*tjStd|�d���dS)z,Return an activation function given a stringr�gelu�gluz$activation should be relu/gelu, not �.N)�Frr�r��RuntimeError)rr'r'r(rijsri)�__doc__r��typingrrr9Ztorch.nn.functionalr�91functionalr�r�ModulerrrrrrMrir'r'r'r(�<module>s;1M