class_docstr: Some pruners may prune the input channel of the convolutional
  layers. While pruning the input channel of the convolutional layers,
  the layers that share the same input tensor should prune the same
  channels, and we say these layers that share the same input tensor/channel
  has the input channel dependency. If we only prune the input channel of one
  layer in the dependency set, there will be a shape conflict for the other
  layers in the same dependency set, which may trigger a runtime error.
  Here we judge whether the application will truncate the dependency by analyzing
  whether the number of channels before and after the operation has changed.
  If not, the input channel dependency will be passed to the following nodes.
class_docstr_tok: ["Some","pruners","may","prune","the","input","channel","of","the","convolutional","layers",".","While","pruning","the","input","channel","of","the","convolutional","layers",",","the","layers","that","share","the","same","input","tensor","should","prune","the","same","channels",",","and","we","say","these","layers","that","share","the","same","input","tensor\/channel","has","the","input","channel","dependency",".","If","we","only","prune","the","input","channel","of","one","layer","in","the","dependency","set",",","there","will","be","a","shape","conflict","for","the","other","layers","in","the","same","dependency","set",",","which","may","trigger","a","runtime","error",".","Here","we","judge","whether","the","application","will","truncate","the","dependency","by","analyzing","whether","the","number","of","channels","before","and","after","the","operation","has","changed",".","If","not",",","the","input","channel","dependency","will","be","passed","to","the","following","nodes","."]
code: def _get_following_convs(self, tensor):
      queue = []
      key_layers = []
      queue.extend(self.graph.input_to_node[tensor])
      while queue:
          curnode = queue.pop(0)
          if (
              curnode.op_type == "Conv2d"
              or curnode.op_type == "Linear"
              or curnode.op_type == "ConvTranspose2d"
          ):
              # find the first met conv
              key_layers.append(curnode.name)
              continue
          elif curnode.op_type in RESHAPE_OPS:
              # check if the reshape operation will break the channel dependency
              if reshape_break_channel_dependency(curnode):
                  # reshape operations also breaks the dependency relationship
                  continue
          successors = self.graph.find_successors(curnode.unique_name)
          successors = [
              self.graph.name_to_node[name] for name in successors
          ]
          for layer in successors:
              queue.append(layer)
      return key_layers
  
imports: import csv
  import logging
label_desc: Use image node_id 2 for calling the InputChannelDependency obj's underlying member method code with example usage: obj._get_following_convs(tensor) and returns: key_layers