code: def merge_bn(self):
      if self.bn is None:
          return
  
      if self.conv.bias is not None:
          raise AssertionError
      conv_weight = self.conv.weight.data
      bn_weight = self.bn.weight.data
      bn_bias = self.bn.bias.data
      bn_running_mean = self.bn.running_mean
      bn_running_var = self.bn.running_var
      bn_eps = self.bn.eps
  
      # https://github.com/sanghoon/pva-faster-rcnn/issues/5
      # https://github.com/sanghoon/pva-faster-rcnn/commit/39570aab8c6513f0e76e5ab5dba8dfbf63e9c68c
  
      N, C, KH, KW = conv_weight.size()
      std = 1 / (torch.sqrt(bn_running_var + bn_eps))
      std_bn_weight = (
          (std * bn_weight)
          .repeat(C * KH * KW, 1)
          .t()
          .contiguous()
          .view(N, C, KH, KW)
      )
      conv_weight_hat = std_bn_weight * conv_weight
      conv_bias_hat = bn_bias - bn_weight * std * bn_running_mean
  
      self.bn = None
      self.conv = nn.Conv2d(
          in_channels=self.conv.in_channels,
          out_channels=self.conv.out_channels,
          kernel_size=self.conv.kernel_size,
          padding=self.conv.padding,
          stride=self.conv.stride,
          dilation=self.conv.dilation,
          groups=self.conv.groups,
          bias=True,
      )
      self.conv.weight.data = conv_weight_hat  # fill in
      self.conv.bias.data = conv_bias_hat
  
imports: import torch
  import torch.nn
  import torch.nn.functional
label_desc: Use image node_id 3 for calling the ConvBnRelu2d obj's underlying member method code with example usage: obj.merge_bn() without return types