code: def forward(self, x):
      if self.with_plugins:
          x = self.forward_plugin(x, self.before_conv1_plugin_names)
      residual = x
  
      out = self.conv1(x)
      out = self.bn1(out)
      out = self.relu(out)
  
      if self.with_plugins:
          out = self.forward_plugin(out, self.after_conv1_plugin_names)
  
      out = self.conv2(out)
      out = self.bn2(out)
  
      if self.with_plugins:
          out = self.forward_plugin(out, self.after_conv2_plugin_names)
  
      if self.downsample is not None:
          residual = self.downsample(x)
  
      out += residual
      out = self.relu(out)
  
      if self.with_plugins:
          out = self.forward_plugin(
              out, self.after_shortcut_plugin_names
          )
  
      return out
  
file_path: mmocr/mmocr/models/textrecog/layers/conv_layer.py
imports: import torch.nn
  from mmcv.cnn import build_plugin_layer
label_desc: Use image node_id 4 for calling the BasicBlock obj's underlying member method code with example usage: obj.forward(x) and returns: out