code: def _make_layer(self, block, planes, blocks, stride=1):
      downsample = None
      if stride != 1 or self.inplanes != planes * block.expansion:
          conv = layer.Conv2d(
              self.inplanes,
              planes * block.expansion,
              1,
              stride=stride,
              bias=False,
          )
          bn = layer.BatchNorm2d(planes * block.expansion)
  
          def _downsample(x):
              return bn(conv(x))
  
          downsample = _downsample
  
      layers = []
      layers.append(block(self.inplanes, planes, stride, downsample))
      self.inplanes = planes * block.expansion
      for i in range(1, blocks):
          layers.append(block(self.inplanes, planes))
  
      def forward(x):
          for layer in layers:
              x = layer(x)
          return x
  
      return forward, layers
  
imports: from singa import layer
  from singa import model
label_desc: Use image node_id 2 for calling the ResNet obj's underlying member method code with example usage: obj._make_layer(block, planes, blocks, stride) and returns: forward,  layers, x, bn