MCPcopy Create free account
hub / github.com/buaacxf/VIPTR / PatchEmbed

Class PatchEmbed

modules/SVTR.py:264–338  ·  view source on GitHub ↗

Image to Patch Embedding

Source from the content-addressed store, hash-verified

262
263
264class PatchEmbed(nn.Module):
265 """ Image to Patch Embedding
266 """
267
268 def __init__(self,
269 img_size=[32, 100],
270 in_channels=3,
271 embed_dim=768,
272 sub_num=2,
273 patch_size=[4, 4],
274 mode='pope'):
275 super().__init__()
276 num_patches = (img_size[1] // (2 ** sub_num)) * \
277 (img_size[0] // (2 ** sub_num))
278 self.img_size = img_size
279 self.num_patches = num_patches
280 self.embed_dim = embed_dim
281 self.norm = None
282 if mode == 'pope':
283 if sub_num == 2:
284 self.proj = nn.Sequential(
285 ConvBNLayer(
286 in_channels=in_channels,
287 out_channels=embed_dim // 2,
288 kernel_size=3,
289 stride=2,
290 padding=1,
291 act=nn.GELU,
292 bias_attr=False),
293 ConvBNLayer(
294 in_channels=embed_dim // 2,
295 out_channels=embed_dim,
296 kernel_size=3,
297 stride=2,
298 padding=1,
299 act=nn.GELU,
300 bias_attr=False))
301 if sub_num == 3:
302 self.proj = nn.Sequential(
303 ConvBNLayer(
304 in_channels=in_channels,
305 out_channels=embed_dim // 4,
306 kernel_size=3,
307 stride=2,
308 padding=1,
309 act=nn.GELU,
310 bias_attr=False),
311 ConvBNLayer(
312 in_channels=embed_dim // 4,
313 out_channels=embed_dim // 2,
314 kernel_size=3,
315 stride=2,
316 padding=1,
317 act=nn.GELU,
318 bias_attr=False),
319 ConvBNLayer(
320 in_channels=embed_dim // 2,
321 out_channels=embed_dim,

Callers 1

__init__Method · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected