code: def __init__(
      self,
      num_channels: int,
      num_filters: int,
      stride: int = 1,
      has_se: bool = False,
      downsample: bool = False,
      name: str = None,
  ):
      super(BasicBlock, self).__init__()
  
      self.has_se = has_se
      self.downsample = downsample
  
      self.conv1 = layers.ConvBNReLU(
          in_channels=num_channels,
          out_channels=num_filters,
          kernel_size=3,
          stride=stride,
          padding="same",
          bias_attr=False,
      )
      self.conv2 = layers.ConvBN(
          in_channels=num_filters,
          out_channels=num_filters,
          kernel_size=3,
          padding="same",
          bias_attr=False,
      )
  
      if self.downsample:
          self.conv_down = layers.ConvBNReLU(
              in_channels=num_channels,
              out_channels=num_filters,
              kernel_size=1,
              padding="same",
              bias_attr=False,
          )
  
      if self.has_se:
          self.se = SELayer(
              num_channels=num_filters,
              num_filters=num_filters,
              reduction_ratio=16,
              name=name + "_fc",
          )
  
imports: import math
  from typing import List
  import paddle
  import paddle.nn
  import paddle.nn.functional
  import fcn_hrnetw48_voc.layers
label_desc: Use image node_id 1 to create a new BasicBlock object from inherited base classes: nn with example: obj = BasicBlock(num_channels, num_filters, stride, has_se, downsample, name)