in tinynn/graph/tracer.py [0:0]
def prev_node_unique_name(self, idx, inplace=False) -> str:
"""A utility function to generate the name of the previous node with index"""
if idx < len(self.prev_nodes) and idx < len(self.prev_indices):
getattr_on_module = False
if (
isinstance(self.prev_nodes[idx].module, torch.nn.Module)
and type(self.module) is TraceFunction
and self.module.is_property
and '.' not in self.module.full_name
):
getattr_on_module = True
actual_inplace = False
if inplace:
actual_inplace = getattr_on_module
if isinstance(self.prev_nodes[idx].module, ConstantNode):
actual_inplace = True
if actual_inplace:
node_name = self.prev_nodes[idx].original_name
else:
node_name = self.prev_nodes[idx].unique_name
node_idx = self.prev_indices[idx]
ns = ''
if type(self.prev_nodes[idx].module) in (ConstantNode, torch.nn.quantized.FloatFunctional):
ns = 'self.'
elif getattr_on_module:
prev_t_ids = set(id(t) for t in self.prev_tensors)
next_t_ids = set(id(t) for t in self.prev_nodes[idx].next_tensors)
if len(prev_t_ids & next_t_ids) == 0:
ns = 'self.'
if node_idx is None:
return f'{ns}{node_name}'
else:
if isinstance(node_idx, (list, tuple)):
indices_str = ''.join([f'[{i}]' for i in node_idx])
return f'{ns}{node_name}{indices_str}'
else:
return f'{ns}{node_name}[{node_idx}]'
else:
return ''