class_docstr: HorNet
  
  Args:
      in_chans (`int`): Number of input channels.
      num_classes (`int`): Number for classes for classification.
      depths (`tuple`): Model depths.
      base_dim (`int`): Base dimensions.
      drop_path_rate (`float`): Drop ratio of drop path.
      layer_scale_init_value (`float`): Initial value to scale layer.
      head_init_scale (`float`): Initial value to scale head.
      gnconv (`nn.Module`): gnConv layer(s).
      uniform_init (`bool`): Flag to control whether to apply the uniform initial weights.
class_docstr_tok: ["HorNet","Args",":","in_chans","(","`","int","`",")",":","Number","of","input","channels",".","num_classes","(","`","int","`",")",":","Number","for","classes","for","classification",".","depths","(","`","tuple","`",")",":","Model","depths",".","base_dim","(","`","int","`",")",":","Base","dimensions",".","drop_path_rate","(","`","float","`",")",":","Drop","ratio","of","drop","path",".","layer_scale_init_value","(","`","float","`",")",":","Initial","value","to","scale","layer",".","head_init_scale","(","`","float","`",")",":","Initial","value","to","scale","head",".","gnconv","(","`","nn.Module","`",")",":","gnConv","layer","(","s",")",".","uniform_init","(","`","bool","`",")",":","Flag","to","control","whether","to","apply","the","uniform","initial","weights","."]
code: def __init__(
      self,
      in_chans=3,
      num_classes=1000,
      depths=(3, 3, 9, 3),
      base_dim=96,
      drop_path_rate=0.0,
      layer_scale_init_value=1e-6,
      head_init_scale=1.0,
      gnconv=GatedConv,
      block=Block,
      uniform_init=False,
  ):
      super().__init__()
  
      self.base_dim = base_dim
      self.num_classes = num_classes
  
      dims = [base_dim, base_dim * 2, base_dim * 4, base_dim * 8]
  
      self.downsample_layers = (
          nn.ModuleList()
      )  # stem and 3 intermediate downsampling conv layers
      stem = nn.Sequential(
          nn.Conv2d(in_chans, dims[0], kernel_size=4, stride=4),
          LayerNorm(dims[0], eps=1e-6, data_format="channels_first"),
      )
      self.downsample_layers.append(stem)
      for i in range(3):
          downsample_layer = nn.Sequential(
              LayerNorm(
                  dims[i], eps=1e-6, data_format="channels_first"
              ),
              nn.Conv2d(dims[i], dims[i + 1], kernel_size=2, stride=2),
          )
          self.downsample_layers.append(downsample_layer)
  
      self.stages = (
          nn.ModuleList()
      )  # 4 feature resolution stages, each consisting of multiple residual blocks
      dp_rates = [
          x.item()
          for x in torch.linspace(0, drop_path_rate, sum(depths))
      ]
  
      if not isinstance(gnconv, list):
          gnconv = [gnconv, gnconv, gnconv, gnconv]
      assert len(gnconv) == 4
  
      cur = 0
      for i in range(4):
          stage = nn.Sequential(
              *[
                  block(
                      dim=dims[i],
                      drop_rate=dp_rates[cur + j],
                      layer_scale_init_value=layer_scale_init_value,
                      gnconv=gnconv[i],
                  )
                  for j in range(depths[i])
              ]
          )
          self.stages.append(stage)
          cur += depths[i]
  
      self.norm = nn.LayerNorm(dims[-1], eps=1e-6)  # final norm layer
      self.head = nn.Linear(dims[-1], num_classes)
  
      self.uniform_init = uniform_init
  
      self.apply(self._init_weights)
      self.head.weight.data.mul_(head_init_scale)
      self.head.bias.data.mul_(head_init_scale)
  
file_path: towhee/towhee/models/hornet/hornet.py
imports: import torch
  from torch import nn
  from towhee.models.utils.weight_init import trunc_normal_
  from towhee.models.utils import create_model
  from towhee.models.convnext.utils import LayerNorm
  from towhee.models.hornet import Block, GatedConv, get_configs
label_desc: Use image node_id 1 to create a new HorNet object from inherited base classes: nn with example: obj = HorNet(in_chans, num_classes, depths, base_dim, drop_path_rate, layer_scale_init_value, head_init_scale, gnconv, block, uniform_init)