docstr: Build the channel dependency for the conv layers
  in the model. This function return the group number
  of each conv layers. Note that, here, the group count
  of conv layers may be larger than their originl groups.
  This is because that the input channel will also be grouped
  for the group conv layers. To make this clear, assume we
  have two group conv layers: conv1(group=2), conv2(group=4).
  conv2 takes the output features of conv1 as input.
  Then we have to the filters of conv1 can still be
  divided into 4 groups after filter pruning, because
  the input channels of conv2 shoule be divided into
  4 groups.
  
  Returns
  -------
  self.dependency : dict
      key: the name of conv layers, value: the minimum value that the number of
      filters should be divisible to.
docstr_tok: ["Build","the","channel","dependency","for","the","conv","layers","in","the","model",".","This","function","return","the","group","number","of","each","conv","layers",".","Note","that",",","here",",","the","group","count","of","conv","layers","may","be","larger","than","their","originl","groups",".","This","is","because","that","the","input","channel","will","also","be","grouped","for","the","group","conv","layers",".","To","make","this","clear",",","assume","we","have","two","group","conv","layers",":","conv1","(","group=2",")",",","conv2","(","group=4",")",".","conv2","takes","the","output","features","of","conv1","as","input",".","Then","we","have","to","the","filters","of","conv1","can","still","be","divided","into","4","groups","after","filter","pruning",",","because","the","input","channels","of","conv2","shoule","be","divided","into","4","groups",".","Returns","--","--","--","-","self.dependency",":","dict","key",":","the","name","of","conv","layers",",","value",":","the","minimum","value","that","the","number","of","filters","should","be","divisible","to","."]
code: def build_dependency(self):
      """
      Build the channel dependency for the conv layers
      in the model. This function return the group number
      of each conv layers. Note that, here, the group count
      of conv layers may be larger than their originl groups.
      This is because that the input channel will also be grouped
      for the group conv layers. To make this clear, assume we
      have two group conv layers: conv1(group=2), conv2(group=4).
      conv2 takes the output features of conv1 as input.
      Then we have to the filters of conv1 can still be
      divided into 4 groups after filter pruning, because
      the input channels of conv2 shoule be divided into
      4 groups.
  
      Returns
      -------
      self.dependency : dict
          key: the name of conv layers, value: the minimum value that the number of
          filters should be divisible to.
      """
      for node in self.graph.nodes_py.nodes_op:
          if (
              node.op_type == "Conv2d"
              or node.op_type == "ConvTranspose2d"
          ):
              group = self._get_conv_groups(node)
  
              if node.name in self.dependency:
                  # the conv layer whose group is larger than 1 will require that
                  # it's number of output channel to be divisible by the number of group.
                  self.dependency[node.name] = max(
                      self.dependency[node.name], group
                  )
              else:
                  self.dependency[node.name] = group
              if group > 1:
                  # for the conv layer whose group is larger than 1, it will require the number
                  # of output channels of their parent conv layer to be divisible by group.
                  parent_convs = self._get_parent_convs(node)
                  for parent in parent_convs:
                      if parent in self.dependency:
                          self.dependency[parent] = max(
                              self.dependency[parent], group
                          )
                      else:
                          self.dependency[parent] = group
      return self.dependency
  
imports: import csv
  import logging
label_desc: Use image node_id 4 for calling the GroupDependency obj's underlying member method code with example usage: obj.build_dependency() and returns: self