MCPcopy Create free account
hub / github.com/MegEngine/MegEngine / VarNode

Class VarNode

imperative/python/megengine/utils/network_node.py:26–139  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

24
25
26class VarNode(NetworkNode, Tensor):
27 _users = None
28 _owner = None
29 _name = None
30 _id = None
31
32 def __new__(cls, var, *, owner_opr=None, name=None):
33 obj = Tensor.__new__(cls, var)
34 return obj
35
36 def __init__(self, var, *, owner_opr=None, name=None):
37 self._owner = owner_opr
38 self.name = name
39
40 @classmethod
41 def load(cls, sym_var, owner_opr):
42 obj = cls(sym_var)
43 obj.var = sym_var # mgb varnode
44 obj.name = sym_var.name
45 obj.owner = owner_opr
46 return obj
47
48 @property
49 def users(self):
50 if self._users is None:
51 self._users = []
52 return self._users
53
54 @property
55 def owner(self):
56 return self._owner
57
58 @owner.setter
59 def owner(self, owner):
60 self._owner = owner
61
62 @property
63 def id(self):
64 if self._id is None:
65 self._id = id(self)
66 return self._id
67
68 @property
69 def var(self):
70 return super().var()
71
72 @var.setter
73 def var(self, var):
74 self._reset(var)
75
76 def _reset(self, other):
77 if not isinstance(other, Tensor):
78 other = VarNode(other)
79 super()._reset(other)
80 self.owner = None
81
82 def _reset_var(self, var):
83 origin_owner = self.owner

Callers 4

make_tensorFunction · 0.90
_resetMethod · 0.70
compileMethod · 0.70
set_valueMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected