class_docstr: This module implements a basic residual convolution block using MinkowskiEngine
  
  Parameters
  ----------
  inplanes: int
      Input dimension
  planes: int
      Output dimension
  dilation: int
      Dilation value
  downsample: nn.Module
      If provided, downsample will be applied on input before doing residual addition
  bn_momentum: float
      Input dimension
class_docstr_tok: ["This","module","implements","a","basic","residual","convolution","block","using","MinkowskiEngine","Parameters","--","--","--","--","--","inplanes",":","int","Input","dimension","planes",":","int","Output","dimension","dilation",":","int","Dilation","value","downsample",":","nn.Module","If","provided",",","downsample","will","be","applied","on","input","before","doing","residual","addition","bn_momentum",":","float","Input","dimension"]
code: def forward(self, x):
      residual = x
  
      out = self.conv1(x)
      out = self.norm1(out)
      out = self.relu(out)
  
      out = self.conv2(out)
      out = self.norm2(out)
  
      if self.downsample is not None:
          residual = self.downsample(x)
  
      out += residual
      out = self.relu(out)
  
      return out
  
imports: import torch.nn
  import MinkowskiEngine
  from .common import ConvType, NormType
  from torch_points3d.utils.config import is_list
label_desc: Use image node_id 2 for calling the BasicBlock obj's underlying member method code with example usage: obj.forward(x) and returns: out