code: def __init__(
      self,
      input_feature_channels,
      output_feature_channels,
      num_convs,
      conv_op=nn.Conv2D,
      conv_kwargs=None,
      norm_op=nn.BatchNorm2D,
      norm_op_kwargs=None,
      dropout_op=nn.Dropout2D,
      dropout_op_kwargs=None,
      nonlin=nn.LeakyReLU,
      nonlin_kwargs=None,
      first_stride=None,
      basic_block=layers.ConvDropoutNormNonlin,
  ):
      super(StackedConvLayers, self).__init__()
      self.input_channels = input_feature_channels
      self.output_channels = output_feature_channels
  
      if nonlin_kwargs is None:
          nonlin_kwargs = {"negative_slope": 1e-2}
      if dropout_op_kwargs is None:
          dropout_op_kwargs = {"p": 0.5}
      if norm_op_kwargs is None:
          norm_op_kwargs = {"eps": 1e-5}
      if conv_kwargs is None:
          conv_kwargs = {
              "kernel_size": 3,
              "stride": 1,
              "padding": 1,
              "dilation": 1,
              "bias_attr": True,
          }
  
      self.nonlin_kwargs = nonlin_kwargs
      self.nonlin = nonlin
      self.dropout_op = dropout_op
      self.dropout_op_kwargs = dropout_op_kwargs
      self.norm_op_kwargs = norm_op_kwargs
      self.conv_kwargs = conv_kwargs
      self.conv_op = conv_op
      self.norm_op = norm_op
  
      if first_stride is not None:
          self.conv_kwargs_first_conv = deepcopy(conv_kwargs)
          self.conv_kwargs_first_conv["stride"] = first_stride
      else:
          self.conv_kwargs_first_conv = conv_kwargs
  
      self.blocks = nn.Sequential(
          basic_block(
              input_feature_channels,
              output_feature_channels,
              self.conv_op,
              self.conv_kwargs_first_conv,
              self.norm_op,
              self.norm_op_kwargs,
              self.dropout_op,
              self.dropout_op_kwargs,
              self.nonlin,
              self.nonlin_kwargs,
          ),
          *[
              basic_block(
                  output_feature_channels,
                  output_feature_channels,
                  self.conv_op,
                  self.conv_kwargs,
                  self.norm_op,
                  self.norm_op_kwargs,
                  self.dropout_op,
                  self.dropout_op_kwargs,
                  self.nonlin,
                  self.nonlin_kwargs,
              )
              for _ in range(num_convs - 1)
          ],
      )
  
imports: import os
  import sys
  import pickle
  import numpy
  from copy import deepcopy
  import paddle
  import paddle.nn
  import paddle.nn.functional
  from medicalseg.cvlibs import manager
  from medicalseg.utils import utils
  from medicalseg.cvlibs import param_init
  from medicalseg.models import layers
  from tools.preprocess_utils import experiment_planner
label_desc: Use image node_id 1 to create a new StackedConvLayers object from inherited base classes: nn with example: obj = StackedConvLayers(input_feature_channels, output_feature_channels, num_convs, conv_op, conv_kwargs, norm_op, norm_op_kwargs, dropout_op, dropout_op_kwargs, nonlin, nonlin_kwargs, first_stride, basic_block)