CoolFace
Apppublic

Sorobot/Document-modify-Toolkit

sourceHugging Faceapache-2.0updated 2y agoView on Hugging Face
0likes
position_encoding.cpython-38.pyc41 linesDownload Raw Back to __pycache__
1U

2h�Hf�
�@s|ddlZddlmZddlZddlmZddlmmZGdd�de	�Z3Gdd�dej�ZGdd�dej�Z
d
dd�ZdS)�N)�Optionalc@s0eZdZeejd�dd�Zdd�Zdd�ZdS)	�NestedTensor)�maskcCs||_||_dS�N��tensorsr)�selfrr�r	�2D:\CodeProjects\as1\Transform\position_encoding.py�__init__4szNestedTensor.__init__cCs|j|jfSrr�rr	r	r5�	decomposeszNestedTensor.decomposecCs6t|j�Sr)�strrrr	r	r7�__repr__szNestedTensor.__repr__N)	�__name__�8__module__�__qualname__r�paddle�Tensorrr
rr	r	r	r9r	srcs*eZdZdZd10�fdd�	Zdd	�Z�ZS)�PositionEmbeddingSinez�11    This is a more standard version of the position embedding, very similar to the one12    used by the Attention is all you need paper, generalized to work on images.13    �@�'FNcsPt���||_||_||_|dk	r4|dkr4td��|dkrFdtj}||_dS)NFz+normalize should be True if scale is passed�)	�superr�
num_pos_feats�temperature�	normalize�14ValueError�math�pi�scale)rrrrr ��	__class__r	r15rs1617zPositionEmbeddingSine.__init__c		Cs�|dk	st�|jddd�}|jddd�}|jr�d}||dd�dd�dd�f||j}||dd�dd�dd�f||j}tj|jdd�}|jd|d|j}|dd�dd�dd�df|}|dd�dd�dd�df|}tj|dd�dd�dd�ddd�f�	�|dd�dd�dd�ddd�f�18�fd	d19��d�}tj|dd�dd�dd�ddd�f�	�|dd�dd�dd�ddd�f�20�fd	d21��d�}tj||fdd22�j
ddddgd�}|S)
N��float32)�axis�dtyperg�����ư>�����)�endr&r��r%�)�perm)�AssertionError�cumsumrr r�arangerr�stack�sin�cos�flatten�concat�	transpose)	rrZy_embedZx_embed�epsZdim_tZpos_xZpos_y�posr	r	r23�forward+s2((  J��J��"zPositionEmbeddingSine.forward)rrFN)rrr�__doc__rr8�
__classcell__r	r	r!r24rs�rcs8eZdZdZd25�fdd�	Zdd�Zed�dd	�Z�ZS)�PositionEmbeddingLearnedz*26    Absolute pos embedding, learned.27    �cs2t���t�d|�|_t�d|�|_|��dS)N�2)rr�nn�	Embedding�	row_embed�	col_embed�reset_parameters)rrr!r	r28rMs29z!PositionEmbeddingLearned.__init__cCs$t��}||jj�||jj�dSr)�init�Uniformr@�weightrA)rZ
init_Constantr	r	r30rBSsz)PositionEmbeddingLearned.reset_parameters)�tensor_listc31Cs�|j}|jdd�\}}tj|d�}tj|d�}|�|�}|�|�}tj|�d��|ddg�|�d��d|dg�gdd��	dddg��d��|jddddg�}	|	S)N�����)r(rr#r'r*r)32r�shaperr/rAr@r4�	unsqueeze�tiler5)33rrF�x�h�w�i�jZx_embZy_embr7r	r	r34r8Xs(3536����	��
z PositionEmbeddingLearned.forward)r<)	rrrr9rrBrr8r:r	r	r!r37r;Hsr;��sinecCsB|d}|dkrt|dd�}n |dkr0t|�}ntd|����|S)Nr)�v2rQT)r)�v3Zlearnedznot supported )rr;r)�38hidden_dim�position_embeddingZN_stepsr	r	r39�build_position_encodingss40rV)rPrQ)r�typingrr�	paddle.nnr>�paddle.nn.initializer�initializerrC�objectr�Layerrr;rVr	r	r	r41�<module>s3+