CoolFace
Modelpublic

CLYang617/RemoteSensingChangeDetection-RSCD.HA2F

sourceHugging Faceupdated 4mo agoView on Hugging Face
0likes
patch_embed.cpython-39.pyc35 linesDownload Raw Back to __pycache__
1a

28��g
�@sNddlmZmZmZmZddlmZddlmZdd�Z	Gdd�dej3�ZdS)�)�Callable�Optional�Tuple�Union)�TensorNcCs4t|t�rt|�dksJ�|St|t�s,J�||fS)N�)�4isinstance�tuple�len�int)�x�r
�HC:\Users\82607\Desktop\code\ChangeViT-master\model\layers\patch_embed.py�make_2tuples56rc	sveZdZdZdeeeeeffeeeeeffeeeee	dd��fd	d7�
Z8eed�dd
�Ze
d�dd�Z�ZS)�9PatchEmbeda%10    2D image to patch embedding: (B,C,H,W) -> (B,N,D)11 12    Args:13        img_size: Image size.14        patch_size: Patch token size.15        in_chans: Number of input image channels.16        embed_dim: Number of linear projection output channels.17        norm_layer: Normalization layer.18    �����NT)�img_size�19patch_size�in_chans�	embed_dim�20norm_layer�flatten_embedding�returnc21s�t���t|�}t|�}|d|d|d|df}	||_||_|	|_|	d|	d|_||_||_||_	t22j||||d�|_|r�||�nt23�
�|_dS)Nr�)�kernel_size�stride)�super�__init__rrr�patches_resolution�num_patchesrrr�nn�Conv2d�proj�Identity�norm)24�selfrrrrrrZimage_HWZpatch_HWZpatch_grid_size��	__class__r
rr %s	25�zPatchEmbed.__init__)rrcCs�|j\}}}}|j\}}||dks8Jd|�d|����||dksXJd|�d|����|�|�}|�d�|�d�}}|�d��dd�}|�|�}|js�|�d	|||j	�}|S)26NrzInput image height z# is not a multiple of patch height zInput image width z# is not a multiple of patch width: rrr�����)27�shaperr%�size�flatten�	transposer'r�reshaper)r(r�_�H�WZpatch_HZpatch_Wr
r
r�forwardDs28  2930zPatchEmbed.forward)rcCsR|j\}}|||j|j|jd|jd}|jdurN||||j7}|S)Nrr)r!rrrr')r(ZHoZWo�flopsr
r
rr5Ss3132(33zPatchEmbed.flops)rrrrNT)�__name__�34__module__�__qualname__�__doc__rrrrr�boolr rr4�floatr5�
__classcell__r
r
r)rrs$
��r)�typingrrrr�torchr�torch.nnr#r�Modulerr
r
r
r�<module>35s