code: def __init__(
      self,
      in_channels: int,
      out_channels: int,
      num_blocks: int,
      expansion: float = 1.0,
  ) -> None:
      super().__init__()
      hidden_channels = int(out_channels * expansion)
      self.conv1 = ConvNormAct(
          in_channels, hidden_channels, 1, act="silu"
      )
      self.conv2 = ConvNormAct(
          in_channels, hidden_channels, 1, act="silu"
      )
      self.bottlenecks = nn.Sequential(
          *[
              RepVggBlock(hidden_channels, hidden_channels)
              for _ in range(num_blocks)
          ]
      )
      self.conv3 = (
          ConvNormAct(hidden_channels, out_channels, 1, act="silu")
          if hidden_channels != out_channels
          else nn.Identity()
      )
  
imports: from __future__ import annotations
  from typing import Optional
  import torch
  import torch.nn.functional
  from torch import nn
  from torch.nn.utils.fusion import fuse_conv_bn_weights
  from kornia.contrib.models.common import ConvNormAct
  from kornia.core import Module, Tensor, concatenate, pad
label_desc: Use image node_id 1 to create a new CSPRepLayer object from inherited base classes: Module with example: obj = CSPRepLayer(in_channels, out_channels, num_blocks, expansion)