class_docstr: Module that adds a FPN from on top of a set of feature maps. This is based on
  `"Feature Pyramid Network for Object Detection" <https://arxiv.org/abs/1612.03144>`_.
  The feature maps are currently supposed to be in increasing depth
  order.
  The input to the model is expected to be an OrderedDict[Tensor], containing
  the feature maps on top of which the FPN will be added.
  Arguments:
      in_channels_list (list[int]): number of channels for each feature map that
          is passed to the module
      out_channels (int): number of channels of the FPN representation
      extra_blocks (ExtraFPNBlock or None): if provided, extra operations will
          be performed. It is expected to take the fpn features, the original
          features and the names of the original features as input, and returns
          a new list of feature maps and their corresponding names
class_docstr_tok: ["Module","that","adds","a","FPN","from","on","top","of","a","set","of","feature","maps",".","This","is","based","on","`","``","Feature","Pyramid","Network","for","Object","Detection","''","<","https",":","\/\/arxiv.org\/abs\/1612.03144",">","`","_",".","The","feature","maps","are","currently","supposed","to","be","in","increasing","depth","order",".","The","input","to","the","model","is","expected","to","be","an","OrderedDict","[","Tensor","]",",","containing","the","feature","maps","on","top","of","which","the","FPN","will","be","added",".","Arguments",":","in_channels_list","(","list","[","int","]",")",":","number","of","channels","for","each","feature","map","that","is","passed","to","the","module","out_channels","(","int",")",":","number","of","channels","of","the","FPN","representation","extra_blocks","(","ExtraFPNBlock","or","None",")",":","if","provided",",","extra","operations","will","be","performed",".","It","is","expected","to","take","the","fpn","features",",","the","original","features","and","the","names","of","the","original","features","as","input",",","and","returns","a","new","list","of","feature","maps","and","their","corresponding","names"]
code: def __init__(self, in_channels_list, out_channels, extra_blocks=None):
      super().__init__()
      # 用来调整resnet特征矩阵(layer1,2,3,4)的channel（kernel_size=1）
      self.inner_blocks = nn.ModuleList()
      # 对调整后的特征矩阵使用3x3的卷积核来得到对应的预测特征矩阵
      self.layer_blocks = nn.ModuleList()
      for in_channels in in_channels_list:
          if in_channels == 0:
              continue
          inner_block_module = nn.Conv2d(in_channels, out_channels, 1)
          layer_block_module = nn.Conv2d(
              out_channels, out_channels, 3, padding=1
          )
          self.inner_blocks.append(inner_block_module)
          self.layer_blocks.append(layer_block_module)
  
      # initialize parameters now to avoid modifying the initialization of top_blocks
      for m in self.children():
          if isinstance(m, nn.Conv2d):
              nn.init.kaiming_uniform_(m.weight, a=1)
              nn.init.constant_(m.bias, 0)
  
      self.extra_blocks = extra_blocks
  
imports: from collections import OrderedDict
  import torch.nn
  import torch
  from torch import Tensor
  import torch.nn.functional
  from torch.jit.annotations import Tuple, List, Dict
label_desc: Use image node_id 1 to create a new FeaturePyramidNetwork object from inherited base classes: nn with example: obj = FeaturePyramidNetwork(in_channels_list, out_channels, extra_blocks)