code: def _make_layer(
      self, block, planes, blocks, stride=1, dilation=1, bn_momentum=0.1
  ):
      downsample = None
      if stride != 1 or self.inplanes != planes * block.EXPANSION:
          downsample = nn.Sequential(
              ME.MinkowskiConvolution(
                  self.inplanes,
                  planes * block.EXPANSION,
                  kernel_size=1,
                  stride=stride,
                  dimension=self.D,
              ),
              ME.MinkowskiBatchNorm(planes * block.EXPANSION),
          )
      layers = []
      layers.append(
          block(
              self.inplanes,
              planes,
              stride=stride,
              dilation=dilation,
              downsample=downsample,
              dimension=self.D,
          )
      )
      self.inplanes = planes * block.EXPANSION
      for i in range(1, blocks):
          layers.append(
              block(
                  self.inplanes,
                  planes,
                  stride=1,
                  dilation=dilation,
                  dimension=self.D,
              )
          )
  
      return nn.Sequential(*layers)
  
imports: import torch.nn
  import MinkowskiEngine
  from .modules import BasicBlock, Bottleneck
label_desc: Use image node_id 4 for calling the ResNetBase obj's underlying member method code with example usage: obj._make_layer(block, planes, blocks, stride, dilation, bn_momentum) and returns: nn