code: def __init__(
      self,
      in_chans=3,
      num_classes=1000,
      depths=[3, 3, 9, 3],
      dims=[96, 192, 384, 768],
  ):
      self.downsample_layers = [
          [
              Conv2d(in_chans, dims[0], kernel_size=4, stride=4),
              LayerNorm2d(dims[0], eps=1e-6),
          ],
          *[
              [
                  LayerNorm2d(dims[i], eps=1e-6),
                  Conv2d(dims[i], dims[i + 1], kernel_size=2, stride=2),
              ]
              for i in range(len(dims) - 1)
          ],
      ]
      self.stages = [
          [Block(dims[i]) for _ in range(depths[i])]
          for i in range(len(dims))
      ]
      self.norm = LayerNorm(dims[-1])
      self.head = Linear(dims[-1], num_classes)
  
file_path: tinygrad/extra/models/convnext.py
imports: from tinygrad.tensor import Tensor
  from tinygrad.nn import Conv2d, LayerNorm, LayerNorm2d, Linear
  from tinygrad.helpers import fetch, get_child
label_desc: Use image node_id 1 to create a new ConvNeXt object  with example: obj = ConvNeXt(in_chans, num_classes, depths, dims)