class_docstr: High-Resolution Module for HRNet.
  
  In this module, every branch has 4 BasicBlocks/Bottlenecks. Fusion/Exchange
  is in this module.
code: def _check_branches(
      self, num_branches, num_blocks, in_channels, num_channels
  ):
      if num_branches != len(num_blocks):
          error_msg = (
              f"NUM_BRANCHES({num_branches}) "
              f"!= NUM_BLOCKS({len(num_blocks)})"
          )
          raise ValueError(error_msg)
  
      if num_branches != len(num_channels):
          error_msg = (
              f"NUM_BRANCHES({num_branches}) "
              f"!= NUM_CHANNELS({len(num_channels)})"
          )
          raise ValueError(error_msg)
  
      if num_branches != len(in_channels):
          error_msg = (
              f"NUM_BRANCHES({num_branches}) "
              f"!= NUM_INCHANNELS({len(in_channels)})"
          )
          raise ValueError(error_msg)
  
imports: import warnings
  import torch.nn
  from mmcv.cnn import build_conv_layer, build_norm_layer
  from mmengine.model import BaseModule, ModuleList, Sequential
  from torch.nn.modules.batchnorm import _BatchNorm
  from mmdet.registry import MODELS
  from .resnet import BasicBlock, Bottleneck
label_desc: Use image node_id 2 for calling the HRModule obj's underlying member method code with example usage: obj._check_branches(num_branches, num_blocks, in_channels, num_channels) without return types