tensornetwork.AbstractNode¶
-
class
tensornetwork.
AbstractNode
(name: Optional[str] = None, axis_names: Optional[List[str]] = None, backend: Optional[tensornetwork.backends.abstract_backend.AbstractBackend] = None, shape: Optional[Tuple[int]] = None)¶ Abstract class for nodes. Should be subclassed.
A Node represents a concrete tensor in a tensor network. The number of edges for a node represents the rank of that tensor.
For example:
- A node with no edges means this node represents a scalar value.
- A node with a single edge means this node is a vector.
- A node with two edges represents a matrix.
- A node with three edges is a tensor of rank 3, etc.
Each node can have an arbitrary rank/number of edges, each of which can have an arbitrary dimension.
-
__init__
(name: Optional[str] = None, axis_names: Optional[List[str]] = None, backend: Optional[tensornetwork.backends.abstract_backend.AbstractBackend] = None, shape: Optional[Tuple[int]] = None) → None¶ Create a node. Should be subclassed before usage and a limited number of abstract methods and properties implemented.
Parameters: - name – Name of the node. Used primarily for debugging.
- axis_names – List of names for each of the tensor’s axes.
- shape – the shape of the tensor, as tuple of integers.
Raises: ValueError
– If there is a repeated name inaxis_names
or if the length doesn’t match the shape of the tensor.
Methods
__init__
(name, axis_names, backend, shape)Create a node. add_axis_names
(axis_names)Add axis names to a Node. add_edge
(edge, axis, str], override)Add an edge to the node on the given axis. copy
(conjugate)disable
()fresh_edges
(axis_names)from_serial_dict
(serial_dict)Return a node given a serialized dict representing it. get_all_dangling
()Return the set of dangling edges connected to this node. get_all_edges
()get_all_nondangling
()Return the set of nondangling edges connected to this node. get_axis_number
(axis, int])Get the axis number for a given axis name or value. get_dimension
(axis, int])Get the dimension of the given axis. get_edge
(axis, str])get_rank
()Return rank of tensor represented by self. get_tensor
()has_dangling_edge
()has_nondangling_edge
()reorder_axes
(perm)Reorder axes of the node’s tensor. reorder_edges
(edge_order)Reorder the edges for this given Node. set_name
(name)set_tensor
(tensor)tensor_from_edge_order
(perm)to_serial_dict
()Return a serializable dict representing the node. Attributes
axis_names
dtype
edges
name
shape
sparse_shape
tensor
-
add_axis_names
(axis_names: List[str]) → None¶ Add axis names to a Node.
Parameters: axis_names – List of names for each of the tensor’s axes. Raises: ValueError
– If there is a repeated name inaxis_names
or if the length doesn’t match the shape of the tensor.
-
add_edge
(edge: tensornetwork.network_components.Edge, axis: Union[int, str], override: bool = False) → None¶ Add an edge to the node on the given axis.
Parameters: - edge – The edge to add.
- axis – The axis the edge points to.
- override – If true, replace the existing edge with the new one.
Raises: ValueError
– If the edge on axis is not dangling.
-
classmethod
from_serial_dict
(serial_dict) → tensornetwork.network_components.AbstractNode¶ Return a node given a serialized dict representing it.
Parameters: serial_dict – A python dict representing a serialized node. Returns: A node.
-
get_all_dangling
() → List[tensornetwork.network_components.Edge]¶ Return the set of dangling edges connected to this node.
-
get_all_nondangling
() → Set[tensornetwork.network_components.Edge]¶ Return the set of nondangling edges connected to this node.
-
get_axis_number
(axis: Union[str, int]) → int¶ Get the axis number for a given axis name or value.
-
get_dimension
(axis: Union[str, int]) → Optional[int]¶ Get the dimension of the given axis.
Parameters: axis – The axis of the underlying tensor. Returns: The dimension of the given axis. Raises: ValueError
– if axis isn’t an int or if axis is too large or small.
-
get_rank
() → int¶ Return rank of tensor represented by self.
-
reorder_axes
(perm: List[int]) → tensornetwork.network_components.AbstractNode¶ Reorder axes of the node’s tensor.
This will also update all of the node’s edges.
Parameters: perm – Permutation of the dimensions of the node’s tensor. Returns: This node post reordering. Raises: AttributeError
– If the Node has no tensor.
-
reorder_edges
(edge_order: List[Edge]) → tensornetwork.network_components.AbstractNode¶ Reorder the edges for this given Node.
This will reorder the node’s edges and transpose the underlying tensor accordingly.
Parameters: edge_order – List of edges. The order in the list determines the new edge ordering.
Returns: This node post reordering.
Raises: ValueError
– If either the list of edges is not the same as expected or if you try to reorder with a trace edge.AttributeError
– If the Node has no tensor.
-
to_serial_dict
() → Dict[KT, VT]¶ Return a serializable dict representing the node.
Returns: A dict object.