Hello,
I'm a bit confused about the effects of the patch_size parameter.
If I understand the code of the PatchEmbed/PatchUnEmbed Class correctly, the forward pass is not affected by the patch_size at all.
Does the patch_size parameter have an effect anywhere else in the model, or is the effective patch size for the model always 1?
Thank you for your help :)
class PatchEmbed(nn.Module):
r""" Image to Patch Embedding
Args:
img_size (int): Image size. Default: 224.
patch_size (int): Patch token size. Default: 4.
in_chans (int): Number of input image channels. Default: 3.
embed_dim (int): Number of linear projection output channels. Default: 96.
norm_layer (nn.Module, optional): Normalization layer. Default: None
"""
def __init__(self, img_size=224, patch_size=4, in_chans=3, embed_dim=96, norm_layer=None):
super().__init__()
img_size = to_2tuple(img_size)
patch_size = to_2tuple(patch_size)
patches_resolution = [img_size[0] // patch_size[0], img_size[1] // patch_size[1]]
self.img_size = img_size
self.patch_size = patch_size
self.patches_resolution = patches_resolution
self.num_patches = patches_resolution[0] * patches_resolution[1]
self.in_chans = in_chans
self.embed_dim = embed_dim
if norm_layer is not None:
self.norm = norm_layer(embed_dim)
else:
self.norm = None
def forward(self, x):
x = x.flatten(2).transpose(1, 2) # b Ph*Pw c
if self.norm is not None:
x = self.norm(x)
return x
Hello, I'm a bit confused about the effects of the patch_size parameter. If I understand the code of the PatchEmbed/PatchUnEmbed Class correctly, the forward pass is not affected by the patch_size at all.
Does the patch_size parameter have an effect anywhere else in the model, or is the effective patch size for the model always 1? Thank you for your help :)