docstr: Args:
      input_size (Tuple[int, int, int]): the input size in CHW format.
      conv_layers (list): feature dimensions of each Convolution layer
      fc_layers (list): feature dimensions of each FCN layer
docstr_tok: ["Args",":","input_size","(","Tuple","[","int",",","int",",","int","]",")",":","the","input","size","in","CHW","format",".","conv_layers","(","list",")",":","feature","dimensions","of","each","Convolution","layer","fc_layers","(","list",")",":","feature","dimensions","of","each","FCN","layer"]
code: def __init__(
      self,
      opts,
      input_size: Tuple[int, int, int],
      conv_layers: List[int],
      fc_layers: List[int],
      *args,
      **kwargs,
  ):
      """
      Args:
          input_size (Tuple[int, int, int]): the input size in CHW format.
          conv_layers (list): feature dimensions of each Convolution layer
          fc_layers (list): feature dimensions of each FCN layer
      """
      in_channels, in_height, in_width = input_size
  
      blocks = []
      previous_channels = in_channels
      for current_channels in conv_layers:
          blocks.extend(
              [
                  ConvLayer2d(
                      opts,
                      in_channels=previous_channels,
                      out_channels=current_channels,
                      kernel_size=3,
                      stride=1,
                      use_norm=False,
                      use_act=False,
                  ),
                  replace_syncbn_with_syncbnfp32(
                      opts, num_features=current_channels
                  ),
                  nn.ReLU(inplace=False),
              ]
          )
          previous_channels = current_channels
      blocks.append(nn.Flatten())
      previous_channels = previous_channels * in_height * in_width
  
      for current_channels in fc_layers:
          blocks.append(
              LinearLayer(
                  previous_channels, current_channels, bias=True
              )
          )
          blocks.append(nn.ReLU(inplace=True))
          previous_channels = current_channels
  
      super().__init__(*blocks)
      for layer in self.modules():
          if isinstance(layer, nn.Conv2d):
              initialize_conv_layer(
                  module=layer, init_method="kaiming_normal"
              )
          elif isinstance(layer, LinearLayer):
              initialize_fc_layer(
                  module=layer, init_method="kaiming_uniform"
              )
  
imports: from typing import List, Tuple
  import torch
  from torch import Tensor, nn
  from cvnets.layers import ConvLayer2d, LinearLayer, TransposeConvLayer2d, get_normalization_layer
  from cvnets.misc.init_utils import initialize_conv_layer, initialize_fc_layer
label_desc: Use image node_id 1 to create a new FastRCNNConvFCHead object from inherited base classes: nn with example: obj = FastRCNNConvFCHead(opts, input_size, conv_layers, fc_layers)