code: def __init__(
      self,
      in_channels,
      out_channels,
      img_size: int = 224,
      patch_size: int = 16,
      stride: int = 8,
      padding: int = 0,
  ):
      super(ConvEmbedding, self).__init__()
      padding = padding
      self.img_size = to_2tuple(img_size)
      self.patch_size = to_2tuple(patch_size)
      self.height = math.floor(
          (self.img_size[0] + 2 * padding - self.patch_size[0]) / stride
          + 1
      )
      self.width = math.floor(
          (self.img_size[1] + 2 * padding - self.patch_size[1]) / stride
          + 1
      )
      self.grid_size = (self.height, self.width)
  
      self.conv = nn.Conv2d(
          in_channels,
          out_channels,
          kernel_size=patch_size,
          stride=stride,
          padding=padding,
          bias=True,
      )
  
imports: import math
  import re
  from functools import partial
  from typing import Sequence, Tuple
  import torch
  from torch import nn
  from timm.data import IMAGENET_DEFAULT_MEAN, IMAGENET_DEFAULT_STD
  from timm.layers import trunc_normal_, to_2tuple, LayerNorm
  from ._builder import build_model_with_cfg
  from ._registry import register_model, generate_default_cfgs
  from .vision_transformer import Block
label_desc: Use image node_id 1 to create a new ConvEmbedding object from inherited base classes: nn with example: obj = ConvEmbedding(in_channels, out_channels, img_size, patch_size, stride, padding)