diff --git a/docs/_build/doctest/output.txt b/docs/_build/doctest/output.txt index 61d6320..3a24cc5 100644 --- a/docs/_build/doctest/output.txt +++ b/docs/_build/doctest/output.txt @@ -1,12 +1,12 @@ -Results of doctest builder run on 2024-04-14 00:34:19 +Results of doctest builder run on 2024-04-14 01:59:36 ===================================================== -Document: operations +Document: embeddings -------------------- 1 items passed all tests: - 186 tests in default -186 tests in 1 items. -186 passed and 0 failed. + 35 tests in default +35 tests in 1 items. +35 passed and 0 failed. Test passed. Document: models @@ -17,68 +17,26 @@ Document: models 115 passed and 0 failed. Test passed. -Document: embeddings +Document: operations -------------------- 1 items passed all tests: - 35 tests in default -35 tests in 1 items. -35 passed and 0 failed. + 186 tests in default +186 tests in 1 items. +186 passed and 0 failed. Test passed. Document: components -------------------- ********************************************************************** File "../tensorkrowch/components.py", line ?, in default -Failed example: - node.set_tensor(init_method='randn', mean=1., std=2., device='cuda') -Exception raised: - Traceback (most recent call last): - File "/home/jose/anaconda3/envs/test_tk/lib/python3.10/doctest.py", line 1350, in __run - exec(compile(example.source, filename, "single", - File "", line 1, in - node.set_tensor(init_method='randn', mean=1., std=2., device='cuda') - File "/home/jose/VSCodeProjects/tensorkrowch/tensorkrowch/components.py", line 1448, in set_tensor - self._unrestricted_set_tensor(tensor=tensor, - File "/home/jose/VSCodeProjects/tensorkrowch/tensorkrowch/components.py", line 1364, in _unrestricted_set_tensor - tensor = self.make_tensor( - File "/home/jose/VSCodeProjects/tensorkrowch/tensorkrowch/components.py", line 1253, in make_tensor - return self._make_randn_tensor(shape, device=device, **kwargs) - File "/home/jose/VSCodeProjects/tensorkrowch/tensorkrowch/components.py", line 1205, in _make_randn_tensor - return torch.randn(shape, device=device) * std + mean - File "/home/jose/anaconda3/envs/test_tk/lib/python3.10/site-packages/torch/cuda/__init__.py", line 302, in _lazy_init - torch._C._cuda_init() - RuntimeError: Unexpected error from cudaGetDeviceCount(). Did you run some cuda functions before calling NumCudaDevices() that might have already set an error? Error 804: forward compatibility was attempted on non supported HW -********************************************************************** -File "../tensorkrowch/components.py", line ?, in default -Failed example: - torch.equal(node.tensor, torch.zeros(node.shape, device='cuda')) -Exception raised: - Traceback (most recent call last): - File "/home/jose/anaconda3/envs/test_tk/lib/python3.10/doctest.py", line 1350, in __run - exec(compile(example.source, filename, "single", - File "", line 1, in - torch.equal(node.tensor, torch.zeros(node.shape, device='cuda')) - File "/home/jose/anaconda3/envs/test_tk/lib/python3.10/site-packages/torch/cuda/__init__.py", line 302, in _lazy_init - torch._C._cuda_init() - RuntimeError: Unexpected error from cudaGetDeviceCount(). Did you run some cuda functions before calling NumCudaDevices() that might have already set an error? Error 804: forward compatibility was attempted on non supported HW -********************************************************************** -File "../tensorkrowch/components.py", line ?, in default -Failed example: - node.device -Expected: - device(type='cuda', index=0) -Got: - device(type='cpu') -********************************************************************** -File "../tensorkrowch/components.py", line ?, in default Failed example: node.tensor Expected: tensor([[-0.2799, -0.4383, -0.8387], [ 1.6225, -0.3370, -1.2316]]) Got: - tensor([[-0.2140, 0.8589, 1.3626], - [ 2.0270, -0.3952, -0.2620]]) + tensor([[ 0.2628, -0.6672, -0.9051], + [-0.6796, -0.4245, -0.5780]]) ********************************************************************** File "../tensorkrowch/components.py", line ?, in default Failed example: @@ -86,7 +44,7 @@ Failed example: Expected: tensor(-1.5029) Got: - tensor(3.3773) + tensor(-2.9916) ********************************************************************** File "../tensorkrowch/components.py", line ?, in default Failed example: @@ -94,7 +52,7 @@ Failed example: Expected: tensor([ 1.3427, -0.7752, -2.0704]) Got: - tensor([1.8130, 0.4637, 1.1006]) + tensor([-0.4168, -1.0916, -1.4831]) ********************************************************************** File "../tensorkrowch/components.py", line ?, in default Failed example: @@ -103,8 +61,8 @@ Expected: tensor([[ 1.4005, -0.0521, -1.2091], [ 1.9844, 0.3513, -0.5920]]) Got: - tensor([[ 0.7954, -0.5302, 0.4238], - [-0.9560, 1.1048, -0.6040]]) + tensor([[-0.5314, -0.7805, -0.6475], + [-0.1279, 0.7409, 0.5816]]) ********************************************************************** File "../tensorkrowch/components.py", line ?, in default Failed example: @@ -112,7 +70,7 @@ Failed example: Expected: tensor(0.3139) Got: - tensor(0.0390) + tensor(-0.1275) ********************************************************************** File "../tensorkrowch/components.py", line ?, in default Failed example: @@ -120,7 +78,7 @@ Failed example: Expected: tensor([ 1.6925, 0.1496, -0.9006]) Got: - tensor([-0.0803, 0.2873, -0.0901]) + tensor([-0.3296, -0.0198, -0.0330]) ********************************************************************** File "../tensorkrowch/components.py", line ?, in default Failed example: @@ -129,8 +87,8 @@ Expected: tensor([[ 0.2111, -0.9551, -0.7812], [ 0.2254, 0.3381, -0.2461]]) Got: - tensor([[-0.8081, 0.7974, 0.5201], - [-0.8739, -1.2455, -1.2520]]) + tensor([[-1.8500, -0.4944, 0.5940], + [-0.9353, -0.6008, -0.4320]]) ********************************************************************** File "../tensorkrowch/components.py", line ?, in default Failed example: @@ -138,7 +96,7 @@ Failed example: Expected: tensor(0.5567) Got: - tensor(0.9029) + tensor(0.7922) ********************************************************************** File "../tensorkrowch/components.py", line ?, in default Failed example: @@ -146,7 +104,7 @@ Failed example: Expected: tensor([0.0101, 0.9145, 0.3784]) Got: - tensor([0.0465, 1.4445, 1.2530]) + tensor([0.6468, 0.0752, 0.7255]) ********************************************************************** File "../tensorkrowch/components.py", line ?, in default Failed example: @@ -155,8 +113,8 @@ Expected: tensor([[ 1.5570, 1.8441, -0.0743], [ 0.4572, 0.7592, 0.6356]]) Got: - tensor([[-1.1420, -0.4181, -0.9147], - [-1.0355, 0.3765, -1.0369]]) + tensor([[ 1.5611, -0.1317, -1.2049], + [-0.8746, 0.7130, -1.7564]]) ********************************************************************** File "../tensorkrowch/components.py", line ?, in default Failed example: @@ -164,7 +122,7 @@ Failed example: Expected: tensor(2.6495) Got: - tensor(2.1458) + tensor(2.8748) ********************************************************************** File "../tensorkrowch/components.py", line ?, in default Failed example: @@ -172,7 +130,7 @@ Failed example: Expected: tensor([1.6227, 1.9942, 0.6399]) Got: - tensor([1.5416, 0.5626, 1.3826]) + tensor([1.7894, 0.7251, 2.1299]) ********************************************************************** File "../tensorkrowch/components.py", line ?, in default Failed example: @@ -203,17 +161,17 @@ Got: Node( name: my_node tensor: - tensor([[[-0.3790, -0.2875], - [-0.2694, -2.6073], - [ 0.9747, 0.2449], - [-0.2402, -0.0971], - [-0.6163, -0.0845]], + tensor([[[-0.2232, -0.0576], + [-2.0650, -1.6126], + [ 0.3369, -0.6012], + [-1.5875, -0.0953], + [-0.3129, 0.5625]], - [[ 1.3292, -0.5639], - [ 0.6551, -0.5135], - [ 1.4094, -0.5872], - [ 1.3754, -1.3123], - [ 0.6744, -1.2268]]]) + [[ 2.0660, -0.9154], + [ 0.0753, 0.9608], + [ 0.7278, -0.2497], + [ 0.9090, -0.5242], + [ 1.4432, 2.6149]]]) axes: [left input @@ -252,17 +210,17 @@ Got: Node( name: node tensor: - tensor([[[ 0.5618, -0.7985], - [-1.9137, -1.0750], - [ 0.2035, 0.2413], - [ 1.2439, -0.0756], - [ 0.9225, -0.0071]], + tensor([[[-0.0399, 0.5602], + [-1.3402, 1.1127], + [ 0.0795, -1.6100], + [ 2.3359, 1.8294], + [-0.2258, -0.2929]], - [[ 0.1849, -0.2401], - [-0.0954, -0.2486], - [-0.3592, -1.3031], - [ 0.0455, 0.5307], - [-1.3908, -0.9176]]]) + [[ 0.2125, -1.1086], + [-0.6906, -0.8028], + [-1.4547, 0.0981], + [-1.5869, 0.2020], + [-0.5355, -0.1357]]]) axes: [axis_0 axis_1 @@ -314,17 +272,17 @@ Got: name: my_paramnode tensor: Parameter containing: - tensor([[[-0.8812, 0.5985], - [-1.0907, 0.4343], - [ 2.1201, 0.7496], - [ 0.1640, -0.2248], - [-1.3572, 0.7016]], + tensor([[[ 1.0837, 1.7036], + [-0.8799, -0.1600], + [-0.5867, -1.7778], + [ 0.1615, 1.0249], + [ 0.1880, 1.1234]], - [[ 1.0295, 0.0301], - [ 1.1299, 1.0379], - [-0.2408, 1.4896], - [ 0.1914, -0.7828], - [ 0.5660, 1.7213]]], requires_grad=True) + [[ 0.7499, -0.7739], + [-0.5278, 1.1947], + [-0.7586, -1.4460], + [-0.1016, -0.1954], + [ 0.1579, 0.0572]]], requires_grad=True) axes: [left input @@ -365,17 +323,17 @@ Got: name: paramnode tensor: Parameter containing: - tensor([[[ 0.0967, 0.1681], - [-0.2095, -0.0135], - [ 0.4699, -0.3885], - [-1.2067, -0.5064], - [-0.7848, 0.2031]], + tensor([[[-0.7419, 0.3802], + [ 0.4183, 0.2084], + [-0.4384, -0.6852], + [-0.2616, -0.4692], + [ 0.4573, 2.0465]], - [[-0.4146, -0.5403], - [-0.1077, -0.4261], - [ 1.2183, 0.4285], - [-0.1007, -0.8319], - [-0.1851, 0.1278]]], requires_grad=True) + [[ 0.5333, 0.6722], + [-0.9125, 0.1184], + [ 0.1689, -0.0498], + [-1.2576, 0.5516], + [-0.0805, -0.2896]]], requires_grad=True) axes: [axis_0 axis_1 @@ -394,8 +352,8 @@ Expected: [ 1.3371, 1.4761, 0.6551]], requires_grad=True) Got: Parameter containing: - tensor([[-1.4677, -0.2316, 0.4469], - [-0.9964, -0.5450, -0.8290]], requires_grad=True) + tensor([[-1.4491, 0.7555, -1.2827], + [ 1.3534, -1.0071, 0.1320]], requires_grad=True) ********************************************************************** File "../tensorkrowch/components.py", line ?, in default Failed example: @@ -446,14 +404,14 @@ Got: data_0[feature] <-> nodeA[input]]) ********************************************************************** 1 items had failures: - 24 of 395 in default + 21 of 395 in default 395 tests in 1 items. -371 passed and 24 failed. -***Test Failed*** 24 failures. +374 passed and 21 failed. +***Test Failed*** 21 failures. Doctest summary =============== 731 tests - 24 failures in tests + 21 failures in tests 0 failures in setup code 0 failures in cleanup code diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle index bacb9cc..505278e 100644 Binary files a/docs/_build/doctrees/environment.pickle and b/docs/_build/doctrees/environment.pickle differ diff --git a/docs/_build/doctrees/models.doctree b/docs/_build/doctrees/models.doctree index f864f92..507e800 100644 Binary files a/docs/_build/doctrees/models.doctree and b/docs/_build/doctrees/models.doctree differ diff --git a/docs/_build/html/_modules/tensorkrowch/models/mps.html b/docs/_build/html/_modules/tensorkrowch/models/mps.html index 1239e35..4488acf 100644 --- a/docs/_build/html/_modules/tensorkrowch/models/mps.html +++ b/docs/_build/html/_modules/tensorkrowch/models/mps.html @@ -1491,6 +1491,10 @@

Source code for tensorkrowch.models.mps

         it should be ``reset`` before calling ``partial_density`` to avoid
         undesired behaviour.
         
+        Since the density matrix is computed by contracting the MPS, it means
+        one can take gradients of it with respect to the MPS tensors, if it
+        is needed.
+        
         This method may also alter the attribute :attr:`n_batches` of the
         :class:`MPS`.
         
@@ -1558,6 +1562,131 @@ 

Source code for tensorkrowch.models.mps

             result = self.forward(marginalize_output=True)
         
         return result
+ +
[docs] @torch.no_grad() + def mi(self, + middle_site: int, + renormalize: bool = False) -> Union[float, Tuple[float]]: + r""" + Computes the Mutual Information between subsystems :math:`A` and + :math:`B`, :math:`\textrm{MI}(A:B)`, where :math:`A` goes from site + 0 to ``middle_site``, and :math:`B` goes from ``middle_site + 1`` to + ``n_features - 1``. + + To compute the mutual information, the MPS is put into canonical form + with orthogonality center at ``middle_site``. Bond dimensions are not + changed if possible. Only when the bond dimension is bigger than the + physical dimension multiplied by the other bond dimension of the node, + it will be cropped to that size. + + If the MPS is not normalized, it may happen that the computation of the + mutual information fails due to errors in the Singular Value + Decompositions. To avoid this, it is recommended to set + ``renormalize = True``. In this case, the norm of each node after the + SVD is extracted in logarithmic form, and accumulated. As a result, + the function will return the tuple ``(mi, log_norm)``, which is a sort + of `scaled` mutual information. The actual mutual information could be + obtained as ``exp(log_norm) * mi``. + + Parameters + ---------- + middle_site : int + Position that separates regios :math:`A` and :math:`B`. It should + be between 0 and ``n_features - 2``. + renormalize : bool + Indicates whether nodes should be renormalized after SVD/QR + decompositions. If not, it may happen that the norm explodes as it + is being accumulated from all nodes. Renormalization aims to avoid + this undesired behavior by extracting the norm of each node on a + logarithmic scale after SVD/QR decompositions are computed. Finally, + the normalization factor is evenly distributed among all nodes of + the MPS. + + Returns + ------- + float or tuple[float, float] + """ + self.reset() + + prev_auto_stack = self._auto_stack + self.auto_stack = False + + if (middle_site < 0) or (middle_site > (self._n_features - 2)): + raise ValueError( + '`middle_site` should be between 0 and `n_features` - 2') + + log_norm = 0 + + nodes = self._mats_env[:] + if self._boundary == 'obc': + nodes[0].tensor[1:] = torch.zeros_like( + nodes[0].tensor[1:]) + nodes[-1].tensor[..., 1:] = torch.zeros_like( + nodes[-1].tensor[..., 1:]) + + for i in range(middle_site): + result1, result2 = nodes[i]['right'].svd_( + side='right', + rank=nodes[i]['right'].size()) + + if renormalize: + aux_norm = result2.norm() / sqrt(result2.shape[0]) + if not aux_norm.isinf() and (aux_norm > 0): + result2.tensor = result2.tensor / aux_norm + log_norm += aux_norm.log() + + result1 = result1.parameterize() + nodes[i] = result1 + nodes[i + 1] = result2 + + for i in range(len(nodes) - 1, middle_site, -1): + result1, result2 = nodes[i]['left'].svd_( + side='left', + rank=nodes[i]['left'].size()) + + if renormalize: + aux_norm = result1.norm() / sqrt(result1.shape[0]) + if not aux_norm.isinf() and (aux_norm > 0): + result1.tensor = result1.tensor / aux_norm + log_norm += aux_norm.log() + + result2 = result2.parameterize() + nodes[i] = result2 + nodes[i - 1] = result1 + + nodes[middle_site] = nodes[middle_site].parameterize() + + # Compute mutual information + middle_tensor = nodes[middle_site].tensor.clone() + _, s, _ = torch.linalg.svd( + middle_tensor.reshape(middle_tensor.shape[:-1].numel(), # left x input + middle_tensor.shape[-1]), # right + full_matrices=False) + + s = s[s > 0] + mutual_info = -(s * (s.log() + log_norm)).sum() + + # Rescale + if log_norm != 0: + rescale = (log_norm / len(nodes)).exp() + + if renormalize and (log_norm != 0): + for node in nodes: + node.tensor = node.tensor * rescale + + # Update variables + if self._boundary == 'obc': + self._bond_dim = [node['right'].size() for node in nodes[:-1]] + else: + self._bond_dim = [node['right'].size() for node in nodes] + self._mats_env = nodes + + self.auto_stack = prev_auto_stack + + if renormalize: + return mutual_info, log_norm + else: + return mutual_info
[docs] @torch.no_grad() def canonicalize(self, @@ -1570,11 +1699,20 @@

Source code for tensorkrowch.models.mps

         r"""
         Turns MPS into canonical form via local SVD/QR decompositions.
         
+        To specify the new bond dimensions, the arguments ``rank``,
+        ``cum_percentage`` or ``cutoff`` can be specified. These will be used
+        equally for all SVD computations.
+        
+        If none of them are specified, the bond dimensions won't be modified
+        if possible. Only when the bond dimension is bigger than the physical
+        dimension multiplied by the other bond dimension of the node, it will
+        be cropped to that size.
+        
         Parameters
         ----------
         oc : int
             Position of the orthogonality center. It should be between 0 and 
-            ``n_features -1``.
+            ``n_features - 1``.
         mode : {"svd", "svdr", "qr"}
             Indicates which decomposition should be used to split a node after
             contracting it. See more at :func:`~tensorkrowch.svd_`,
@@ -1619,9 +1757,9 @@ 

Source code for tensorkrowch.models.mps

 
         if oc is None:
             oc = self._n_features - 1
-        elif oc >= self._n_features:
-            raise ValueError(f'Orthogonality center position `oc` should be '
-                             f'between 0 and {self._n_features - 1}')
+        elif (oc < 0) or (oc >= self._n_features):
+            raise ValueError('Orthogonality center position `oc` should be '
+                             'between 0 and `n_features` - 1')
         
         log_norm = 0
         
@@ -1632,17 +1770,23 @@ 

Source code for tensorkrowch.models.mps

             nodes[-1].tensor[..., 1:] = torch.zeros_like(
                 nodes[-1].tensor[..., 1:])
         
+        # If mode is svd or svr and none of the args is provided, the ranks are
+        # kept as they were originally
+        keep_rank = False
+        if (rank is None) and (cum_percentage is None) and (cutoff is None):
+            keep_rank = True
+        
         for i in range(oc):
             if mode == 'svd':
                 result1, result2 = nodes[i]['right'].svd_(
                     side='right',
-                    rank=rank,
+                    rank=nodes[i]['right'].size() if keep_rank else rank,
                     cum_percentage=cum_percentage,
                     cutoff=cutoff)
             elif mode == 'svdr':
                 result1, result2 = nodes[i]['right'].svdr_(
                     side='right',
-                    rank=rank,
+                    rank=nodes[i]['right'].size() if keep_rank else rank,
                     cum_percentage=cum_percentage,
                     cutoff=cutoff)
             elif mode == 'qr':
@@ -1664,13 +1808,13 @@ 

Source code for tensorkrowch.models.mps

             if mode == 'svd':
                 result1, result2 = nodes[i]['left'].svd_(
                     side='left',
-                    rank=rank,
+                    rank=nodes[i]['left'].size() if keep_rank else rank,
                     cum_percentage=cum_percentage,
                     cutoff=cutoff)
             elif mode == 'svdr':
                 result1, result2 = nodes[i]['left'].svdr_(
                     side='left',
-                    rank=rank,
+                    rank=nodes[i]['left'].size() if keep_rank else rank,
                     cum_percentage=cum_percentage,
                     cutoff=cutoff)
             elif mode == 'qr':
diff --git a/docs/_build/html/genindex.html b/docs/_build/html/genindex.html
index 0887b8d..f14cfc7 100644
--- a/docs/_build/html/genindex.html
+++ b/docs/_build/html/genindex.html
@@ -778,6 +778,8 @@ 

M

    +
  • mi() (tensorkrowch.models.MPS method) +
  • move_to_network() (tensorkrowch.AbstractNode method)
  • MPO (class in tensorkrowch.models) diff --git a/docs/_build/html/models.html b/docs/_build/html/models.html index 27c7b10..89c8ec2 100644 --- a/docs/_build/html/models.html +++ b/docs/_build/html/models.html @@ -1015,6 +1015,9 @@

    MPS#reset before calling partial_density to avoid undesired behaviour.

    +

    Since the density matrix is computed by contracting the MPS, it means +one can take gradients of it with respect to the MPS tensors, if it +is needed.

    This method may also alter the attribute n_batches of the MPS.

    @@ -1036,15 +1039,62 @@

    MPS#

    +
    +
    +mi(middle_site, renormalize=False)[source]#
    +

    Computes the Mutual Information between subsystems \(A\) and +\(B\), \(\textrm{MI}(A:B)\), where \(A\) goes from site +0 to middle_site, and \(B\) goes from middle_site + 1 to +n_features - 1.

    +

    To compute the mutual information, the MPS is put into canonical form +with orthogonality center at middle_site. Bond dimensions are not +changed if possible. Only when the bond dimension is bigger than the +physical dimension multiplied by the other bond dimension of the node, +it will be cropped to that size.

    +

    If the MPS is not normalized, it may happen that the computation of the +mutual information fails due to errors in the Singular Value +Decompositions. To avoid this, it is recommended to set +renormalize = True. In this case, the norm of each node after the +SVD is extracted in logarithmic form, and accumulated. As a result, +the function will return the tuple (mi, log_norm), which is a sort +of scaled mutual information. The actual mutual information could be +obtained as exp(log_norm) * mi.

    +
    +
    Parameters
    +
      +
    • middle_site (int) – Position that separates regios \(A\) and \(B\). It should +be between 0 and n_features - 2.

    • +
    • renormalize (bool) – Indicates whether nodes should be renormalized after SVD/QR +decompositions. If not, it may happen that the norm explodes as it +is being accumulated from all nodes. Renormalization aims to avoid +this undesired behavior by extracting the norm of each node on a +logarithmic scale after SVD/QR decompositions are computed. Finally, +the normalization factor is evenly distributed among all nodes of +the MPS.

    • +
    +
    +
    Return type
    +

    float or tuple[float, float]

    +
    +
    +
    +
    canonicalize(oc=None, mode='svd', rank=None, cum_percentage=None, cutoff=None, renormalize=False)[source]#

    Turns MPS into canonical form via local SVD/QR decompositions.

    +

    To specify the new bond dimensions, the arguments rank, +cum_percentage or cutoff can be specified. These will be used +equally for all SVD computations.

    +

    If none of them are specified, the bond dimensions won’t be modified +if possible. Only when the bond dimension is bigger than the physical +dimension multiplied by the other bond dimension of the node, it will +be cropped to that size.

    Parameters
    • oc (int) – Position of the orthogonality center. It should be between 0 and -n_features -1.

    • +n_features - 1.

    • mode ({"svd", "svdr", "qr"}) – Indicates which decomposition should be used to split a node after contracting it. See more at svd_(), svdr_(), qr_(). diff --git a/docs/_build/html/objects.inv b/docs/_build/html/objects.inv index 1892eb0..c4de50f 100644 Binary files a/docs/_build/html/objects.inv and b/docs/_build/html/objects.inv differ diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js index 3692274..353d5d8 100644 --- a/docs/_build/html/searchindex.js +++ b/docs/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["api","components","contents","decompositions","embeddings","index","initializers","installation","models","operations","tutorials","tutorials/0_first_steps","tutorials/1_creating_tensor_network","tutorials/2_contracting_tensor_network","tutorials/3_memory_management","tutorials/4_types_of_nodes","tutorials/5_subclass_tensor_network","tutorials/6_mix_with_pytorch"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":5,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["api.rst","components.rst","contents.rst","decompositions.rst","embeddings.rst","index.rst","initializers.rst","installation.rst","models.rst","operations.rst","tutorials.rst","tutorials/0_first_steps.rst","tutorials/1_creating_tensor_network.rst","tutorials/2_contracting_tensor_network.rst","tutorials/3_memory_management.rst","tutorials/4_types_of_nodes.rst","tutorials/5_subclass_tensor_network.rst","tutorials/6_mix_with_pytorch.rst"],objects:{"tensorkrowch.AbstractNode":[[1,1,1,"","axes"],[1,1,1,"","axes_names"],[1,2,1,"","contract_between"],[1,2,1,"","contract_between_"],[1,1,1,"","device"],[1,2,1,"","disconnect"],[1,1,1,"","dtype"],[1,1,1,"","edges"],[1,2,1,"","get_axis"],[1,2,1,"","get_axis_num"],[1,2,1,"","get_edge"],[1,2,1,"","in_which_axis"],[1,2,1,"","is_connected_to"],[1,2,1,"","is_data"],[1,2,1,"","is_leaf"],[1,2,1,"","is_node1"],[1,2,1,"","is_resultant"],[1,2,1,"","is_virtual"],[1,2,1,"","make_tensor"],[1,2,1,"","mean"],[1,2,1,"","move_to_network"],[1,1,1,"","name"],[1,2,1,"","neighbours"],[1,1,1,"","network"],[1,2,1,"","node_ref"],[1,2,1,"","norm"],[1,2,1,"","numel"],[1,2,1,"","permute"],[1,2,1,"","permute_"],[1,1,1,"","rank"],[1,2,1,"","reattach_edges"],[1,2,1,"","reset_tensor_address"],[1,2,1,"","set_tensor"],[1,2,1,"","set_tensor_from"],[1,1,1,"","shape"],[1,2,1,"","size"],[1,2,1,"","split"],[1,2,1,"","split_"],[1,2,1,"","std"],[1,1,1,"","successors"],[1,2,1,"","sum"],[1,1,1,"","tensor"],[1,2,1,"","tensor_address"],[1,2,1,"","unset_tensor"]],"tensorkrowch.Axis":[[1,2,1,"","is_batch"],[1,2,1,"","is_node1"],[1,1,1,"","name"],[1,1,1,"","node"],[1,1,1,"","num"]],"tensorkrowch.Edge":[[1,1,1,"","axes"],[1,1,1,"","axis1"],[1,1,1,"","axis2"],[1,2,1,"","change_size"],[1,2,1,"","connect"],[1,2,1,"","contract"],[1,2,1,"","contract_"],[1,2,1,"","copy"],[1,2,1,"","disconnect"],[1,2,1,"","is_attached_to"],[1,2,1,"","is_batch"],[1,2,1,"","is_dangling"],[1,1,1,"","name"],[1,1,1,"","node1"],[1,1,1,"","node2"],[1,1,1,"","nodes"],[1,2,1,"","qr"],[1,2,1,"","qr_"],[1,2,1,"","rq"],[1,2,1,"","rq_"],[1,2,1,"","size"],[1,2,1,"","svd"],[1,2,1,"","svd_"],[1,2,1,"","svdr"],[1,2,1,"","svdr_"]],"tensorkrowch.Node":[[1,2,1,"","change_type"],[1,2,1,"","copy"],[1,2,1,"","parameterize"]],"tensorkrowch.ParamNode":[[1,2,1,"","change_type"],[1,2,1,"","copy"],[1,1,1,"","grad"],[1,2,1,"","parameterize"]],"tensorkrowch.ParamStackNode":[[1,1,1,"","edges_dict"],[1,1,1,"","node1_lists_dict"],[1,2,1,"","reconnect"],[1,2,1,"","unbind"]],"tensorkrowch.StackEdge":[[1,2,1,"","connect"],[1,1,1,"","edges"],[1,1,1,"","node1_list"]],"tensorkrowch.StackNode":[[1,1,1,"","edges_dict"],[1,1,1,"","node1_lists_dict"],[1,2,1,"","reconnect"],[1,2,1,"","unbind"]],"tensorkrowch.TensorNetwork":[[1,2,1,"","add_data"],[1,1,1,"","auto_stack"],[1,1,1,"","auto_unbind"],[1,2,1,"","contract"],[1,2,1,"","copy"],[1,1,1,"","data_nodes"],[1,2,1,"","delete_node"],[1,1,1,"","edges"],[1,2,1,"","forward"],[1,1,1,"","leaf_nodes"],[1,1,1,"","nodes"],[1,1,1,"","nodes_names"],[1,2,1,"","parameterize"],[1,2,1,"","reset"],[1,1,1,"","resultant_nodes"],[1,2,1,"","set_data_nodes"],[1,2,1,"","trace"],[1,2,1,"","unset_data_nodes"],[1,1,1,"","virtual_nodes"]],"tensorkrowch.decompositions":[[3,3,1,"","mat_to_mpo"],[3,3,1,"","vec_to_mps"]],"tensorkrowch.embeddings":[[4,3,1,"","add_ones"],[4,3,1,"","basis"],[4,3,1,"","discretize"],[4,3,1,"","poly"],[4,3,1,"","unit"]],"tensorkrowch.models":[[8,0,1,"","ConvMPS"],[8,0,1,"","ConvMPSLayer"],[8,0,1,"","ConvPEPS"],[8,0,1,"","ConvTree"],[8,0,1,"","ConvUMPS"],[8,0,1,"","ConvUMPSLayer"],[8,0,1,"","ConvUPEPS"],[8,0,1,"","ConvUTree"],[8,0,1,"","MPO"],[8,0,1,"","MPS"],[8,0,1,"","MPSData"],[8,0,1,"","MPSLayer"],[8,0,1,"","PEPS"],[8,0,1,"","Tree"],[8,0,1,"","UMPO"],[8,0,1,"","UMPS"],[8,0,1,"","UMPSLayer"],[8,0,1,"","UPEPS"],[8,0,1,"","UTree"]],"tensorkrowch.models.ConvMPS":[[8,2,1,"","copy"],[8,1,1,"","dilation"],[8,2,1,"","forward"],[8,1,1,"","in_channels"],[8,1,1,"","kernel_size"],[8,1,1,"","padding"],[8,1,1,"","stride"]],"tensorkrowch.models.ConvMPSLayer":[[8,2,1,"","copy"],[8,1,1,"","dilation"],[8,2,1,"","forward"],[8,1,1,"","in_channels"],[8,1,1,"","kernel_size"],[8,1,1,"","out_channels"],[8,1,1,"","padding"],[8,1,1,"","stride"]],"tensorkrowch.models.ConvPEPS":[[8,1,1,"","dilation"],[8,2,1,"","forward"],[8,1,1,"","in_channels"],[8,1,1,"","kernel_size"],[8,1,1,"","padding"],[8,1,1,"","stride"]],"tensorkrowch.models.ConvTree":[[8,1,1,"","dilation"],[8,2,1,"","forward"],[8,1,1,"","in_channels"],[8,1,1,"","kernel_size"],[8,1,1,"","padding"],[8,1,1,"","stride"]],"tensorkrowch.models.ConvUMPS":[[8,2,1,"","copy"],[8,1,1,"","dilation"],[8,2,1,"","forward"],[8,1,1,"","in_channels"],[8,1,1,"","kernel_size"],[8,1,1,"","padding"],[8,1,1,"","stride"]],"tensorkrowch.models.ConvUMPSLayer":[[8,2,1,"","copy"],[8,1,1,"","dilation"],[8,2,1,"","forward"],[8,1,1,"","in_channels"],[8,1,1,"","kernel_size"],[8,1,1,"","out_channels"],[8,1,1,"","padding"],[8,1,1,"","stride"]],"tensorkrowch.models.ConvUPEPS":[[8,1,1,"","dilation"],[8,2,1,"","forward"],[8,1,1,"","in_channels"],[8,1,1,"","kernel_size"],[8,1,1,"","padding"],[8,1,1,"","stride"]],"tensorkrowch.models.ConvUTree":[[8,1,1,"","dilation"],[8,2,1,"","forward"],[8,1,1,"","in_channels"],[8,1,1,"","kernel_size"],[8,1,1,"","padding"],[8,1,1,"","stride"]],"tensorkrowch.models.MPO":[[8,1,1,"","bond_dim"],[8,1,1,"","boundary"],[8,2,1,"","contract"],[8,2,1,"","copy"],[8,1,1,"","in_dim"],[8,2,1,"","initialize"],[8,1,1,"","left_node"],[8,1,1,"","mats_env"],[8,1,1,"","n_batches"],[8,1,1,"","n_features"],[8,1,1,"","out_dim"],[8,2,1,"","parameterize"],[8,1,1,"","right_node"],[8,2,1,"","set_data_nodes"]],"tensorkrowch.models.MPS":[[8,1,1,"","bond_dim"],[8,1,1,"","boundary"],[8,2,1,"","canonicalize"],[8,2,1,"","canonicalize_univocal"],[8,2,1,"","contract"],[8,2,1,"","copy"],[8,1,1,"","in_env"],[8,1,1,"","in_features"],[8,1,1,"","in_regions"],[8,2,1,"","initialize"],[8,1,1,"","left_node"],[8,1,1,"","mats_env"],[8,1,1,"","n_batches"],[8,1,1,"","n_features"],[8,2,1,"","norm"],[8,1,1,"","out_env"],[8,1,1,"","out_features"],[8,1,1,"","out_regions"],[8,2,1,"","parameterize"],[8,2,1,"","partial_density"],[8,1,1,"","phys_dim"],[8,1,1,"","right_node"],[8,2,1,"","set_data_nodes"]],"tensorkrowch.models.MPSData":[[8,2,1,"","add_data"],[8,1,1,"","bond_dim"],[8,1,1,"","boundary"],[8,2,1,"","initialize"],[8,1,1,"","left_node"],[8,1,1,"","mats_env"],[8,1,1,"","n_batches"],[8,1,1,"","n_features"],[8,1,1,"","phys_dim"],[8,1,1,"","right_node"]],"tensorkrowch.models.MPSLayer":[[8,2,1,"","copy"],[8,1,1,"","in_dim"],[8,2,1,"","initialize"],[8,1,1,"","out_dim"],[8,1,1,"","out_node"],[8,1,1,"","out_position"]],"tensorkrowch.models.PEPS":[[8,1,1,"","bond_dim"],[8,1,1,"","boundary"],[8,2,1,"","contract"],[8,1,1,"","in_dim"],[8,2,1,"","initialize"],[8,1,1,"","n_batches"],[8,1,1,"","n_cols"],[8,1,1,"","n_rows"],[8,2,1,"","set_data_nodes"]],"tensorkrowch.models.Tree":[[8,1,1,"","bond_dim"],[8,2,1,"","canonicalize"],[8,2,1,"","contract"],[8,2,1,"","initialize"],[8,1,1,"","n_batches"],[8,2,1,"","set_data_nodes"],[8,1,1,"","sites_per_layer"]],"tensorkrowch.models.UMPO":[[8,2,1,"","copy"],[8,2,1,"","initialize"],[8,2,1,"","parameterize"]],"tensorkrowch.models.UMPS":[[8,2,1,"","copy"],[8,2,1,"","initialize"],[8,2,1,"","parameterize"]],"tensorkrowch.models.UMPSLayer":[[8,2,1,"","copy"],[8,1,1,"","in_dim"],[8,2,1,"","initialize"],[8,1,1,"","out_dim"],[8,1,1,"","out_node"],[8,1,1,"","out_position"],[8,2,1,"","parameterize"]],"tensorkrowch.models.UPEPS":[[8,1,1,"","bond_dim"],[8,2,1,"","contract"],[8,1,1,"","in_dim"],[8,2,1,"","initialize"],[8,1,1,"","n_batches"],[8,1,1,"","n_cols"],[8,1,1,"","n_rows"],[8,2,1,"","set_data_nodes"]],"tensorkrowch.models.UTree":[[8,1,1,"","bond_dim"],[8,2,1,"","contract"],[8,2,1,"","initialize"],[8,1,1,"","n_batches"],[8,2,1,"","set_data_nodes"],[8,1,1,"","sites_per_layer"]],tensorkrowch:[[1,0,1,"","AbstractNode"],[1,0,1,"","Axis"],[1,0,1,"","Edge"],[1,0,1,"","Node"],[9,0,1,"","Operation"],[1,0,1,"","ParamNode"],[1,0,1,"","ParamStackNode"],[1,0,1,"","StackEdge"],[1,0,1,"","StackNode"],[1,0,1,"","Successor"],[1,0,1,"","TensorNetwork"],[9,3,1,"","add"],[9,3,1,"","connect"],[9,3,1,"","connect_stack"],[9,3,1,"","contract"],[9,3,1,"","contract_"],[9,3,1,"","contract_between"],[9,3,1,"","contract_between_"],[9,3,1,"","contract_edges"],[6,3,1,"","copy"],[9,3,1,"","disconnect"],[9,3,1,"","einsum"],[6,3,1,"","empty"],[9,3,1,"","mul"],[6,3,1,"","ones"],[9,3,1,"","permute"],[9,3,1,"","permute_"],[9,3,1,"","qr"],[9,3,1,"","qr_"],[6,3,1,"","rand"],[6,3,1,"","randn"],[9,3,1,"","rq"],[9,3,1,"","rq_"],[9,3,1,"","split"],[9,3,1,"","split_"],[9,3,1,"","stack"],[9,3,1,"","stacked_einsum"],[9,3,1,"","sub"],[9,3,1,"","svd"],[9,3,1,"","svd_"],[9,3,1,"","svdr"],[9,3,1,"","svdr_"],[9,3,1,"","tprod"],[9,3,1,"","unbind"],[6,3,1,"","zeros"]]},objnames:{"0":["py","class","Python class"],"1":["py","property","Python property"],"2":["py","method","Python method"],"3":["py","function","Python function"]},objtypes:{"0":"py:class","1":"py:property","2":"py:method","3":"py:function"},terms:{"0":[1,3,4,5,6,8,9,11,13,15,16,17],"00":4,"0000":4,"0000e":4,"0086":1,"0101":1,"0188":1,"0234":1,"0371":1,"0412":1,"0440":1,"0445":1,"0465":1,"0501":1,"0521":1,"0633":1,"0639":11,"0704":1,"0728":11,"0743":1,"0750":11,"08":4,"0806":1,"0820":11,"08595":5,"09":8,"0913":11,"0983":11,"0998":11,"1":[1,3,4,5,6,8,9,17],"10":[1,4,5,8,9,11,13,16,17],"100":[1,4,5,8,9,12,13,14,15],"10000":[11,17],"1024":[11,17],"1091":1,"1123":11,"1211":1,"1308":11,"1371":1,"14":17,"1496":1,"15":[1,9,13],"1573":11,"161204":11,"1654":1,"1878":17,"1955":11,"1990":11,"1998":1,"1e":[8,11,16,17],"2":[1,4,8,9,17],"20":[1,8,9,17],"2052":17,"2091":1,"2095":1,"2111":1,"2203":17,"2254":1,"2306":5,"2316":1,"2357":17,"236220":11,"2380":1,"2390":1,"2449":1,"2461":1,"2477":1,"2503":1,"2517":1,"2618":17,"2730":1,"2775":1,"2799":1,"28":[11,17],"2808":1,"2840":17,"2856":1,"2866":1,"2898":1,"2d":8,"3":[1,4,5,8,9,15,17],"30":17,"3083":11,"3088":1,"3139":1,"3149":17,"32":[8,11],"3222":1,"3340":1,"3370":1,"3371":1,"3381":1,"3393":1,"3427":1,"3489":1,"3508":1,"3513":1,"3585":1,"3711e":4,"3714":17,"3760":1,"3784":1,"3821":1,"4":[1,4,8,9,13,15,17],"40":17,"4005":1,"4181":1,"4184":1,"4216":1,"4383":1,"4385":1,"4402":1,"4431":1,"4461":1,"4572":1,"4588":1,"4731":1,"4761":1,"4974":1,"499320":17,"4f":[11,17],"5":[1,4,5,8,9,12,13,14,15,17],"50":17,"500":[5,11,16,17],"5000":4,"5021":1,"5029":1,"5069":1,"5161":1,"5224":17,"5401":1,"5406":1,"553186":17,"5567":1,"5570":1,"5676":11,"5731":1,"5760":1,"5797":1,"5920":1,"6":[1,4,8,17],"60":17,"60000":[11,17],"6023":1,"6149":11,"6225":1,"6227":1,"6295":1,"6356":1,"6399":1,"6492":1,"6495":1,"6524":1,"6545":1,"6551":1,"6811":1,"6925":1,"6982":1,"7":[1,5,8,9,13,14,17],"70":17,"75":4,"7500":4,"7592":1,"7688":1,"7752":1,"7812":1,"7997":1,"8":[5,8,11],"80":17,"8090":1,"8147":1,"8227":1,"8361":1,"8387":1,"8441":1,"8442":1,"8502":17,"8627":17,"8633":1,"8649":1,"8795":17,"8815":1,"8820":11,"8848":17,"8851":17,"8859":1,"8901":17,"8911":1,"8915":17,"8948":17,"8968":17,"8984":17,"9":[5,8,11,16,17],"90":17,"9006":1,"9009":17,"9011":[11,17],"9026":17,"9048":17,"9053":11,"9125":17,"9145":1,"9174":17,"9231":17,"9265":1,"9284":17,"9320":1,"9371":11,"9396":11,"9400":11,"9432":1,"9509":11,"9526":11,"9551":1,"9561":1,"9585":11,"9600":11,"9618":1,"9621":11,"9625":11,"9668":11,"9677":11,"9696":11,"9700":11,"9721":11,"9729":11,"9731":11,"9734":11,"9736":11,"9738":11,"9743":11,"9768":11,"9775":11,"9793":11,"98":17,"9844":1,"99":11,"9925":1,"9942":1,"9957":1,"abstract":1,"boolean":[1,6,8],"byte":[11,17],"case":[1,3,8,14,15,16],"class":[0,1,8,11,13,16,17],"default":[1,4,8,14,15],"do":[1,8,11,12,14,15,16],"final":[1,8,13,16],"float":[1,3,6,8,9],"function":[1,8,9,13,17],"garc\u00eda":5,"import":[1,5,12,13,14,15,16,17],"int":[1,3,4,6,8,9],"n\u00ba":[11,17],"new":[1,4,6,8,9,11,12,13,14,16,17],"p\u00e9rez":5,"return":[1,3,4,6,8,9,11,12,13,14,16,17],"super":[1,16,17],"true":[1,5,6,8,9,11,13,14,15,16,17],"try":[13,17],"while":[1,5,13,14,15],A:[1,5,8,9,12],And:[14,17],As:[5,11,12,13,14],At:[1,12],Be:[1,13],But:[13,14,16,17],By:[1,4,5,8,11,12],For:[1,8,9,12,13,14,15,16],If:[1,3,4,5,6,8,9,12,14,16],In:[1,3,5,8,9,11,12,13,14,15,16,17],Is:8,It:[1,3,5,6,8,9,11,12,13,17],Its:[1,9],Not:16,Of:[14,16],On:1,One:[1,12],That:[1,3,4,8,9,13,14,16,17],The:[1,3,4,5,8,9,10,12,13,14,17],Then:[1,8,14],There:[1,8,13,15,16],These:[1,3,5,8,12,13,15],To:[1,3,5,7,8,9,11,12,13,14,15,16],With:[1,5,9,12,13,16],_:[1,8,9,11,12,16,17],__call__:1,__init__:[1,16,17],_channel:8,_copi:1,_dim:1,_percentag:[1,3,8,9],_size:8,_size_0:8,_size_1:8,_size_:1,a_:9,abil:5,abl:[1,12,13,16],about:[1,9,12,13,14,15,16],abov:[1,12,16],abstractnod:[0,9],acc:[11,17],acceler:1,accept:13,access:[1,6,12,13,14],accomplish:[1,3,8,15],accord:[1,9],accordingli:8,account:[1,8,15],accumul:8,accuraci:[11,17],achiev:1,act:[1,8,12,14],action:1,activ:1,actual:[1,8,12,13,14,17],ad:[1,4,8,9,13,16],adam:[11,17],adapt:9,add:[0,1,8,11,13,16,17],add_data:[1,8,15,16],add_on:[0,17],addit:[1,8,9],addition:1,address:[1,12,14],admit:8,advanc:[1,5,10],advantag:[14,16],affect:[1,9],after:[1,8,11,17],afterward:[1,8,9],again:[8,11,14,16],against:8,aim:[8,11],alejandro:5,algorithm:[1,8,14,16,17],all:[1,3,4,6,8,9,11,12,13,14,15,16,17],allow:[1,8],almost:[1,13,14,15,17],along:[1,9],alreadi:[1,8,9,11,12,13,16],also:[1,3,5,7,8,9,11,12,13,14,15,16],alter:8,although:[1,12,13,14,15,16],alwai:[1,5,8,9,11,12,13,14,15,16],among:8,amount:[9,11],an:[1,3,4,5,8,9,11,12,13,14,15,16],ancillari:[1,14,15],ani:[1,8,9,12,13,16],anoth:[1,8,9,12,13],anymor:1,api:2,appear:[1,9,12],append:[13,14,15,16,17],appli:[1,9,13],approach:5,appropi:[8,16,17],approxim:1,ar:[1,3,4,5,6,7,8,9,11,12,13,15,16,17],arang:4,arbitrari:1,architectur:5,archiveprefix:5,arg:[1,8],argument:[1,3,8,9,16],aros:1,around:11,arrai:12,arrow:9,arxiv:5,assert:[1,5,8,9,12,13,14,15],assign:8,assum:[1,4,8,9],attach:[1,6,9,12],attribut:[1,8,16],author:5,auto_stack:[1,9,11,14,15,16,17],auto_unbind:[1,9,11,14,16,17],automat:[1,9,12,13,14],auxiliari:9,avail:[5,11,12],avoid:[1,8,14],awar:[1,13],ax:[1,6,8,9,12,13],axes_nam:[1,5,6,9,12,13,14,15,16],axi:[0,4,6,9,12,16,17],axis1:1,axis2:1,axis_0:1,axis_1:1,axis_2:1,axis_n:1,b:[4,9,13],b_1:3,b_:9,b_m:3,backpropag:[11,17],backward:[1,5,11,13,17],base:[1,4,8,9,13],basi:[0,8],basic:[1,5,12,13],batch:[1,3,4,5,8,9,11,12,13,15,16],batch_0:[4,8],batch_1:[1,8,16],batch_m:1,batch_n:[4,8,16],batch_siz:[8,11,17],becaus:[1,8,14,17],becom:[1,5,8,9],been:[1,8,9,12,16],befor:[1,8,11,12,16,17],beforehand:12,begin:[4,11,12,17],behav:[1,14],behavior:8,behaviour:[1,8,12,14,15],being:[1,4,8,9,13],belong:[1,6,8,11,12,13],besid:[1,8,9,12],best:5,better:12,between:[1,3,4,5,8,9,12,14,15,17],big:[8,13],binom:4,blank:[1,6],bmatrix:4,bodi:12,bond:[3,8],bond_dim:[5,8,11,17],bool:[1,6,8],border:8,both:[1,8,9,12,13,14,15,16],bottom:[8,17],boudari:8,bound:[1,3,8,9],boundari:[3,8],bracket:1,bring:11,build:[1,5,10,13],built:[5,11,13,16],bunch:[1,13,16],c_:9,cach:[1,14],calcul:14,call:[1,8,9,11,13,16,17],callabl:9,can:[1,3,5,7,8,9,11,12,13,14,15,16,17],cannot:[1,6,8,9,13,15],canon:[8,11,17],canonic:[8,11,17],canonicalize_univoc:8,carri:[1,8,9,12],cast:1,cat:17,caus:8,cdot:[3,4,8],center:8,central:[1,12,17],certain:[1,4,5,6,9],chang:[1,5,8,12,14,16,17],change_s:1,change_typ:1,channel:8,charact:1,check:[1,8,9,11,12,13,14,15,17],check_first:9,child:1,chose:15,classif:[8,11],classifi:[11,16],clone:[5,7,8],close:8,cnn:17,cnn_snake:17,cnn_snakesb:17,co:4,code:[1,5,12,17],coincid:[8,9,12],collect:[1,9,13,14],column:8,com:[5,7],combin:[1,12,16,17],come:[1,9,11,12,15,16],comma:9,command:[5,7],common:[1,8,11,16],compar:14,complementari:8,complet:[1,9],compon:[0,4,5,9,11,13],compos:[11,17],comput:[1,4,5,7,8,9,11,13,14,16,17],concept:5,condit:[3,8,9],configur:5,conform:1,connect:[0,1,5,8,12,13,14,15,16],connect_stack:0,consecut:[3,8],consid:8,consist:[1,9],construct:[1,5,13,14],contain:[1,6,8,12,13,14,15],continu:11,contract:[0,1,5,8,10,11,12,14,15,16],contract_:[0,1,13],contract_between:[0,1,13],contract_between_:[0,1,13],contract_edg:[0,1,13],contract_edges_ip:[1,9],contrast:8,contrat:8,control:[1,12,14],conv2d:[8,17],conv_mp:8,conv_mps_lay:8,conv_pep:8,conv_tre:8,conveni:[8,15],convent:[1,9,13,16],convmp:0,convmpslay:[0,17],convolut:[8,16,17],convpep:0,convtre:0,convump:0,convumpslay:0,convupep:0,convutre:0,copi:[0,1,8],core:[8,12,17],corner:8,correct:[1,14],correctli:9,correspond:[1,3,4,8,9,12,13,14,16],costli:[1,8,14],could:[8,11,12,14,16],count:11,coupl:[1,12,15],cours:[14,16],cpu:[1,11,16,17],creat:[1,5,6,8,9,10,13,14,15,16],creation:[5,9],crop:1,crossentropyloss:[11,17],cuda:[1,11,16,17],cum:[1,3,8,9],cum_percentag:[1,3,8,9,11,17],current:[1,8],custom:[1,5,8,10],cut:[3,11,17],cutoff:[1,3,8,9],d:[4,5],d_1:3,d_n:3,dagger:[1,9],dangl:[1,9,11,12,13],data:[1,4,5,8,9,13,15,16,17],data_0:[1,15],data_1:1,data_nod:[1,13,15,16],data_node_:13,dataload:[11,17],dataset:[8,11,17],david:[4,5],ddot:4,de:[1,6,8,13],decompos:[3,9],decomposit:[0,1,8,9,11,13,17],decreas:1,dedic:8,deep:[5,11],deepcopi:1,def:[1,11,16,17],defin:[1,4,5,8,12,13,15,16,17],degre:4,del:[1,9],delet:[1,9],delete_nod:1,densiti:8,depend:[1,3],deriv:8,descent:[12,13],describ:[1,8,16],design:8,desir:[4,13,14,15,16],detail:[1,5,8,13],determin:5,develop:5,deviat:6,devic:[1,6,8,11,16,17],devot:14,df:1,diagon:[1,6,9],diagram:12,dictionari:1,did:17,differ:[1,5,8,9,10,11,12,13,14,16,17],differenti:[5,10,12],dilat:8,dim:[4,11,17],dimens:[1,3,4,8,9,11,12,16],dimension:[12,17],directli:[1,5,7,9,12,13,14,15],disconnect:[0,1,8,12],discret:0,distinct:[1,6],distinguish:15,distribut:[6,8],divers:5,document:[1,9],doe:[1,8,12,14],don:9,done:[1,3,8,12],down:8,down_bord:8,download:[5,7,17],drawn:6,drop_last:[11,17],dtype:1,duplic:8,dure:[1,11,14,15],dynam:8,e:[1,4,5,8,9,15],each:[1,3,4,6,8,9,11,12,13,14,15,16,17],earlier:12,easi:[1,5],easier:12,easili:[1,12,13,16,17],edg:[0,5,6,8,11,12,13,14,15,16,17],edge1:[1,9],edge2:[1,9],edgea:1,edgeb:1,edges_dict:1,effect:[1,13],effici:[1,5,12],einstein:13,einsum:[0,13],either:[8,9],element:[1,4,5,6,8,9,12],element_s:[11,17],els:[11,16,17],emb:[11,16],emb_a:4,emb_b:4,embed:[0,8,11,16,17],embedd:4,embedding_matric:8,empti:[0,1,8,12,13,14],enabl:[1,5,8,12,13,14],end:[1,4,9],engin:12,enhanc:5,enough:[1,8],ensur:[1,5],entail:[1,14],entangl:8,entir:1,enumer:[1,8],environ:8,epoch:[1,11,16,17],epoch_num:[11,17],eprint:5,equal:[1,8,16],equilibrium:11,equival:[1,4,8,12,17],essenti:[1,5],etc:[1,9,12,16],evalu:13,even:[1,3,5,8,12,14,16],evenli:8,everi:[1,9,12,14,17],exact:1,exactli:1,exampl:[1,4,8,9,11,13,15,16],exceed:8,excel:5,except:[6,8],exclud:[1,15],execut:9,exist:[1,8,9,13],expand:[1,4,16],expect:[3,8],experi:[1,5,12,14],experiment:5,explain:[1,12,13,14],explan:[1,8,9],explicitli:[1,15,16],explod:8,explor:[5,12],express:9,extend:1,extra:[3,8,9],extract:[8,12],extractor:17,ey:16,eye_tensor:16,f:[11,12,13,14,15,17],facilit:[1,5,9,12],fact:[1,15,16],factor:8,fals:[1,6,8,9,11,13,14,16,17],familiar:[5,12],fashion:13,fashionmnist:17,faster:[1,16],fastest:5,featur:[1,4,8,9,12,13,14,15,17],feature_dim:[1,16],feature_s:8,fed:17,few:5,file:5,fill:[1,6,12,13,16],finish:[12,16],finit:8,first:[1,4,5,8,9,10,12,13,14,15,17],fix:[1,12,13],flat:8,flatten:8,flavour:1,flip:17,fn_first:9,fn_next:9,folder:[5,7],follow:[1,5,7,8,9],forget:1,form:[1,8,11,12,13,15,17],former:[1,8,9],forward:[1,8,16,17],four:16,frac:[1,3,4,8,9],framework:5,free:8,friendli:5,from:[1,5,6,7,8,9,11,12,13,15,16,17],from_sid:8,from_siz:8,front:1,full:11,fulli:5,func:[1,8],functool:17,fundament:5,further:[1,5],furthermor:[1,14,16],futur:[1,14],g:[1,8,9,15],gain:5,garc:5,gaussian:8,ge:[1,3,8,9],gener:[1,14],get:[1,11,12,16,17],get_axi:[1,12],get_axis_num:[1,12],get_edg:1,git:[5,7],github:[5,7],give:[1,12,14,15],given:[1,4,8],glimps:11,go:[1,9,11,13,14,17],goal:5,good:[1,11],gpu:[11,16],grad:[1,5,13],gradient:[1,5,8,12,13],graph:[1,12,14,16],grasp:5,greater:[1,16],greatli:5,grid:8,grid_env:8,group:9,guid:5,ha:[1,3,8,9,11,12,14,15,16,17],had:[1,9,14],hand:[1,5,8,16],happen:[1,3,8,14,17],har:5,hat:4,have:[1,3,4,8,9,11,12,13,14,15,16,17],heavi:16,height:[8,11,16],help:[1,14],henc:[1,6,9,11,12,13,14,16],here:[1,8,13],hidden:[1,15],high:[1,4,6],highli:5,hint:1,hold:[13,15],hood:14,horizont:8,how:[1,5,8,9,10,11,13,15,17],howev:[1,5,8,9,12,13,14],http:[5,7],hundread:13,hybrid:[5,10],i:[1,3,5,8,9,12,13,14,15,16],i_1:6,i_n:6,ideal:5,ident:8,identif:5,idx:12,ijb:[9,13],ijk:9,im:9,imag:[8,11,16,17],image_s:[11,16,17],immers:5,implement:[1,5,11,17],improv:11,in_1:3,in_channel:[8,17],in_dim:[5,8,11],in_env:8,in_featur:8,in_n:3,in_region:8,in_which_axi:1,includ:[1,5,8,12],incorpor:5,inde:1,independ:[1,9],index:[1,12,14],indic:[1,6,8,9,12,13,14,15],infer:[1,8,9,12,14,16],inform:[1,5,8,9,12,13,14],ingredi:[1,12],inherit:[1,8,9,15],inic:16,init:13,init_method:[1,8,11,12,13,17],initi:[0,1,8,11,12,13,16,17],inlin:8,inline_input:8,inline_mat:8,inner:1,input:[1,3,8,9,11,12,13,14,15,16,17],input_edg:[1,15,16],input_nod:16,insid:[1,5,7],insight:13,instal:[2,11,12],instanc:[1,9,14,15,16],instanti:[1,3,8,12,14,15,16],instati:12,instead:[1,8,13,14,15,16,17],integ:4,integr:5,intend:[1,8],interior:8,intermedi:[1,13,15,16],intern:8,intric:5,introduc:8,introduct:5,invari:[1,8,14,15],inverse_memori:1,involv:[1,9,14],is_attached_to:1,is_avail:[11,16,17],is_batch:[1,12],is_connected_to:1,is_dangl:[1,12],is_data:[1,15],is_leaf:[1,15],is_node1:1,is_result:[1,15],is_virtu:[1,15],isinst:[1,13],isn:[11,12],isometri:8,issu:1,item:[11,17],iter:[1,8,14],its:[1,5,6,8,9,12,14,16,17],itself:[1,8,16],itselv:8,j:[1,4,5,9],jkb:[9,13],jl:9,jo:5,joserapa98:[5,7],just:[1,5,8,12,14,15,16,17],k:[5,9],keep:[1,3,8,9,14],kei:[1,5,12],kept:[1,3,8,9],kernel:8,kernel_s:[8,17],kerstjen:5,keyword:[1,8],kib:[9,13],kind:[1,11],klm:9,know:[1,12,13,14],known:16,kwarg:[1,8],l2_reg:[11,17],l:[4,9],label:[8,11,15,17],lambda:[11,17],larger:1,largest:1,last:[1,8,9,16,17],later:16,latter:[1,8],layer:[1,5,8,11,16,17],ldot:6,lead:[1,15],leaf:[1,9,15,16],leaf_nod:[1,15],learn:[1,5,9,11,12,13,14,15,16,17],learn_rat:[11,17],learnabl:13,least:[1,9,11,14,17],leav:[8,14],left1:13,left2:13,left:[1,5,8,9,12,13,14,15,16,17],left_bord:8,left_down_corn:8,left_nod:8,left_up_corn:8,leg:1,len:[9,16],length:[1,8],let:[11,12,13,14,16,17],level:[1,4,12],leverag:12,lfloor:4,li:[1,5,12],librari:[5,12,17],like:[0,1,5,8,11,12,13,14,15,16,17],limit:6,line:[5,8,17],linear:[5,16],link:1,list:[1,3,6,8,9,12,13,16],load:[11,16],load_state_dict:16,loader:[11,17],local:[4,8],locat:[1,8],logarithm:8,logit:[11,17],longer:[1,14],loop:[11,16],lose:11,loss:17,loss_fun:[11,17],lot:[1,11],low:[1,4,6,8],lower:[1,3,6,8,9],lr:[11,17],lvert:4,m:[1,3,5,7,9],machin:[5,11],made:[1,9],mai:[1,3,5,8],main:[1,12,13,14,16],mainli:1,maintain:1,make:[1,12,13,14,15],make_tensor:[1,8],manag:[1,16],mandatori:[1,9],mani:[1,8,11,12,14,17],manipul:12,manual:[1,8,16],manual_se:[11,17],map:4,margin:8,marginalize_output:8,master:[5,7],mat:3,mat_to_mpo:0,match:[1,8,9],matric:[8,9,13,16],matrix:[1,3,4,5,8,9,11,12,14,16],mats_env:8,max:[11,17],max_bond:8,maximum:[4,8],maxpool2d:17,mayb:9,mb:[11,17],mean:[1,6],megabyt:[11,17],mehtod:12,member:1,memori:[1,5,10,11,12,15,16,17],mention:[8,16],method:[1,8,12,13,14,15,16],middl:8,might:[1,8,14,15,16],mile:4,mimic:16,minuend:9,misc:5,miscellan:[11,17],mit:5,mnist:11,mod:4,mode:[1,8,9,11,15,16,17],model:[0,1,5,10,12,13,14,15],modif:1,modifi:[1,13],modul:[1,5,7,8,11,12,13,16,17],modulelist:17,monomi:4,monturiol:5,mooth:5,more:[1,3,5,8,9,12,13,14,15],most:[1,5,12,15],move:[1,8,12],move_nam:1,move_to_network:[1,9],movec:9,mp:[0,3,5,11,12,13,14,15,16,17],mpo:[0,3,16],mps_data:8,mps_layer:8,mpsdata:[0,3],mpslayer:[0,5,11,16],much:[1,14,15,16,17],mul:[0,13],multi:12,multipl:[8,12,14],multipli:9,must:[1,3,9,12,16],my_model:5,my_nod:[1,14],my_paramnod:1,my_stack:1,mybatch:1,n:[1,4,5,6,8,11,17],n_:[1,4],n_batch:[3,8],n_col:8,n_epoch:16,n_featur:[5,8,11,16],n_param:[11,17],n_row:8,name:[1,5,6,9,11,12,13,14,16,17],name_:1,necessari:[1,8,9,11,12,16,17],need:[1,8,9,11,12,13,14,16],neighbour:[1,8,13],nelement:[11,17],net2:1,net:[1,5,9,12,13,14,15],network:[0,5,6,8,9,10,14,15,16],neural:[5,8,10,11],never:[1,9,15],nevertheless:5,new_edg:[1,9],new_edgea:1,new_edgeb:1,new_mp:16,new_nodea:[1,9],new_nodeb:[1,9],new_tensor:14,next:[1,8,9,12,13,14,15],nn:[1,5,8,11,12,13,16,17],no_grad:[11,17],node1:[1,5,9,12,13,14,15],node1_ax:[1,9],node1_list:1,node1_lists_dict:1,node2:[1,5,9,12,13,14,15],node2_ax:[1,9],node3:[13,14],node:[0,5,6,8,10,11,14,16,17],node_0:1,node_1:1,node_:[12,13,14,15],node_left:[1,9],node_n:1,node_ref:1,node_right:[1,9],nodea:[1,9],nodeb:[1,9],nodec:[1,9],nodes_list:9,nodes_nam:1,nodesa:9,nodesb:9,nodesc:9,non:[1,8,9,13,16],none:[1,3,5,6,8,9,13,16],norm:[1,8],normal:[1,6,8],notabl:5,notat:12,note:[1,5,9,12,13,16],noth:[1,12,14],now:[1,12,13,14,16,17],nu_batch:8,num:1,num_batch:[11,17],num_batch_edg:[1,15,16],num_epoch:[11,17],num_epochs_canon:11,num_test:[11,17],num_train:[11,17],number:[1,3,8,9,11,13,16,17],numel:1,nummber:1,o:5,obc:[3,8],object:[1,12,17],obtain:11,oc:8,occur:[1,14],off:[11,14,17],offer:5,often:[1,14],onc:[1,5,9,14],one:[1,3,8,9,11,12,13,14,15,16,17],ones:[0,1,4,8,12,13,15,17],ones_lik:[11,17],onli:[1,5,8,9,12,13,14,15,16],open:8,oper:[0,1,8,12,15,16],operand:[1,12,13],opposit:8,opt_einsum:[5,9,13],optim:[1,5,17],option:[1,3,4,5,6,8,9,12,16],order:[1,3,8,9,12,13,14,15,16],orient:8,origin:[1,4,8,9,11,15,17],orthogon:8,ot:8,other:[1,8,9,12,13,14,15,16,17],other_left:12,other_nod:14,otherwis:[1,8,9,17],otim:4,our:[11,12,13,14,17],out:[1,8,9,16],out_1:3,out_channel:[8,17],out_dim:[5,8,11],out_env:8,out_featur:8,out_n:3,out_nod:8,out_posit:8,out_region:8,output:[1,3,4,8,9,11,16],output_nod:16,outsid:[5,7],over:[1,13],overcom:1,overhead:14,overload:1,overrid:[1,8,16],override_edg:1,override_nod:1,overriden:[1,13,16],own:[1,8,9,14,15],ownership:1,p:[1,5,11,17],packag:[5,7],pad:[8,17],pair:[1,8,17],pairwis:8,paper:[4,5,8,17],parallel:[1,8],param:[1,9,11,17],param_nod:[1,5,6,13,15],paramedg:1,paramet:[1,3,4,6,8,9,11,13,16,17],parameter:[1,8,13],parametr:[1,8,11,13,16,17],paramnod:[0,6,8,9,14,15,16],paramnode1:13,paramnode2:13,paramnode3:13,paramnodea:1,paramnodeb:1,paramstacknod:[0,9,14,15],pareja2023tensorkrowch:5,pareja:5,parent:[1,16],parenthesi:1,part:[1,8,13,15,16],partial:[8,17],partial_dens:8,particular:[1,16],pass:[8,11,16],patch:[8,16],pattern:17,pave:11,pbc:8,pep:[0,5,16],perform:[1,5,8,9,11,12,13,14,16,17],period:8,permut:[0,1,13,14],permute_:[0,1,13],phase:9,phi:4,phys_dim:8,physic:[3,8,12],pi:4,piec:[12,16],pip:[5,7,11,12],pipelin:[5,11],pixel:[8,11,16,17],place:[1,8,9,13,14,16],plai:15,pleas:5,plu:8,plug:8,point:[1,11],poli:[0,16],pool:17,posit:[8,16],possibl:[1,11,12,13,14],potenti:5,power:[4,11],poza:5,practic:[1,5],practition:11,precis:4,pred:[11,17],predict:[11,17],present:17,previou:[1,8,13,14,15,16,17],previous:13,primari:5,principl:[1,15],print:[1,8,9,11,17],probabl:11,problem:[1,14],process:[1,5,11],product:[5,8,9,11,12,14,16],profici:5,project:8,properli:16,properti:[1,8,9,12],proport:[1,3,8,9],prove:8,provid:[1,3,5,8,9,12],prune:17,pt:16,purpos:[1,12,14,15],put:[1,8,11,17],pytest:[5,7],python:[5,7,11],pytorch:[1,5,9,11,12,13,14,16,17],q:9,qr:[0,1,8,13],qr_:[0,1,8],quantiti:[1,3,8,9],quantum:12,qubit:8,quit:[5,17],r:[5,9],r_1:9,r_2:9,rais:1,ram:5,rand:[0,1,4,8],randint:4,randn:[0,1,4,5,8,9,12,13,14,15,16],randn_ey:[8,11,17],random:[8,9,13],random_ey:16,rang:[1,5,8,9,11,12,13,14,15,16,17],rangl:4,rank:[1,3,4,8,9,13],rapid:5,rather:[1,8,12,14,15],re:[1,9,11,17],reach:11,readi:16,realli:[1,15],reattach:1,reattach_edg:1,recal:[1,16],recogn:13,recommend:[1,5],reconnect:[1,13],recov:[1,3,8],reduc:[1,8,11,17],redund:[1,9],refer:[1,2,9,12,13,14,15,16],referenc:1,regard:[1,9,13],relat:12,relev:[1,12],reli:5,relu:[5,17],remain:8,remov:[1,9],renorm:8,repeat:[1,9],repeatedli:14,replac:1,repositori:[5,7],repres:[8,12],reproduc:[1,14],requir:[1,8,9,15],requires_grad:1,res1:13,res2:13,reserv:[1,9,14],reset:[1,8,9,14,15,16],reset_tensor_address:1,reshap:[3,9,14],resiz:[11,17],respect:[1,3,8,9,13,14],rest:[1,13],restrict:[1,9,15],result2:9,result:[1,3,5,8,9,13,14,15,16],resultant_nod:[1,15],retriev:[1,12,14,15],reus:8,rez:5,rfloor:4,rid:1,right1:13,right2:13,right:[1,5,8,9,12,13,14,15,16,17],right_bord:8,right_down_corn:8,right_nod:8,right_up_corn:8,rightmost:8,ring:13,role:[1,8,15,16],row:8,rowch:5,rq:[0,1],rq_:[0,1,8],run:[5,7,8,11,17],running_acc:11,running_test_acc:[11,17],running_train_acc:[11,17],running_train_loss:[11,17],s:[1,4,5,6,8,9,11,12,13,14,15,16,17],s_1:4,s_i:[1,3,8,9],s_j:4,s_n:4,sai:[1,14],same:[1,8,9,12,13,14,17],sampler:[11,17],satisfi:[1,3,8,9],save:[1,5,10,13,16],scalar:8,scale:8,scenario:5,schwab:4,score:[11,17],second:[1,8,9,14],secondli:16,section:[12,13,15,17],see:[1,5,8,9,15,17],seen:15,select:[1,9,12,13,16],self:[1,8,16,17],send:[11,16,17],sens:[11,15],sento:16,separ:9,sepcifi:1,sequenc:[1,3,6,8,9,13,16],sequenti:[5,16],serv:11,set:[1,8,9,14,15,16,17],set_data_nod:[1,8,15,16],set_param:[1,8],set_tensor:[1,8,14],set_tensor_from:[1,14,15,16],sever:[1,9],shall:[1,16],shape:[1,3,4,5,6,8,9,11,12,13,14,15,16],shape_all_nodes_layer_1:8,shape_all_nodes_layer_n:8,shape_node_1_layer_1:8,shape_node_1_layer_n:8,shape_node_i1_layer_1:8,shape_node_in_layer_n:8,share:[1,8,9,12,14,15],share_tensor:[1,8],should:[1,3,4,6,8,9,12,13,14,15,16],show:12,side:[1,8,9,17],similar:[1,8,9,12,13,15,16],simpl:[5,12,13],simpli:[1,12,14,16],simplifi:[1,5],simul:12,sin:4,sinc:[1,8,9,13,14,15,16,17],singl:[1,8,9,13,16],singular:[1,3,8,9,11,13,17],site:[8,12],sites_per_lay:8,situat:[1,15],size:[1,4,6,8,9,12,13,15,16,17],skip:1,skipp:14,slice:[1,9,14,15],slide:1,slower:[1,14],small:13,smaller:1,smooth:5,snake:[8,17],so:[1,8,9,14,16],some:[1,3,8,9,11,12,13,14,15,16],someth:12,sometim:1,sort:[1,12,14,15],sourc:[1,3,4,6,8,9],space:[1,6,11,16,17],special:[1,13,15],specif:[1,5,15],specifi:[1,3,8,9,12,13,15],split:[0,1,3,8,12,13],split_0:[1,9],split_1:[1,9],split_:[0,1,13],split_ip:[1,9],split_ip_0:[1,9],split_ip_1:[1,9],sqrt:4,squar:9,stack:[0,1,4,8,11,13,14,15,16],stack_0:1,stack_1:1,stack_data:[1,9,16],stack_data_memori:[1,15],stack_data_nod:13,stack_input:16,stack_nod:[1,9,13,14,15],stack_result:[13,16],stackabl:9,stacked_einsum:[0,13],stackedg:[0,9,13],stacknod:[0,9,13,15],stai:1,stand:4,standard:6,start:[1,8,12,14,16,17],state:[1,5,8,11,12,14,16],state_dict:16,staticmethod:17,std:[1,6,8,11,16,17],step:[1,5,10,17],stick:1,still:[1,8,9,13],store:[1,8,9,12,15,16],stoudenmir:4,str:[1,6,9],straightforward:5,strength:5,stride:[8,17],string:[1,8,9,15],structur:[1,5,8,12,16,17],sub:[0,13],subclass:[1,5,10,12,15,17],subsequ:[1,14],subsetrandomsampl:[11,17],substitut:1,subtract:9,subtrahend:9,successor:[0,9],suffix:1,suitabl:5,sum:[1,3,8,9,11,13,17],sum_:[1,3,8,9],summat:13,support:5,sv:[1,9],svd:[0,1,3,8,11],svd_:[0,1,8,13],svdr:[0,1,8],svdr_:[0,1,8],t:[9,11,12,15,16],t_:[6,9],tailor:5,take:[1,8,11,14,15,16],taken:1,task:[1,8,15],temporari:[1,15],tensor:[0,3,4,5,6,8,10,15,16],tensor_address:[1,8,14,15],tensorkrowch:[1,3,4,6,7,8,9,10,13,15,16,17],tensornetwork:[1,5,6,9,10,13,15,17],termin:[5,7],test:[5,7,11,17],test_set:[11,17],th:8,than:[1,3,8,9,12,16],thank:12,thei:[1,5,6,7,8,9,12,13,15],them:[1,8,9,11,12,13,14,16,17],themselv:[8,9],therefor:[1,5,7,8,12,16],thi:[1,3,4,5,8,9,11,12,13,14,15,16,17],thing:[1,9,11,15,17],think:14,third:8,those:[1,14,15,16],though:[1,8,9,13,16],thought:1,three:[1,9],through:[1,5,8,9,11,16,17],thu:[1,3,5,8,9,12,16],time:[1,3,4,5,8,9,10,12,13,16],titl:5,tk:[1,4,5,8,9,11,12,13,14,15,16,17],tn:16,togeth:[1,5,7,14,15],tool:[5,12,13],top:[1,5,8,11,13,17],torch:[1,3,4,5,6,8,9,11,12,13,14,15,16,17],torchvis:[11,17],total:[1,3,8,9,11,17],total_num:[11,17],totensor:[11,17],tprod:[0,13],trace:[1,8,9,11,15,16,17],trace_sit:8,track:[1,14],train:[1,5,12,13,14,16,17],train_set:[11,17],trainabl:[1,8,12,15,16,17],transform:[4,8,11,13,17],transit:8,translation:[1,8,14,15],transpos:[11,16,17],treat:1,tree:[0,16],tri:[1,9],triangular:9,trick:[14,17],tupl:[1,6,8,9],turn:[1,8,14],tutori:[1,2,11,12,13,14,15,16,17],two:[1,8,9,12,13,14],two_0:9,type:[1,3,4,5,6,8,9,10,12,13,14],typeerror:1,u:[1,6,9],ump:0,umpo:0,umpslay:0,unbind:[0,1,13,14,16],unbind_0:[1,9],unbind_result:13,unbinded_nod:[13,14],unbound:[1,9],under:[5,14],underli:14,underscor:[1,9],understand:[5,12],undesir:[1,8,15],unfold:8,uniform:[1,6,8,14,15,16],uniform_memori:16,uniform_nod:[14,15],uninform:11,uniqu:[8,14],unit:[0,8],unitari:[8,9],univoc:8,unix:[5,7],unless:1,unset:1,unset_data_nod:[1,8],unset_tensor:1,unsqueez:17,until:[1,8,9,11],up:[1,8,9,12],up_bord:8,updat:[11,17],upep:0,upon:8,upper:[6,8,9],ur_1sr_2v:9,us:[1,3,4,5,6,8,9,11,12,13,14,15,16,17],usag:1,useless:11,user:[1,5],usual:[1,8,9,15,16],usv:9,util:[11,17],utre:0,v:[1,5,7,9],valid:1,valu:[1,3,4,8,9,11,13,16,17],valueerror:1,vanilla:[12,13,14],variabl:4,variant:[13,16],variat:1,variou:[5,8],vdot:4,vec:3,vec_to_mp:0,vector:[3,4,8,11,16,17],veri:[1,11,12,14,16],verifi:[1,9],versa:8,versatil:5,version:[1,8,9,13],vertic:[1,8],via:[1,3,8,9,12,13,14,15],vice:8,view:[11,16,17],virtual:[1,9,14,15,16],virtual_nod:[1,15],virtual_result:[1,15],virtual_result_stack:[1,9,15],virtual_uniform:[1,8,15,16],virtual_uniform_mp:1,visit:1,wa:[1,8,16,17],wai:[1,8,11,12,16],want:[1,8,12,13,14,16],we:[1,11,12,13,14,15,16,17],weight_decai:[11,17],well:[1,8,9],were:[1,8,13,15,16],what:[1,12,14,16],when:[1,8,9,11,12,13,14,15,16],whenev:[1,9],where:[1,4,6,8,9,11,12,13,14,16],whether:[1,6,8,12,14],which:[1,4,6,8,9,11,12,13,14,15,16],whilst:8,who:5,whole:[1,8,11,13,14,15,16],whose:[1,8,9,14,15],why:14,wide:[5,16],width:[8,11,16],wise:[1,9],wish:16,without:[1,6,8,9,11],won:16,word:[1,12],work:[5,13,17],workflow:[1,16],worri:[1,14],would:[1,8,9,12,14,17],wouldn:15,wow:17,wrap:[1,12],written:[5,7],x:[4,5,8,11,16,17],x_1:4,x_j:4,x_n:4,y1:17,y2:17,y3:17,y4:17,y:17,yet:[12,16],you:[5,7,11,12,13,14,15,16],your:[5,7,11,12,16],your_nod:14,yourself:5,zero:[0,1,8,11,16,17],zero_grad:[11,17],zeros_lik:14},titles:["API Reference","Components","<no title>","Decompositions","Embeddings","TensorKrowch documentation","Initializers","Installation","Models","Operations","Tutorials","First Steps with TensorKrowch","Creating a Tensor Network in TensorKrowch","Contracting and Differentiating the Tensor Network","How to save Memory and Time with TensorKrowch (ADVANCED)","The different Types of Nodes (ADVANCED)","How to subclass TensorNetwork to build Custom Models","Creating a Hybrid Neural-Tensor Network Model"],titleterms:{"1":[11,12,13,14,15,16],"2":[11,12,13,14,15,16],"3":[11,12,13,14,16],"4":11,"5":11,"6":11,"7":11,"class":9,"function":11,"import":11,The:[15,16],abstractnod:1,add:9,add_on:4,advanc:[14,15],api:0,ar:14,axi:1,basi:4,between:13,build:[12,16],choos:11,cite:5,compon:[1,12,16],connect:9,connect_stack:9,content:2,contract:[9,13],contract_:9,contract_between:9,contract_between_:9,contract_edg:9,convmp:8,convmpslay:8,convpep:8,convtre:8,convump:8,convumpslay:8,convupep:8,convutre:8,copi:6,creat:[12,17],custom:16,data:11,decomposit:3,differ:15,differenti:13,disconnect:9,discret:4,distinguish:13,document:5,download:11,edg:[1,9],einsum:9,embed:4,empti:6,everyth:16,exampl:5,faster:14,first:[11,16],how:[12,14,16],hybrid:17,hyperparamet:11,initi:6,instal:[5,7],instanti:11,introduct:[11,12,13,14,15,16],librari:11,licens:5,like:9,loss:11,manag:14,mat_to_mpo:3,matrix:13,memori:14,mode:14,model:[8,11,16,17],mp:8,mpo:8,mpsdata:8,mpslayer:8,mul:9,name:15,network:[1,11,12,13,17],neural:17,node:[1,9,12,13,15],ones:6,oper:[9,13,14],optim:11,our:16,paramnod:[1,13],paramstacknod:1,pep:8,permut:9,permute_:9,poli:4,product:13,prune:11,put:16,qr:9,qr_:9,rand:6,randn:6,refer:0,requir:5,reserv:15,rq:9,rq_:9,run:14,save:14,set:11,setup:[11,12],skip:14,split:9,split_:9,stack:9,stacked_einsum:9,stackedg:1,stacknod:1,start:11,state:13,step:[11,12,13,14,15,16],store:14,sub:9,subclass:16,successor:1,svd:9,svd_:9,svdr:9,svdr_:9,tensor:[1,9,11,12,13,14,17],tensorkrowch:[5,11,12,14],tensornetwork:[12,14,16],time:14,togeth:16,tprod:9,train:11,tree:8,tutori:[5,10],type:15,ump:8,umpo:8,umpslay:8,unbind:9,unit:4,upep:8,utre:8,vec_to_mp:3,zero:6}}) \ No newline at end of file +Search.setIndex({docnames:["api","components","contents","decompositions","embeddings","index","initializers","installation","models","operations","tutorials","tutorials/0_first_steps","tutorials/1_creating_tensor_network","tutorials/2_contracting_tensor_network","tutorials/3_memory_management","tutorials/4_types_of_nodes","tutorials/5_subclass_tensor_network","tutorials/6_mix_with_pytorch"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":5,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["api.rst","components.rst","contents.rst","decompositions.rst","embeddings.rst","index.rst","initializers.rst","installation.rst","models.rst","operations.rst","tutorials.rst","tutorials/0_first_steps.rst","tutorials/1_creating_tensor_network.rst","tutorials/2_contracting_tensor_network.rst","tutorials/3_memory_management.rst","tutorials/4_types_of_nodes.rst","tutorials/5_subclass_tensor_network.rst","tutorials/6_mix_with_pytorch.rst"],objects:{"tensorkrowch.AbstractNode":[[1,1,1,"","axes"],[1,1,1,"","axes_names"],[1,2,1,"","contract_between"],[1,2,1,"","contract_between_"],[1,1,1,"","device"],[1,2,1,"","disconnect"],[1,1,1,"","dtype"],[1,1,1,"","edges"],[1,2,1,"","get_axis"],[1,2,1,"","get_axis_num"],[1,2,1,"","get_edge"],[1,2,1,"","in_which_axis"],[1,2,1,"","is_connected_to"],[1,2,1,"","is_data"],[1,2,1,"","is_leaf"],[1,2,1,"","is_node1"],[1,2,1,"","is_resultant"],[1,2,1,"","is_virtual"],[1,2,1,"","make_tensor"],[1,2,1,"","mean"],[1,2,1,"","move_to_network"],[1,1,1,"","name"],[1,2,1,"","neighbours"],[1,1,1,"","network"],[1,2,1,"","node_ref"],[1,2,1,"","norm"],[1,2,1,"","numel"],[1,2,1,"","permute"],[1,2,1,"","permute_"],[1,1,1,"","rank"],[1,2,1,"","reattach_edges"],[1,2,1,"","reset_tensor_address"],[1,2,1,"","set_tensor"],[1,2,1,"","set_tensor_from"],[1,1,1,"","shape"],[1,2,1,"","size"],[1,2,1,"","split"],[1,2,1,"","split_"],[1,2,1,"","std"],[1,1,1,"","successors"],[1,2,1,"","sum"],[1,1,1,"","tensor"],[1,2,1,"","tensor_address"],[1,2,1,"","unset_tensor"]],"tensorkrowch.Axis":[[1,2,1,"","is_batch"],[1,2,1,"","is_node1"],[1,1,1,"","name"],[1,1,1,"","node"],[1,1,1,"","num"]],"tensorkrowch.Edge":[[1,1,1,"","axes"],[1,1,1,"","axis1"],[1,1,1,"","axis2"],[1,2,1,"","change_size"],[1,2,1,"","connect"],[1,2,1,"","contract"],[1,2,1,"","contract_"],[1,2,1,"","copy"],[1,2,1,"","disconnect"],[1,2,1,"","is_attached_to"],[1,2,1,"","is_batch"],[1,2,1,"","is_dangling"],[1,1,1,"","name"],[1,1,1,"","node1"],[1,1,1,"","node2"],[1,1,1,"","nodes"],[1,2,1,"","qr"],[1,2,1,"","qr_"],[1,2,1,"","rq"],[1,2,1,"","rq_"],[1,2,1,"","size"],[1,2,1,"","svd"],[1,2,1,"","svd_"],[1,2,1,"","svdr"],[1,2,1,"","svdr_"]],"tensorkrowch.Node":[[1,2,1,"","change_type"],[1,2,1,"","copy"],[1,2,1,"","parameterize"]],"tensorkrowch.ParamNode":[[1,2,1,"","change_type"],[1,2,1,"","copy"],[1,1,1,"","grad"],[1,2,1,"","parameterize"]],"tensorkrowch.ParamStackNode":[[1,1,1,"","edges_dict"],[1,1,1,"","node1_lists_dict"],[1,2,1,"","reconnect"],[1,2,1,"","unbind"]],"tensorkrowch.StackEdge":[[1,2,1,"","connect"],[1,1,1,"","edges"],[1,1,1,"","node1_list"]],"tensorkrowch.StackNode":[[1,1,1,"","edges_dict"],[1,1,1,"","node1_lists_dict"],[1,2,1,"","reconnect"],[1,2,1,"","unbind"]],"tensorkrowch.TensorNetwork":[[1,2,1,"","add_data"],[1,1,1,"","auto_stack"],[1,1,1,"","auto_unbind"],[1,2,1,"","contract"],[1,2,1,"","copy"],[1,1,1,"","data_nodes"],[1,2,1,"","delete_node"],[1,1,1,"","edges"],[1,2,1,"","forward"],[1,1,1,"","leaf_nodes"],[1,1,1,"","nodes"],[1,1,1,"","nodes_names"],[1,2,1,"","parameterize"],[1,2,1,"","reset"],[1,1,1,"","resultant_nodes"],[1,2,1,"","set_data_nodes"],[1,2,1,"","trace"],[1,2,1,"","unset_data_nodes"],[1,1,1,"","virtual_nodes"]],"tensorkrowch.decompositions":[[3,3,1,"","mat_to_mpo"],[3,3,1,"","vec_to_mps"]],"tensorkrowch.embeddings":[[4,3,1,"","add_ones"],[4,3,1,"","basis"],[4,3,1,"","discretize"],[4,3,1,"","poly"],[4,3,1,"","unit"]],"tensorkrowch.models":[[8,0,1,"","ConvMPS"],[8,0,1,"","ConvMPSLayer"],[8,0,1,"","ConvPEPS"],[8,0,1,"","ConvTree"],[8,0,1,"","ConvUMPS"],[8,0,1,"","ConvUMPSLayer"],[8,0,1,"","ConvUPEPS"],[8,0,1,"","ConvUTree"],[8,0,1,"","MPO"],[8,0,1,"","MPS"],[8,0,1,"","MPSData"],[8,0,1,"","MPSLayer"],[8,0,1,"","PEPS"],[8,0,1,"","Tree"],[8,0,1,"","UMPO"],[8,0,1,"","UMPS"],[8,0,1,"","UMPSLayer"],[8,0,1,"","UPEPS"],[8,0,1,"","UTree"]],"tensorkrowch.models.ConvMPS":[[8,2,1,"","copy"],[8,1,1,"","dilation"],[8,2,1,"","forward"],[8,1,1,"","in_channels"],[8,1,1,"","kernel_size"],[8,1,1,"","padding"],[8,1,1,"","stride"]],"tensorkrowch.models.ConvMPSLayer":[[8,2,1,"","copy"],[8,1,1,"","dilation"],[8,2,1,"","forward"],[8,1,1,"","in_channels"],[8,1,1,"","kernel_size"],[8,1,1,"","out_channels"],[8,1,1,"","padding"],[8,1,1,"","stride"]],"tensorkrowch.models.ConvPEPS":[[8,1,1,"","dilation"],[8,2,1,"","forward"],[8,1,1,"","in_channels"],[8,1,1,"","kernel_size"],[8,1,1,"","padding"],[8,1,1,"","stride"]],"tensorkrowch.models.ConvTree":[[8,1,1,"","dilation"],[8,2,1,"","forward"],[8,1,1,"","in_channels"],[8,1,1,"","kernel_size"],[8,1,1,"","padding"],[8,1,1,"","stride"]],"tensorkrowch.models.ConvUMPS":[[8,2,1,"","copy"],[8,1,1,"","dilation"],[8,2,1,"","forward"],[8,1,1,"","in_channels"],[8,1,1,"","kernel_size"],[8,1,1,"","padding"],[8,1,1,"","stride"]],"tensorkrowch.models.ConvUMPSLayer":[[8,2,1,"","copy"],[8,1,1,"","dilation"],[8,2,1,"","forward"],[8,1,1,"","in_channels"],[8,1,1,"","kernel_size"],[8,1,1,"","out_channels"],[8,1,1,"","padding"],[8,1,1,"","stride"]],"tensorkrowch.models.ConvUPEPS":[[8,1,1,"","dilation"],[8,2,1,"","forward"],[8,1,1,"","in_channels"],[8,1,1,"","kernel_size"],[8,1,1,"","padding"],[8,1,1,"","stride"]],"tensorkrowch.models.ConvUTree":[[8,1,1,"","dilation"],[8,2,1,"","forward"],[8,1,1,"","in_channels"],[8,1,1,"","kernel_size"],[8,1,1,"","padding"],[8,1,1,"","stride"]],"tensorkrowch.models.MPO":[[8,1,1,"","bond_dim"],[8,1,1,"","boundary"],[8,2,1,"","contract"],[8,2,1,"","copy"],[8,1,1,"","in_dim"],[8,2,1,"","initialize"],[8,1,1,"","left_node"],[8,1,1,"","mats_env"],[8,1,1,"","n_batches"],[8,1,1,"","n_features"],[8,1,1,"","out_dim"],[8,2,1,"","parameterize"],[8,1,1,"","right_node"],[8,2,1,"","set_data_nodes"]],"tensorkrowch.models.MPS":[[8,1,1,"","bond_dim"],[8,1,1,"","boundary"],[8,2,1,"","canonicalize"],[8,2,1,"","canonicalize_univocal"],[8,2,1,"","contract"],[8,2,1,"","copy"],[8,1,1,"","in_env"],[8,1,1,"","in_features"],[8,1,1,"","in_regions"],[8,2,1,"","initialize"],[8,1,1,"","left_node"],[8,1,1,"","mats_env"],[8,2,1,"","mi"],[8,1,1,"","n_batches"],[8,1,1,"","n_features"],[8,2,1,"","norm"],[8,1,1,"","out_env"],[8,1,1,"","out_features"],[8,1,1,"","out_regions"],[8,2,1,"","parameterize"],[8,2,1,"","partial_density"],[8,1,1,"","phys_dim"],[8,1,1,"","right_node"],[8,2,1,"","set_data_nodes"]],"tensorkrowch.models.MPSData":[[8,2,1,"","add_data"],[8,1,1,"","bond_dim"],[8,1,1,"","boundary"],[8,2,1,"","initialize"],[8,1,1,"","left_node"],[8,1,1,"","mats_env"],[8,1,1,"","n_batches"],[8,1,1,"","n_features"],[8,1,1,"","phys_dim"],[8,1,1,"","right_node"]],"tensorkrowch.models.MPSLayer":[[8,2,1,"","copy"],[8,1,1,"","in_dim"],[8,2,1,"","initialize"],[8,1,1,"","out_dim"],[8,1,1,"","out_node"],[8,1,1,"","out_position"]],"tensorkrowch.models.PEPS":[[8,1,1,"","bond_dim"],[8,1,1,"","boundary"],[8,2,1,"","contract"],[8,1,1,"","in_dim"],[8,2,1,"","initialize"],[8,1,1,"","n_batches"],[8,1,1,"","n_cols"],[8,1,1,"","n_rows"],[8,2,1,"","set_data_nodes"]],"tensorkrowch.models.Tree":[[8,1,1,"","bond_dim"],[8,2,1,"","canonicalize"],[8,2,1,"","contract"],[8,2,1,"","initialize"],[8,1,1,"","n_batches"],[8,2,1,"","set_data_nodes"],[8,1,1,"","sites_per_layer"]],"tensorkrowch.models.UMPO":[[8,2,1,"","copy"],[8,2,1,"","initialize"],[8,2,1,"","parameterize"]],"tensorkrowch.models.UMPS":[[8,2,1,"","copy"],[8,2,1,"","initialize"],[8,2,1,"","parameterize"]],"tensorkrowch.models.UMPSLayer":[[8,2,1,"","copy"],[8,1,1,"","in_dim"],[8,2,1,"","initialize"],[8,1,1,"","out_dim"],[8,1,1,"","out_node"],[8,1,1,"","out_position"],[8,2,1,"","parameterize"]],"tensorkrowch.models.UPEPS":[[8,1,1,"","bond_dim"],[8,2,1,"","contract"],[8,1,1,"","in_dim"],[8,2,1,"","initialize"],[8,1,1,"","n_batches"],[8,1,1,"","n_cols"],[8,1,1,"","n_rows"],[8,2,1,"","set_data_nodes"]],"tensorkrowch.models.UTree":[[8,1,1,"","bond_dim"],[8,2,1,"","contract"],[8,2,1,"","initialize"],[8,1,1,"","n_batches"],[8,2,1,"","set_data_nodes"],[8,1,1,"","sites_per_layer"]],tensorkrowch:[[1,0,1,"","AbstractNode"],[1,0,1,"","Axis"],[1,0,1,"","Edge"],[1,0,1,"","Node"],[9,0,1,"","Operation"],[1,0,1,"","ParamNode"],[1,0,1,"","ParamStackNode"],[1,0,1,"","StackEdge"],[1,0,1,"","StackNode"],[1,0,1,"","Successor"],[1,0,1,"","TensorNetwork"],[9,3,1,"","add"],[9,3,1,"","connect"],[9,3,1,"","connect_stack"],[9,3,1,"","contract"],[9,3,1,"","contract_"],[9,3,1,"","contract_between"],[9,3,1,"","contract_between_"],[9,3,1,"","contract_edges"],[6,3,1,"","copy"],[9,3,1,"","disconnect"],[9,3,1,"","einsum"],[6,3,1,"","empty"],[9,3,1,"","mul"],[6,3,1,"","ones"],[9,3,1,"","permute"],[9,3,1,"","permute_"],[9,3,1,"","qr"],[9,3,1,"","qr_"],[6,3,1,"","rand"],[6,3,1,"","randn"],[9,3,1,"","rq"],[9,3,1,"","rq_"],[9,3,1,"","split"],[9,3,1,"","split_"],[9,3,1,"","stack"],[9,3,1,"","stacked_einsum"],[9,3,1,"","sub"],[9,3,1,"","svd"],[9,3,1,"","svd_"],[9,3,1,"","svdr"],[9,3,1,"","svdr_"],[9,3,1,"","tprod"],[9,3,1,"","unbind"],[6,3,1,"","zeros"]]},objnames:{"0":["py","class","Python class"],"1":["py","property","Python property"],"2":["py","method","Python method"],"3":["py","function","Python function"]},objtypes:{"0":"py:class","1":"py:property","2":"py:method","3":"py:function"},terms:{"0":[1,3,4,5,6,8,9,11,13,15,16,17],"00":4,"0000":4,"0000e":4,"0086":1,"0101":1,"0188":1,"0234":1,"0371":1,"0412":1,"0440":1,"0445":1,"0465":1,"0501":1,"0521":1,"0633":1,"0639":11,"0704":1,"0728":11,"0743":1,"0750":11,"08":4,"0806":1,"0820":11,"08595":5,"09":8,"0913":11,"0983":11,"0998":11,"1":[1,3,4,5,6,8,9,17],"10":[1,4,5,8,9,11,13,16,17],"100":[1,4,5,8,9,12,13,14,15],"10000":[11,17],"1024":[11,17],"1091":1,"1123":11,"1211":1,"1308":11,"1371":1,"14":17,"1496":1,"15":[1,9,13],"1573":11,"161204":11,"1654":1,"1878":17,"1955":11,"1990":11,"1998":1,"1e":[8,11,16,17],"2":[1,4,8,9,17],"20":[1,8,9,17],"2052":17,"2091":1,"2095":1,"2111":1,"2203":17,"2254":1,"2306":5,"2316":1,"2357":17,"236220":11,"2380":1,"2390":1,"2449":1,"2461":1,"2477":1,"2503":1,"2517":1,"2618":17,"2730":1,"2775":1,"2799":1,"28":[11,17],"2808":1,"2840":17,"2856":1,"2866":1,"2898":1,"2d":8,"3":[1,4,5,8,9,15,17],"30":17,"3083":11,"3088":1,"3139":1,"3149":17,"32":[8,11],"3222":1,"3340":1,"3370":1,"3371":1,"3381":1,"3393":1,"3427":1,"3489":1,"3508":1,"3513":1,"3585":1,"3711e":4,"3714":17,"3760":1,"3784":1,"3821":1,"4":[1,4,8,9,13,15,17],"40":17,"4005":1,"4181":1,"4184":1,"4216":1,"4383":1,"4385":1,"4402":1,"4431":1,"4461":1,"4572":1,"4588":1,"4731":1,"4761":1,"4974":1,"499320":17,"4f":[11,17],"5":[1,4,5,8,9,12,13,14,15,17],"50":17,"500":[5,11,16,17],"5000":4,"5021":1,"5029":1,"5069":1,"5161":1,"5224":17,"5401":1,"5406":1,"553186":17,"5567":1,"5570":1,"5676":11,"5731":1,"5760":1,"5797":1,"5920":1,"6":[1,4,8,17],"60":17,"60000":[11,17],"6023":1,"6149":11,"6225":1,"6227":1,"6295":1,"6356":1,"6399":1,"6492":1,"6495":1,"6524":1,"6545":1,"6551":1,"6811":1,"6925":1,"6982":1,"7":[1,5,8,9,13,14,17],"70":17,"75":4,"7500":4,"7592":1,"7688":1,"7752":1,"7812":1,"7997":1,"8":[5,8,11],"80":17,"8090":1,"8147":1,"8227":1,"8361":1,"8387":1,"8441":1,"8442":1,"8502":17,"8627":17,"8633":1,"8649":1,"8795":17,"8815":1,"8820":11,"8848":17,"8851":17,"8859":1,"8901":17,"8911":1,"8915":17,"8948":17,"8968":17,"8984":17,"9":[5,8,11,16,17],"90":17,"9006":1,"9009":17,"9011":[11,17],"9026":17,"9048":17,"9053":11,"9125":17,"9145":1,"9174":17,"9231":17,"9265":1,"9284":17,"9320":1,"9371":11,"9396":11,"9400":11,"9432":1,"9509":11,"9526":11,"9551":1,"9561":1,"9585":11,"9600":11,"9618":1,"9621":11,"9625":11,"9668":11,"9677":11,"9696":11,"9700":11,"9721":11,"9729":11,"9731":11,"9734":11,"9736":11,"9738":11,"9743":11,"9768":11,"9775":11,"9793":11,"98":17,"9844":1,"99":11,"9925":1,"9942":1,"9957":1,"abstract":1,"boolean":[1,6,8],"byte":[11,17],"case":[1,3,8,14,15,16],"class":[0,1,8,11,13,16,17],"default":[1,4,8,14,15],"do":[1,8,11,12,14,15,16],"final":[1,8,13,16],"float":[1,3,6,8,9],"function":[1,8,9,13,17],"garc\u00eda":5,"import":[1,5,12,13,14,15,16,17],"int":[1,3,4,6,8,9],"n\u00ba":[11,17],"new":[1,4,6,8,9,11,12,13,14,16,17],"p\u00e9rez":5,"return":[1,3,4,6,8,9,11,12,13,14,16,17],"super":[1,16,17],"true":[1,5,6,8,9,11,13,14,15,16,17],"try":[13,17],"while":[1,5,13,14,15],A:[1,5,8,9,12],And:[14,17],As:[5,8,11,12,13,14],At:[1,12],Be:[1,13],But:[13,14,16,17],By:[1,4,5,8,11,12],For:[1,8,9,12,13,14,15,16],If:[1,3,4,5,6,8,9,12,14,16],In:[1,3,5,8,9,11,12,13,14,15,16,17],Is:8,It:[1,3,5,6,8,9,11,12,13,17],Its:[1,9],Not:16,Of:[14,16],On:1,One:[1,12],That:[1,3,4,8,9,13,14,16,17],The:[1,3,4,5,8,9,10,12,13,14,17],Then:[1,8,14],There:[1,8,13,15,16],These:[1,3,5,8,12,13,15],To:[1,3,5,7,8,9,11,12,13,14,15,16],With:[1,5,9,12,13,16],_:[1,8,9,11,12,16,17],__call__:1,__init__:[1,16,17],_channel:8,_copi:1,_dim:1,_percentag:[1,3,8,9],_size:8,_size_0:8,_size_1:8,_size_:1,a_:9,abil:5,abl:[1,12,13,16],about:[1,9,12,13,14,15,16],abov:[1,12,16],abstractnod:[0,9],acc:[11,17],acceler:1,accept:13,access:[1,6,12,13,14],accomplish:[1,3,8,15],accord:[1,9],accordingli:8,account:[1,8,15],accumul:8,accuraci:[11,17],achiev:1,act:[1,8,12,14],action:1,activ:1,actual:[1,8,12,13,14,17],ad:[1,4,8,9,13,16],adam:[11,17],adapt:9,add:[0,1,8,11,13,16,17],add_data:[1,8,15,16],add_on:[0,17],addit:[1,8,9],addition:1,address:[1,12,14],admit:8,advanc:[1,5,10],advantag:[14,16],affect:[1,9],after:[1,8,11,17],afterward:[1,8,9],again:[8,11,14,16],against:8,aim:[8,11],alejandro:5,algorithm:[1,8,14,16,17],all:[1,3,4,6,8,9,11,12,13,14,15,16,17],allow:[1,8],almost:[1,13,14,15,17],along:[1,9],alreadi:[1,8,9,11,12,13,16],also:[1,3,5,7,8,9,11,12,13,14,15,16],alter:8,although:[1,12,13,14,15,16],alwai:[1,5,8,9,11,12,13,14,15,16],among:8,amount:[9,11],an:[1,3,4,5,8,9,11,12,13,14,15,16],ancillari:[1,14,15],ani:[1,8,9,12,13,16],anoth:[1,8,9,12,13],anymor:1,api:2,appear:[1,9,12],append:[13,14,15,16,17],appli:[1,9,13],approach:5,appropi:[8,16,17],approxim:1,ar:[1,3,4,5,6,7,8,9,11,12,13,15,16,17],arang:4,arbitrari:1,architectur:5,archiveprefix:5,arg:[1,8],argument:[1,3,8,9,16],aros:1,around:11,arrai:12,arrow:9,arxiv:5,assert:[1,5,8,9,12,13,14,15],assign:8,assum:[1,4,8,9],attach:[1,6,9,12],attribut:[1,8,16],author:5,auto_stack:[1,9,11,14,15,16,17],auto_unbind:[1,9,11,14,16,17],automat:[1,9,12,13,14],auxiliari:9,avail:[5,11,12],avoid:[1,8,14],awar:[1,13],ax:[1,6,8,9,12,13],axes_nam:[1,5,6,9,12,13,14,15,16],axi:[0,4,6,9,12,16,17],axis1:1,axis2:1,axis_0:1,axis_1:1,axis_2:1,axis_n:1,b:[4,8,9,13],b_1:3,b_:9,b_m:3,backpropag:[11,17],backward:[1,5,11,13,17],base:[1,4,8,9,13],basi:[0,8],basic:[1,5,12,13],batch:[1,3,4,5,8,9,11,12,13,15,16],batch_0:[4,8],batch_1:[1,8,16],batch_m:1,batch_n:[4,8,16],batch_siz:[8,11,17],becaus:[1,8,14,17],becom:[1,5,8,9],been:[1,8,9,12,16],befor:[1,8,11,12,16,17],beforehand:12,begin:[4,11,12,17],behav:[1,14],behavior:8,behaviour:[1,8,12,14,15],being:[1,4,8,9,13],belong:[1,6,8,11,12,13],besid:[1,8,9,12],best:5,better:12,between:[1,3,4,5,8,9,12,14,15,17],big:[8,13],bigger:8,binom:4,blank:[1,6],bmatrix:4,bodi:12,bond:[3,8],bond_dim:[5,8,11,17],bool:[1,6,8],border:8,both:[1,8,9,12,13,14,15,16],bottom:[8,17],boudari:8,bound:[1,3,8,9],boundari:[3,8],bracket:1,bring:11,build:[1,5,10,13],built:[5,11,13,16],bunch:[1,13,16],c_:9,cach:[1,14],calcul:14,call:[1,8,9,11,13,16,17],callabl:9,can:[1,3,5,7,8,9,11,12,13,14,15,16,17],cannot:[1,6,8,9,13,15],canon:[8,11,17],canonic:[8,11,17],canonicalize_univoc:8,carri:[1,8,9,12],cast:1,cat:17,caus:8,cdot:[3,4,8],center:8,central:[1,12,17],certain:[1,4,5,6,9],chang:[1,5,8,12,14,16,17],change_s:1,change_typ:1,channel:8,charact:1,check:[1,8,9,11,12,13,14,15,17],check_first:9,child:1,chose:15,classif:[8,11],classifi:[11,16],clone:[5,7,8],close:8,cnn:17,cnn_snake:17,cnn_snakesb:17,co:4,code:[1,5,12,17],coincid:[8,9,12],collect:[1,9,13,14],column:8,com:[5,7],combin:[1,12,16,17],come:[1,9,11,12,15,16],comma:9,command:[5,7],common:[1,8,11,16],compar:14,complementari:8,complet:[1,9],compon:[0,4,5,9,11,13],compos:[11,17],comput:[1,4,5,7,8,9,11,13,14,16,17],concept:5,condit:[3,8,9],configur:5,conform:1,connect:[0,1,5,8,12,13,14,15,16],connect_stack:0,consecut:[3,8],consid:8,consist:[1,9],construct:[1,5,13,14],contain:[1,6,8,12,13,14,15],continu:11,contract:[0,1,5,8,10,11,12,14,15,16],contract_:[0,1,13],contract_between:[0,1,13],contract_between_:[0,1,13],contract_edg:[0,1,13],contract_edges_ip:[1,9],contrast:8,contrat:8,control:[1,12,14],conv2d:[8,17],conv_mp:8,conv_mps_lay:8,conv_pep:8,conv_tre:8,conveni:[8,15],convent:[1,9,13,16],convmp:0,convmpslay:[0,17],convolut:[8,16,17],convpep:0,convtre:0,convump:0,convumpslay:0,convupep:0,convutre:0,copi:[0,1,8],core:[8,12,17],corner:8,correct:[1,14],correctli:9,correspond:[1,3,4,8,9,12,13,14,16],costli:[1,8,14],could:[8,11,12,14,16],count:11,coupl:[1,12,15],cours:[14,16],cpu:[1,11,16,17],creat:[1,5,6,8,9,10,13,14,15,16],creation:[5,9],crop:[1,8],crossentropyloss:[11,17],cuda:[1,11,16,17],cum:[1,3,8,9],cum_percentag:[1,3,8,9,11,17],current:[1,8],custom:[1,5,8,10],cut:[3,11,17],cutoff:[1,3,8,9],d:[4,5],d_1:3,d_n:3,dagger:[1,9],dangl:[1,9,11,12,13],data:[1,4,5,8,9,13,15,16,17],data_0:[1,15],data_1:1,data_nod:[1,13,15,16],data_node_:13,dataload:[11,17],dataset:[8,11,17],david:[4,5],ddot:4,de:[1,6,8,13],decompos:[3,9],decomposit:[0,1,8,9,11,13,17],decreas:1,dedic:8,deep:[5,11],deepcopi:1,def:[1,11,16,17],defin:[1,4,5,8,12,13,15,16,17],degre:4,del:[1,9],delet:[1,9],delete_nod:1,densiti:8,depend:[1,3],deriv:8,descent:[12,13],describ:[1,8,16],design:8,desir:[4,13,14,15,16],detail:[1,5,8,13],determin:5,develop:5,deviat:6,devic:[1,6,8,11,16,17],devot:14,df:1,diagon:[1,6,9],diagram:12,dictionari:1,did:17,differ:[1,5,8,9,10,11,12,13,14,16,17],differenti:[5,10,12],dilat:8,dim:[4,11,17],dimens:[1,3,4,8,9,11,12,16],dimension:[12,17],directli:[1,5,7,9,12,13,14,15],disconnect:[0,1,8,12],discret:0,distinct:[1,6],distinguish:15,distribut:[6,8],divers:5,document:[1,9],doe:[1,8,12,14],don:9,done:[1,3,8,12],down:8,down_bord:8,download:[5,7,17],drawn:6,drop_last:[11,17],dtype:1,due:8,duplic:8,dure:[1,11,14,15],dynam:8,e:[1,4,5,8,9,15],each:[1,3,4,6,8,9,11,12,13,14,15,16,17],earlier:12,easi:[1,5],easier:12,easili:[1,12,13,16,17],edg:[0,5,6,8,11,12,13,14,15,16,17],edge1:[1,9],edge2:[1,9],edgea:1,edgeb:1,edges_dict:1,effect:[1,13],effici:[1,5,12],einstein:13,einsum:[0,13],either:[8,9],element:[1,4,5,6,8,9,12],element_s:[11,17],els:[11,16,17],emb:[11,16],emb_a:4,emb_b:4,embed:[0,8,11,16,17],embedd:4,embedding_matric:8,empti:[0,1,8,12,13,14],enabl:[1,5,8,12,13,14],end:[1,4,9],engin:12,enhanc:5,enough:[1,8],ensur:[1,5],entail:[1,14],entangl:8,entir:1,enumer:[1,8],environ:8,epoch:[1,11,16,17],epoch_num:[11,17],eprint:5,equal:[1,8,16],equilibrium:11,equival:[1,4,8,12,17],error:8,essenti:[1,5],etc:[1,9,12,16],evalu:13,even:[1,3,5,8,12,14,16],evenli:8,everi:[1,9,12,14,17],exact:1,exactli:1,exampl:[1,4,8,9,11,13,15,16],exceed:8,excel:5,except:[6,8],exclud:[1,15],execut:9,exist:[1,8,9,13],exp:8,expand:[1,4,16],expect:[3,8],experi:[1,5,12,14],experiment:5,explain:[1,12,13,14],explan:[1,8,9],explicitli:[1,15,16],explod:8,explor:[5,12],express:9,extend:1,extra:[3,8,9],extract:[8,12],extractor:17,ey:16,eye_tensor:16,f:[11,12,13,14,15,17],facilit:[1,5,9,12],fact:[1,15,16],factor:8,fail:8,fals:[1,6,8,9,11,13,14,16,17],familiar:[5,12],fashion:13,fashionmnist:17,faster:[1,16],fastest:5,featur:[1,4,8,9,12,13,14,15,17],feature_dim:[1,16],feature_s:8,fed:17,few:5,file:5,fill:[1,6,12,13,16],finish:[12,16],finit:8,first:[1,4,5,8,9,10,12,13,14,15,17],fix:[1,12,13],flat:8,flatten:8,flavour:1,flip:17,fn_first:9,fn_next:9,folder:[5,7],follow:[1,5,7,8,9],forget:1,form:[1,8,11,12,13,15,17],former:[1,8,9],forward:[1,8,16,17],four:16,frac:[1,3,4,8,9],framework:5,free:8,friendli:5,from:[1,5,6,7,8,9,11,12,13,15,16,17],from_sid:8,from_siz:8,front:1,full:11,fulli:5,func:[1,8],functool:17,fundament:5,further:[1,5],furthermor:[1,14,16],futur:[1,14],g:[1,8,9,15],gain:5,garc:5,gaussian:8,ge:[1,3,8,9],gener:[1,14],get:[1,11,12,16,17],get_axi:[1,12],get_axis_num:[1,12],get_edg:1,git:[5,7],github:[5,7],give:[1,12,14,15],given:[1,4,8],glimps:11,go:[1,9,11,13,14,17],goal:5,goe:8,good:[1,11],gpu:[11,16],grad:[1,5,13],gradient:[1,5,8,12,13],graph:[1,12,14,16],grasp:5,greater:[1,16],greatli:5,grid:8,grid_env:8,group:9,guid:5,ha:[1,3,8,9,11,12,14,15,16,17],had:[1,9,14],hand:[1,5,8,16],happen:[1,3,8,14,17],har:5,hat:4,have:[1,3,4,8,9,11,12,13,14,15,16,17],heavi:16,height:[8,11,16],help:[1,14],henc:[1,6,9,11,12,13,14,16],here:[1,8,13],hidden:[1,15],high:[1,4,6],highli:5,hint:1,hold:[13,15],hood:14,horizont:8,how:[1,5,8,9,10,11,13,15,17],howev:[1,5,8,9,12,13,14],http:[5,7],hundread:13,hybrid:[5,10],i:[1,3,5,8,9,12,13,14,15,16],i_1:6,i_n:6,ideal:5,ident:8,identif:5,idx:12,ijb:[9,13],ijk:9,im:9,imag:[8,11,16,17],image_s:[11,16,17],immers:5,implement:[1,5,11,17],improv:11,in_1:3,in_channel:[8,17],in_dim:[5,8,11],in_env:8,in_featur:8,in_n:3,in_region:8,in_which_axi:1,includ:[1,5,8,12],incorpor:5,inde:1,independ:[1,9],index:[1,12,14],indic:[1,6,8,9,12,13,14,15],infer:[1,8,9,12,14,16],inform:[1,5,8,9,12,13,14],ingredi:[1,12],inherit:[1,8,9,15],inic:16,init:13,init_method:[1,8,11,12,13,17],initi:[0,1,8,11,12,13,16,17],inlin:8,inline_input:8,inline_mat:8,inner:1,input:[1,3,8,9,11,12,13,14,15,16,17],input_edg:[1,15,16],input_nod:16,insid:[1,5,7],insight:13,instal:[2,11,12],instanc:[1,9,14,15,16],instanti:[1,3,8,12,14,15,16],instati:12,instead:[1,8,13,14,15,16,17],integ:4,integr:5,intend:[1,8],interior:8,intermedi:[1,13,15,16],intern:8,intric:5,introduc:8,introduct:5,invari:[1,8,14,15],inverse_memori:1,involv:[1,9,14],is_attached_to:1,is_avail:[11,16,17],is_batch:[1,12],is_connected_to:1,is_dangl:[1,12],is_data:[1,15],is_leaf:[1,15],is_node1:1,is_result:[1,15],is_virtu:[1,15],isinst:[1,13],isn:[11,12],isometri:8,issu:1,item:[11,17],iter:[1,8,14],its:[1,5,6,8,9,12,14,16,17],itself:[1,8,16],itselv:8,j:[1,4,5,9],jkb:[9,13],jl:9,jo:5,joserapa98:[5,7],just:[1,5,8,12,14,15,16,17],k:[5,9],keep:[1,3,8,9,14],kei:[1,5,12],kept:[1,3,8,9],kernel:8,kernel_s:[8,17],kerstjen:5,keyword:[1,8],kib:[9,13],kind:[1,11],klm:9,know:[1,12,13,14],known:16,kwarg:[1,8],l2_reg:[11,17],l:[4,9],label:[8,11,15,17],lambda:[11,17],larger:1,largest:1,last:[1,8,9,16,17],later:16,latter:[1,8],layer:[1,5,8,11,16,17],ldot:6,lead:[1,15],leaf:[1,9,15,16],leaf_nod:[1,15],learn:[1,5,9,11,12,13,14,15,16,17],learn_rat:[11,17],learnabl:13,least:[1,9,11,14,17],leav:[8,14],left1:13,left2:13,left:[1,5,8,9,12,13,14,15,16,17],left_bord:8,left_down_corn:8,left_nod:8,left_up_corn:8,leg:1,len:[9,16],length:[1,8],let:[11,12,13,14,16,17],level:[1,4,12],leverag:12,lfloor:4,li:[1,5,12],librari:[5,12,17],like:[0,1,5,8,11,12,13,14,15,16,17],limit:6,line:[5,8,17],linear:[5,16],link:1,list:[1,3,6,8,9,12,13,16],load:[11,16],load_state_dict:16,loader:[11,17],local:[4,8],locat:[1,8],log_norm:8,logarithm:8,logit:[11,17],longer:[1,14],loop:[11,16],lose:11,loss:17,loss_fun:[11,17],lot:[1,11],low:[1,4,6,8],lower:[1,3,6,8,9],lr:[11,17],lvert:4,m:[1,3,5,7,9],machin:[5,11],made:[1,9],mai:[1,3,5,8],main:[1,12,13,14,16],mainli:1,maintain:1,make:[1,12,13,14,15],make_tensor:[1,8],manag:[1,16],mandatori:[1,9],mani:[1,8,11,12,14,17],manipul:12,manual:[1,8,16],manual_se:[11,17],map:4,margin:8,marginalize_output:8,master:[5,7],mat:3,mat_to_mpo:0,match:[1,8,9],matric:[8,9,13,16],matrix:[1,3,4,5,8,9,11,12,14,16],mats_env:8,max:[11,17],max_bond:8,maximum:[4,8],maxpool2d:17,mayb:9,mb:[11,17],mean:[1,6,8],megabyt:[11,17],mehtod:12,member:1,memori:[1,5,10,11,12,15,16,17],mention:[8,16],method:[1,8,12,13,14,15,16],mi:8,middl:8,middle_sit:8,might:[1,8,14,15,16],mile:4,mimic:16,minuend:9,misc:5,miscellan:[11,17],mit:5,mnist:11,mod:4,mode:[1,8,9,11,15,16,17],model:[0,1,5,10,12,13,14,15],modif:1,modifi:[1,8,13],modul:[1,5,7,8,11,12,13,16,17],modulelist:17,monomi:4,monturiol:5,mooth:5,more:[1,3,5,8,9,12,13,14,15],most:[1,5,12,15],move:[1,8,12],move_nam:1,move_to_network:[1,9],movec:9,mp:[0,3,5,11,12,13,14,15,16,17],mpo:[0,3,16],mps_data:8,mps_layer:8,mpsdata:[0,3],mpslayer:[0,5,11,16],much:[1,14,15,16,17],mul:[0,13],multi:12,multipl:[8,12,14],multipli:[8,9],must:[1,3,9,12,16],mutual:8,my_model:5,my_nod:[1,14],my_paramnod:1,my_stack:1,mybatch:1,n:[1,4,5,6,8,11,17],n_:[1,4],n_batch:[3,8],n_col:8,n_epoch:16,n_featur:[5,8,11,16],n_param:[11,17],n_row:8,name:[1,5,6,9,11,12,13,14,16,17],name_:1,necessari:[1,8,9,11,12,16,17],need:[1,8,9,11,12,13,14,16],neighbour:[1,8,13],nelement:[11,17],net2:1,net:[1,5,9,12,13,14,15],network:[0,5,6,8,9,10,14,15,16],neural:[5,8,10,11],never:[1,9,15],nevertheless:5,new_edg:[1,9],new_edgea:1,new_edgeb:1,new_mp:16,new_nodea:[1,9],new_nodeb:[1,9],new_tensor:14,next:[1,8,9,12,13,14,15],nn:[1,5,8,11,12,13,16,17],no_grad:[11,17],node1:[1,5,9,12,13,14,15],node1_ax:[1,9],node1_list:1,node1_lists_dict:1,node2:[1,5,9,12,13,14,15],node2_ax:[1,9],node3:[13,14],node:[0,5,6,8,10,11,14,16,17],node_0:1,node_1:1,node_:[12,13,14,15],node_left:[1,9],node_n:1,node_ref:1,node_right:[1,9],nodea:[1,9],nodeb:[1,9],nodec:[1,9],nodes_list:9,nodes_nam:1,nodesa:9,nodesb:9,nodesc:9,non:[1,8,9,13,16],none:[1,3,5,6,8,9,13,16],norm:[1,8],normal:[1,6,8],notabl:5,notat:12,note:[1,5,9,12,13,16],noth:[1,12,14],now:[1,12,13,14,16,17],nu_batch:8,num:1,num_batch:[11,17],num_batch_edg:[1,15,16],num_epoch:[11,17],num_epochs_canon:11,num_test:[11,17],num_train:[11,17],number:[1,3,8,9,11,13,16,17],numel:1,nummber:1,o:5,obc:[3,8],object:[1,12,17],obtain:[8,11],oc:8,occur:[1,14],off:[11,14,17],offer:5,often:[1,14],onc:[1,5,9,14],one:[1,3,8,9,11,12,13,14,15,16,17],ones:[0,1,4,8,12,13,15,17],ones_lik:[11,17],onli:[1,5,8,9,12,13,14,15,16],open:8,oper:[0,1,8,12,15,16],operand:[1,12,13],opposit:8,opt_einsum:[5,9,13],optim:[1,5,17],option:[1,3,4,5,6,8,9,12,16],order:[1,3,8,9,12,13,14,15,16],orient:8,origin:[1,4,8,9,11,15,17],orthogon:8,ot:8,other:[1,8,9,12,13,14,15,16,17],other_left:12,other_nod:14,otherwis:[1,8,9,17],otim:4,our:[11,12,13,14,17],out:[1,8,9,16],out_1:3,out_channel:[8,17],out_dim:[5,8,11],out_env:8,out_featur:8,out_n:3,out_nod:8,out_posit:8,out_region:8,output:[1,3,4,8,9,11,16],output_nod:16,outsid:[5,7],over:[1,13],overcom:1,overhead:14,overload:1,overrid:[1,8,16],override_edg:1,override_nod:1,overriden:[1,13,16],own:[1,8,9,14,15],ownership:1,p:[1,5,11,17],packag:[5,7],pad:[8,17],pair:[1,8,17],pairwis:8,paper:[4,5,8,17],parallel:[1,8],param:[1,9,11,17],param_nod:[1,5,6,13,15],paramedg:1,paramet:[1,3,4,6,8,9,11,13,16,17],parameter:[1,8,13],parametr:[1,8,11,13,16,17],paramnod:[0,6,8,9,14,15,16],paramnode1:13,paramnode2:13,paramnode3:13,paramnodea:1,paramnodeb:1,paramstacknod:[0,9,14,15],pareja2023tensorkrowch:5,pareja:5,parent:[1,16],parenthesi:1,part:[1,8,13,15,16],partial:[8,17],partial_dens:8,particular:[1,16],pass:[8,11,16],patch:[8,16],pattern:17,pave:11,pbc:8,pep:[0,5,16],perform:[1,5,8,9,11,12,13,14,16,17],period:8,permut:[0,1,13,14],permute_:[0,1,13],phase:9,phi:4,phys_dim:8,physic:[3,8,12],pi:4,piec:[12,16],pip:[5,7,11,12],pipelin:[5,11],pixel:[8,11,16,17],place:[1,8,9,13,14,16],plai:15,pleas:5,plu:8,plug:8,point:[1,11],poli:[0,16],pool:17,posit:[8,16],possibl:[1,8,11,12,13,14],potenti:5,power:[4,11],poza:5,practic:[1,5],practition:11,precis:4,pred:[11,17],predict:[11,17],present:17,previou:[1,8,13,14,15,16,17],previous:13,primari:5,principl:[1,15],print:[1,8,9,11,17],probabl:11,problem:[1,14],process:[1,5,11],product:[5,8,9,11,12,14,16],profici:5,project:8,properli:16,properti:[1,8,9,12],proport:[1,3,8,9],prove:8,provid:[1,3,5,8,9,12],prune:17,pt:16,purpos:[1,12,14,15],put:[1,8,11,17],pytest:[5,7],python:[5,7,11],pytorch:[1,5,9,11,12,13,14,16,17],q:9,qr:[0,1,8,13],qr_:[0,1,8],quantiti:[1,3,8,9],quantum:12,qubit:8,quit:[5,17],r:[5,9],r_1:9,r_2:9,rais:1,ram:5,rand:[0,1,4,8],randint:4,randn:[0,1,4,5,8,9,12,13,14,15,16],randn_ey:[8,11,17],random:[8,9,13],random_ey:16,rang:[1,5,8,9,11,12,13,14,15,16,17],rangl:4,rank:[1,3,4,8,9,13],rapid:5,rather:[1,8,12,14,15],re:[1,9,11,17],reach:11,readi:16,realli:[1,15],reattach:1,reattach_edg:1,recal:[1,16],recogn:13,recommend:[1,5,8],reconnect:[1,13],recov:[1,3,8],reduc:[1,8,11,17],redund:[1,9],refer:[1,2,9,12,13,14,15,16],referenc:1,regard:[1,9,13],regio:8,relat:12,relev:[1,12],reli:5,relu:[5,17],remain:8,remov:[1,9],renorm:8,repeat:[1,9],repeatedli:14,replac:1,repositori:[5,7],repres:[8,12],reproduc:[1,14],requir:[1,8,9,15],requires_grad:1,res1:13,res2:13,reserv:[1,9,14],reset:[1,8,9,14,15,16],reset_tensor_address:1,reshap:[3,9,14],resiz:[11,17],respect:[1,3,8,9,13,14],rest:[1,13],restrict:[1,9,15],result2:9,result:[1,3,5,8,9,13,14,15,16],resultant_nod:[1,15],retriev:[1,12,14,15],reus:8,rez:5,rfloor:4,rid:1,right1:13,right2:13,right:[1,5,8,9,12,13,14,15,16,17],right_bord:8,right_down_corn:8,right_nod:8,right_up_corn:8,rightmost:8,ring:13,role:[1,8,15,16],row:8,rowch:5,rq:[0,1],rq_:[0,1,8],run:[5,7,8,11,17],running_acc:11,running_test_acc:[11,17],running_train_acc:[11,17],running_train_loss:[11,17],s:[1,4,5,6,8,9,11,12,13,14,15,16,17],s_1:4,s_i:[1,3,8,9],s_j:4,s_n:4,sai:[1,14],same:[1,8,9,12,13,14,17],sampler:[11,17],satisfi:[1,3,8,9],save:[1,5,10,13,16],scalar:8,scale:8,scenario:5,schwab:4,score:[11,17],second:[1,8,9,14],secondli:16,section:[12,13,15,17],see:[1,5,8,9,15,17],seen:15,select:[1,9,12,13,16],self:[1,8,16,17],send:[11,16,17],sens:[11,15],sento:16,separ:[8,9],sepcifi:1,sequenc:[1,3,6,8,9,13,16],sequenti:[5,16],serv:11,set:[1,8,9,14,15,16,17],set_data_nod:[1,8,15,16],set_param:[1,8],set_tensor:[1,8,14],set_tensor_from:[1,14,15,16],sever:[1,9],shall:[1,16],shape:[1,3,4,5,6,8,9,11,12,13,14,15,16],shape_all_nodes_layer_1:8,shape_all_nodes_layer_n:8,shape_node_1_layer_1:8,shape_node_1_layer_n:8,shape_node_i1_layer_1:8,shape_node_in_layer_n:8,share:[1,8,9,12,14,15],share_tensor:[1,8],should:[1,3,4,6,8,9,12,13,14,15,16],show:12,side:[1,8,9,17],similar:[1,8,9,12,13,15,16],simpl:[5,12,13],simpli:[1,12,14,16],simplifi:[1,5],simul:12,sin:4,sinc:[1,8,9,13,14,15,16,17],singl:[1,8,9,13,16],singular:[1,3,8,9,11,13,17],site:[8,12],sites_per_lay:8,situat:[1,15],size:[1,4,6,8,9,12,13,15,16,17],skip:1,skipp:14,slice:[1,9,14,15],slide:1,slower:[1,14],small:13,smaller:1,smooth:5,snake:[8,17],so:[1,8,9,14,16],some:[1,3,8,9,11,12,13,14,15,16],someth:12,sometim:1,sort:[1,8,12,14,15],sourc:[1,3,4,6,8,9],space:[1,6,11,16,17],special:[1,13,15],specif:[1,5,15],specifi:[1,3,8,9,12,13,15],split:[0,1,3,8,12,13],split_0:[1,9],split_1:[1,9],split_:[0,1,13],split_ip:[1,9],split_ip_0:[1,9],split_ip_1:[1,9],sqrt:4,squar:9,stack:[0,1,4,8,11,13,14,15,16],stack_0:1,stack_1:1,stack_data:[1,9,16],stack_data_memori:[1,15],stack_data_nod:13,stack_input:16,stack_nod:[1,9,13,14,15],stack_result:[13,16],stackabl:9,stacked_einsum:[0,13],stackedg:[0,9,13],stacknod:[0,9,13,15],stai:1,stand:4,standard:6,start:[1,8,12,14,16,17],state:[1,5,8,11,12,14,16],state_dict:16,staticmethod:17,std:[1,6,8,11,16,17],step:[1,5,10,17],stick:1,still:[1,8,9,13],store:[1,8,9,12,15,16],stoudenmir:4,str:[1,6,9],straightforward:5,strength:5,stride:[8,17],string:[1,8,9,15],structur:[1,5,8,12,16,17],sub:[0,13],subclass:[1,5,10,12,15,17],subsequ:[1,14],subsetrandomsampl:[11,17],substitut:1,subsystem:8,subtract:9,subtrahend:9,successor:[0,9],suffix:1,suitabl:5,sum:[1,3,8,9,11,13,17],sum_:[1,3,8,9],summat:13,support:5,sv:[1,9],svd:[0,1,3,8,11],svd_:[0,1,8,13],svdr:[0,1,8],svdr_:[0,1,8],t:[8,9,11,12,15,16],t_:[6,9],tailor:5,take:[1,8,11,14,15,16],taken:1,task:[1,8,15],temporari:[1,15],tensor:[0,3,4,5,6,8,10,15,16],tensor_address:[1,8,14,15],tensorkrowch:[1,3,4,6,7,8,9,10,13,15,16,17],tensornetwork:[1,5,6,9,10,13,15,17],termin:[5,7],test:[5,7,11,17],test_set:[11,17],textrm:8,th:8,than:[1,3,8,9,12,16],thank:12,thei:[1,5,6,7,8,9,12,13,15],them:[1,8,9,11,12,13,14,16,17],themselv:[8,9],therefor:[1,5,7,8,12,16],thi:[1,3,4,5,8,9,11,12,13,14,15,16,17],thing:[1,9,11,15,17],think:14,third:8,those:[1,14,15,16],though:[1,8,9,13,16],thought:1,three:[1,9],through:[1,5,8,9,11,16,17],thu:[1,3,5,8,9,12,16],time:[1,3,4,5,8,9,10,12,13,16],titl:5,tk:[1,4,5,8,9,11,12,13,14,15,16,17],tn:16,togeth:[1,5,7,14,15],tool:[5,12,13],top:[1,5,8,11,13,17],torch:[1,3,4,5,6,8,9,11,12,13,14,15,16,17],torchvis:[11,17],total:[1,3,8,9,11,17],total_num:[11,17],totensor:[11,17],tprod:[0,13],trace:[1,8,9,11,15,16,17],trace_sit:8,track:[1,14],train:[1,5,12,13,14,16,17],train_set:[11,17],trainabl:[1,8,12,15,16,17],transform:[4,8,11,13,17],transit:8,translation:[1,8,14,15],transpos:[11,16,17],treat:1,tree:[0,16],tri:[1,9],triangular:9,trick:[14,17],tupl:[1,6,8,9],turn:[1,8,14],tutori:[1,2,11,12,13,14,15,16,17],two:[1,8,9,12,13,14],two_0:9,type:[1,3,4,5,6,8,9,10,12,13,14],typeerror:1,u:[1,6,9],ump:0,umpo:0,umpslay:0,unbind:[0,1,13,14,16],unbind_0:[1,9],unbind_result:13,unbinded_nod:[13,14],unbound:[1,9],under:[5,14],underli:14,underscor:[1,9],understand:[5,12],undesir:[1,8,15],unfold:8,uniform:[1,6,8,14,15,16],uniform_memori:16,uniform_nod:[14,15],uninform:11,uniqu:[8,14],unit:[0,8],unitari:[8,9],univoc:8,unix:[5,7],unless:1,unset:1,unset_data_nod:[1,8],unset_tensor:1,unsqueez:17,until:[1,8,9,11],up:[1,8,9,12],up_bord:8,updat:[11,17],upep:0,upon:8,upper:[6,8,9],ur_1sr_2v:9,us:[1,3,4,5,6,8,9,11,12,13,14,15,16,17],usag:1,useless:11,user:[1,5],usual:[1,8,9,15,16],usv:9,util:[11,17],utre:0,v:[1,5,7,9],valid:1,valu:[1,3,4,8,9,11,13,16,17],valueerror:1,vanilla:[12,13,14],variabl:4,variant:[13,16],variat:1,variou:[5,8],vdot:4,vec:3,vec_to_mp:0,vector:[3,4,8,11,16,17],veri:[1,11,12,14,16],verifi:[1,9],versa:8,versatil:5,version:[1,8,9,13],vertic:[1,8],via:[1,3,8,9,12,13,14,15],vice:8,view:[11,16,17],virtual:[1,9,14,15,16],virtual_nod:[1,15],virtual_result:[1,15],virtual_result_stack:[1,9,15],virtual_uniform:[1,8,15,16],virtual_uniform_mp:1,visit:1,wa:[1,8,16,17],wai:[1,8,11,12,16],want:[1,8,12,13,14,16],we:[1,11,12,13,14,15,16,17],weight_decai:[11,17],well:[1,8,9],were:[1,8,13,15,16],what:[1,12,14,16],when:[1,8,9,11,12,13,14,15,16],whenev:[1,9],where:[1,4,6,8,9,11,12,13,14,16],whether:[1,6,8,12,14],which:[1,4,6,8,9,11,12,13,14,15,16],whilst:8,who:5,whole:[1,8,11,13,14,15,16],whose:[1,8,9,14,15],why:14,wide:[5,16],width:[8,11,16],wise:[1,9],wish:16,without:[1,6,8,9,11],won:[8,16],word:[1,12],work:[5,13,17],workflow:[1,16],worri:[1,14],would:[1,8,9,12,14,17],wouldn:15,wow:17,wrap:[1,12],written:[5,7],x:[4,5,8,11,16,17],x_1:4,x_j:4,x_n:4,y1:17,y2:17,y3:17,y4:17,y:17,yet:[12,16],you:[5,7,11,12,13,14,15,16],your:[5,7,11,12,16],your_nod:14,yourself:5,zero:[0,1,8,11,16,17],zero_grad:[11,17],zeros_lik:14},titles:["API Reference","Components","<no title>","Decompositions","Embeddings","TensorKrowch documentation","Initializers","Installation","Models","Operations","Tutorials","First Steps with TensorKrowch","Creating a Tensor Network in TensorKrowch","Contracting and Differentiating the Tensor Network","How to save Memory and Time with TensorKrowch (ADVANCED)","The different Types of Nodes (ADVANCED)","How to subclass TensorNetwork to build Custom Models","Creating a Hybrid Neural-Tensor Network Model"],titleterms:{"1":[11,12,13,14,15,16],"2":[11,12,13,14,15,16],"3":[11,12,13,14,16],"4":11,"5":11,"6":11,"7":11,"class":9,"function":11,"import":11,The:[15,16],abstractnod:1,add:9,add_on:4,advanc:[14,15],api:0,ar:14,axi:1,basi:4,between:13,build:[12,16],choos:11,cite:5,compon:[1,12,16],connect:9,connect_stack:9,content:2,contract:[9,13],contract_:9,contract_between:9,contract_between_:9,contract_edg:9,convmp:8,convmpslay:8,convpep:8,convtre:8,convump:8,convumpslay:8,convupep:8,convutre:8,copi:6,creat:[12,17],custom:16,data:11,decomposit:3,differ:15,differenti:13,disconnect:9,discret:4,distinguish:13,document:5,download:11,edg:[1,9],einsum:9,embed:4,empti:6,everyth:16,exampl:5,faster:14,first:[11,16],how:[12,14,16],hybrid:17,hyperparamet:11,initi:6,instal:[5,7],instanti:11,introduct:[11,12,13,14,15,16],librari:11,licens:5,like:9,loss:11,manag:14,mat_to_mpo:3,matrix:13,memori:14,mode:14,model:[8,11,16,17],mp:8,mpo:8,mpsdata:8,mpslayer:8,mul:9,name:15,network:[1,11,12,13,17],neural:17,node:[1,9,12,13,15],ones:6,oper:[9,13,14],optim:11,our:16,paramnod:[1,13],paramstacknod:1,pep:8,permut:9,permute_:9,poli:4,product:13,prune:11,put:16,qr:9,qr_:9,rand:6,randn:6,refer:0,requir:5,reserv:15,rq:9,rq_:9,run:14,save:14,set:11,setup:[11,12],skip:14,split:9,split_:9,stack:9,stacked_einsum:9,stackedg:1,stacknod:1,start:11,state:13,step:[11,12,13,14,15,16],store:14,sub:9,subclass:16,successor:1,svd:9,svd_:9,svdr:9,svdr_:9,tensor:[1,9,11,12,13,14,17],tensorkrowch:[5,11,12,14],tensornetwork:[12,14,16],time:14,togeth:16,tprod:9,train:11,tree:8,tutori:[5,10],type:15,ump:8,umpo:8,umpslay:8,unbind:9,unit:4,upep:8,utre:8,vec_to_mp:3,zero:6}}) \ No newline at end of file