code: def __init__(
      self,
      in_chs,
      out_chs,
      kernel_size=7,
      stride=2,
      depth=2,
      dilation=(1, 1),
      drop_path_rates=None,
      ls_init_value=1.0,
      conv_mlp=False,
      conv_bias=True,
      use_grn=False,
      act_layer="gelu",
      norm_layer=None,
      norm_layer_cl=None,
  ):
      super().__init__()
      self.grad_checkpointing = False
  
      if in_chs != out_chs or stride > 1 or dilation[0] != dilation[1]:
          ds_ks = 2 if stride > 1 or dilation[0] != dilation[1] else 1
          pad = (
              "same" if dilation[1] > 1 else 0
          )  # same padding needed if dilation used
          self.downsample = nn.Sequential(
              norm_layer(in_chs),
              create_conv2d(
                  in_chs,
                  out_chs,
                  kernel_size=ds_ks,
                  stride=stride,
                  dilation=dilation[0],
                  padding=pad,
                  bias=conv_bias,
              ),
          )
          in_chs = out_chs
      else:
          self.downsample = nn.Identity()
  
      drop_path_rates = drop_path_rates or [0.0] * depth
      stage_blocks = []
      for i in range(depth):
          stage_blocks.append(
              ConvNeXtBlock(
                  in_chs=in_chs,
                  out_chs=out_chs,
                  kernel_size=kernel_size,
                  dilation=dilation[1],
                  drop_path=drop_path_rates[i],
                  ls_init_value=ls_init_value,
                  conv_mlp=conv_mlp,
                  conv_bias=conv_bias,
                  use_grn=use_grn,
                  act_layer=act_layer,
                  norm_layer=norm_layer if conv_mlp else norm_layer_cl,
              )
          )
          in_chs = out_chs
      self.blocks = nn.Sequential(*stage_blocks)
  
imports: from collections import OrderedDict
  from functools import partial
  from typing import Callable, Optional, Tuple, Union
  import torch
  import torch.nn
  from timm.data import IMAGENET_DEFAULT_MEAN, IMAGENET_DEFAULT_STD, OPENAI_CLIP_MEAN, OPENAI_CLIP_STD
  from timm.layers import trunc_normal_, AvgPool2dSame, DropPath, Mlp, GlobalResponseNormMlp, LayerNorm2d, LayerNorm, create_conv2d, get_act_layer, make_divisible, to_ntuple
  from timm.layers import NormMlpClassifierHead, ClassifierHead
  from ._builder import build_model_with_cfg
  from ._manipulate import named_apply, checkpoint_seq
  from ._registry import generate_default_cfgs, register_model, register_model_deprecations
label_desc: Use image node_id 1 to create a new ConvNeXtStage object from inherited base classes: nn with example: obj = ConvNeXtStage(in_chs, out_chs, kernel_size, stride, depth, dilation, drop_path_rates, ls_init_value, conv_mlp, conv_bias, use_grn, act_layer, norm_layer, norm_layer_cl)