class_docstr: NodePathTracer is an FX tracer that, for each operation, also records the
  name of the Node from which the operation originated. A node name here is
  a `.` separated path walking the hierarchy from top level module down to
  leaf operation or leaf module. The name of the top level module is not
  included as part of the node name. For example, if we trace a module whose
  forward method applies a ReLU module, the name for that node will simply
  be 'relu'.
  
  Some notes on the specifics:
      - Nodes are recorded to `self.node_to_qualname` which is a dictionary
        mapping a given Node object to its node name.
      - Nodes are recorded in the order which they are executed during
        tracing.
      - When a duplicate node name is encountered, a suffix of the form
        _{int} is added. The counter starts from 1.
code: def __init__(self, *args, **kwargs):
      super().__init__(*args, **kwargs)
      # Track the qualified name of the Node being traced
      self.current_module_qualname = ""
      # A map from FX Node to the qualified name\#
      # NOTE: This is loosely like the "qualified name" mentioned in the
      # torch.fx docs https://pytorch.org/docs/stable/fx.html but adapted
      # for the purposes of the torchvision feature extractor
      self.node_to_qualname = OrderedDict()
  
imports: import inspect
  import math
  import re
  import warnings
  from collections import OrderedDict
  from copy import deepcopy
  from itertools import chain
  from typing import Any, Callable, Dict, List, Optional, Tuple, Union
  import torch
  import torchvision
  from torch import fx, nn
  from torch.fx.graph_module import _copy_attr
label_desc: Use image node_id 1 to create a new NodePathTracer object from inherited base classes: LeafModuleAwareTracer with example: obj = NodePathTracer()