class_docstr: The subnet with the architecture of PFLD. 
docstr: Parameters
  ----------
  lookup_table : class
      to manage the candidate ops, layer information and layer perf
  sampled_ops : list of str
      the searched layer names of the subnet
  num_points : int
      the number of landmarks for prediction
docstr_tok: ["Parameters","--","--","--","--","--","lookup_table",":","class","to","manage","the","candidate","ops",",","layer","information","and","layer","perf","sampled_ops",":","list","of","str","the","searched","layer","names","of","the","subnet","num_points",":","int","the","number","of","landmarks","for","prediction"]
code: def __init__(self, lookup_table, sampled_ops, num_points=106):
      """
      Parameters
      ----------
      lookup_table : class
          to manage the candidate ops, layer information and layer perf
      sampled_ops : list of str
          the searched layer names of the subnet
      num_points : int
          the number of landmarks for prediction
      """
      super(PFLDInference, self).__init__()
  
      stage_names = [
          stage_name for stage_name in lookup_table.layer_num
      ]
      stage_n = [lookup_table.layer_num[stage] for stage in stage_names]
      self.stem = StemBlock(init_ch=INIT_CH, bottleneck=False)
  
      self.block4_1 = MBBlock(INIT_CH, 32, stride=2, mid_ch=32)
      stages_0 = [
          SingleOperation(
              lookup_table.layer_configs[layer_id],
              lookup_table.lut_ops[stage_names[0]],
              sampled_ops[layer_id],
          )
          for layer_id in range(stage_n[0])
      ]
  
      stages_1 = [
          SingleOperation(
              lookup_table.layer_configs[layer_id],
              lookup_table.lut_ops[stage_names[1]],
              sampled_ops[layer_id],
          )
          for layer_id in range(stage_n[0], stage_n[0] + stage_n[1])
      ]
  
      blocks = stages_0 + stages_1
      self.blocks = nn.Sequential(*blocks)
  
      self.avg_pool1 = nn.Conv2d(
          INIT_CH, INIT_CH, 9, 8, 1, groups=INIT_CH, bias=False
      )
      self.avg_pool2 = nn.Conv2d(32, 32, 3, 2, 1, groups=32, bias=False)
  
      self.block6_1 = nn.Conv2d(96 + INIT_CH, 64, 1, 1, 0, bias=False)
      self.block6_2 = MBBlock(64, 64, res=True, se=True, mid_ch=128)
      self.block6_3 = SeparableConv(64, 128, 1)
  
      self.conv7 = nn.Conv2d(128, 128, 7, 1, 0, groups=128, bias=False)
      self.fc = nn.Conv2d(128, num_points * 2, 1, 1, 0, bias=True)
  
      # init params
      self.init_params()
  
file_path: nni/examples/nas/legacy/oneshot/pfld/lib/subnet.py
imports: from __future__ import absolute_import, division, print_function
  import torch
  import torch.nn
  from lib.ops import MBBlock, SeparableConv, SingleOperation, StemBlock, conv_bn
  from torch.nn import init
label_desc: Use image node_id 1 to create a new PFLDInference object from inherited base classes: nn with example: obj = PFLDInference(lookup_table, sampled_ops, num_points)