code: def __init__(
      self,
      num_input_features: int,
      growth_rate: int,
      bn_size: int,
      drop_rate: float,
      memory_efficient: bool = False,
  ) -> None:
      super(_DenseLayer, self).__init__()
      self.norm1: nn.BatchNorm2d
      self.add_module("norm1", nn.BatchNorm2d(num_input_features))
      self.relu1: nn.ReLU
      self.add_module("relu1", nn.ReLU(inplace=True))
      self.conv1: nn.Conv2d
      self.add_module(
          "conv1",
          nn.Conv2d(
              num_input_features,
              bn_size * growth_rate,
              kernel_size=1,
              stride=1,
              bias=False,
          ),
      )
      self.norm2: nn.BatchNorm2d
      self.add_module("norm2", nn.BatchNorm2d(bn_size * growth_rate))
      self.relu2: nn.ReLU
      self.add_module("relu2", nn.ReLU(inplace=True))
      self.conv2: nn.Conv2d
      self.add_module(
          "conv2",
          nn.Conv2d(
              bn_size * growth_rate,
              growth_rate,
              kernel_size=3,
              stride=1,
              padding=1,
              bias=False,
          ),
      )
      self.drop_rate = float(drop_rate)
      self.memory_efficient = memory_efficient
  
file_path: ARKitScenes/depth_upsampling/models/mspf/blocks/dense_net.py
imports: from typing import List
  import torch
  import torch.nn.functional
  from torch import nn, Tensor
label_desc: Use image node_id 1 to create a new _DenseLayer object from inherited base classes: nn with example: obj = _DenseLayer(num_input_features, growth_rate, bn_size, drop_rate, memory_efficient)