{ "cells": [ { "cell_type": "markdown", "id": "c4b9f132-f919-4005-96b6-ae1264c8a1f0", "metadata": {}, "source": [ "(example-htn-to-2d)=\n", "\n", "# Converting a hyper TN for approximate contraction\n", "\n", "This example demonstrates how to convert a tensor network with hyper indices into A. a normal tensor network, with no assumptions about structure, and B. an actual [`TensorNetwork2D`](quimb.tensor.TensorNetwork2D) instance, that supports 2D specific manual approximate contraction schemes." ] }, { "cell_type": "code", "execution_count": 1, "id": "cc0fece4-0d50-4c4c-a203-a211748f2c74", "metadata": {}, "outputs": [], "source": [ "%config InlineBackend.figure_formats = ['svg']\n", "\n", "import quimb as qu\n", "import quimb.tensor as qtn" ] }, { "cell_type": "markdown", "id": "78cb2b6b-b67e-435f-a9c6-0079d70b06a9", "metadata": {}, "source": [ "First we'll setup a pairwise interacting hyper tensor network, similar to a nearest neighbor classical partition function defined on a square lattice. Here sites are represented by indices, and the tensors are all 2D matrices that link neighboring sites." ] }, { "cell_type": "code", "execution_count": 2, "id": "57152a10-437a-4520-b8d1-6e5e3bbca3a9", "metadata": {}, "outputs": [], "source": [ "Lx = 10\n", "Ly = 11\n", "qu.seed_rand(42)\n", "\n", "edges = qtn.edges_2d_square(Lx, Ly, cyclic=True)\n", "sites = sorted({coo for edge in edges for coo in edge})\n", "\n", "# we'll need some convention for naming tags\n", "site_tag_id = \"I{},{}\"\n", "site_ind_id = \"s{},{}\"\n", "\n", "htn = qtn.TensorNetwork()\n", "for cooa, coob in edges:\n", " htn |= qtn.rand_tensor(\n", " # assume local dimension of size 2\n", " shape=[2, 2],\n", " inds=[site_ind_id.format(*cooa), site_ind_id.format(*coob)],\n", " tags=[site_tag_id.format(*cooa), site_tag_id.format(*coob)],\n", " # for contractbility use positive uniform distribution\n", " dist=\"uniform\",\n", " )" ] }, { "cell_type": "markdown", "id": "6490b17a-2d00-44a6-9b9c-e075e84ce323", "metadata": {}, "source": [ "If we draw the HTN you can see the layout, where each index connects four tensors, and each of those tensors is tagged with the two sites it joins:" ] }, { "cell_type": "code", "execution_count": 3, "id": "7d9ef6df-cb48-4de6-b720-c3a83bc0ee11", "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "" ], "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "htn.draw(htn.tags, layout=\"neato\")" ] }, { "cell_type": "markdown", "id": "781f09ee-cfb1-40d7-833b-46f23ed92596", "metadata": {}, "source": [ "## Fully automatic to general TN:\n", "\n", "The following method works for arbitrary geometry, producing a standard [`TensorNetwork`](quimb.tensor.TensorNetwork), but with no guarantees on its structure, other than that there are no hyper indices.\n", "\n", "First we 'resolve' each hyper index into an actual tensor (or optionally tensor network), using the [`hyperinds_resolve`](quimb.tensor.TensorNetwork.hyperinds_resolve) method:" ] }, { "cell_type": "code", "execution_count": 4, "id": "0932cd8b-cc80-4362-937c-28fceaeceea4", "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "" ], "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "tn = htn.hyperinds_resolve()\n", "tn.draw(tn.tags, layout=\"neato\")" ] }, { "cell_type": "markdown", "id": "ceeb4419-597b-4ef8-9652-94fbe557c3af", "metadata": {}, "source": [ "```{note}\n", "There are many ways to resolve hyper indices, and especially if the hyper indices connect many tensors, the default choice of a single COPY tensor is not sensible. Another good choice is `hyperinds_resolve(\"tree\", \"clustering\")`. On the other hand, when a lattice structure is present, and compressed contraction is the goal, a choice that maintains this structure generally helps the approximate contraction finder.\n", "```\n", "\n", "We can then ['rank_simplify'](quimb.tensor.TensorNetwork.rank_simplify) this TN, that is, perform any trivial contractions that don't involve creating larger rank tensors, this gives us a more compact network:" ] }, { "cell_type": "code", "execution_count": 5, "id": "7441cd08-aeda-499f-98aa-933a6ee6a01b", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
TensorNetwork(tensors=110, indices=220)
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAAA, _37316dAAAAB, _37316dAAAAC, _37316dAAAAD], tags={}),backend=numpy, dtype=float64, data=array([[[[1., 0.],\n", " [0., 0.]],\n", "\n", " [[0., 0.],\n", " [0., 0.]]],\n", "\n", "\n", " [[[0., 0.],\n", " [0., 0.]],\n", "\n", " [[0., 0.],\n", " [0., 1.]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAHf, _37316dAAAHi, _37316dAAAIS, _37316dAAAIX], tags={I7,10, I8,10, I8,0, I8,9}),backend=numpy, dtype=float64, data=array([[[[0.01968906, 0.16727619],\n", " [0.01417084, 0.16492491]],\n", "\n", " [[0.19622399, 0.18743906],\n", " [0.14122859, 0.18480437]]],\n", "\n", "\n", " [[[0.01065057, 0.24721241],\n", " [0.00766555, 0.24373753]],\n", "\n", " [[0.10614505, 0.2770105 ],\n", " [0.07639594, 0.27311677]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAHb, _37316dAAAIO, _37316dAAAIS, _37316dAAAIT], tags={I7,9, I8,9, I8,8}),backend=numpy, dtype=float64, data=array([[[[0.26536815, 0. ],\n", " [0. , 0.35301803]],\n", "\n", " [[0.2210163 , 0. ],\n", " [0. , 0.37892683]]],\n", "\n", "\n", " [[[0.2411676 , 0. ],\n", " [0. , 0.25861065]],\n", "\n", " [[0.20086046, 0. ],\n", " [0. , 0.27759067]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAHX, _37316dAAAIK, _37316dAAAIO, _37316dAAAIP], tags={I7,8, I8,8, I8,7}),backend=numpy, dtype=float64, data=array([[[[0.55065411, 0. ],\n", " [0. , 0.57598331]],\n", "\n", " [[0.3768877 , 0. ],\n", " [0. , 0.84605001]]],\n", "\n", "\n", " [[[0.20391932, 0. ],\n", " [0. , 0.66129169]],\n", "\n", " [[0.1395698 , 0. ],\n", " [0. , 0.97135772]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAHT, _37316dAAAIG, _37316dAAAIK, _37316dAAAIL], tags={I7,7, I8,7, I8,6}),backend=numpy, dtype=float64, data=array([[[[0.14682567, 0. ],\n", " [0. , 0.45358259]],\n", "\n", " [[0.09629392, 0. ],\n", " [0. , 0.42758297]]],\n", "\n", "\n", " [[[0.17637696, 0. ],\n", " [0. , 0.42925506]],\n", "\n", " [[0.11567479, 0. ],\n", " [0. , 0.40464992]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAHP, _37316dAAAIC, _37316dAAAIG, _37316dAAAIH], tags={I7,6, I8,6, I8,5}),backend=numpy, dtype=float64, data=array([[[[0.28081353, 0. ],\n", " [0. , 0.19047351]],\n", "\n", " [[0.25097737, 0. ],\n", " [0. , 0.12007771]]],\n", "\n", "\n", " [[[0.33623491, 0. ],\n", " [0. , 0.41691681]],\n", "\n", " [[0.30051028, 0. ],\n", " [0. , 0.26283137]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAHL, _37316dAAAHy, _37316dAAAIC, _37316dAAAID], tags={I7,5, I8,5, I8,4}),backend=numpy, dtype=float64, data=array([[[[0.34125126, 0. ],\n", " [0. , 0.23432309]],\n", "\n", " [[0.11314396, 0. ],\n", " [0. , 0.39261678]]],\n", "\n", "\n", " [[[0.58975718, 0. ],\n", " [0. , 0.02435448]],\n", "\n", " [[0.19553762, 0. ],\n", " [0. , 0.04080681]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAHH, _37316dAAAHu, _37316dAAAHy, _37316dAAAHz], tags={I7,4, I8,4, I8,3}),backend=numpy, dtype=float64, data=array([[[[0.78516181, 0. ],\n", " [0. , 0.40049746]],\n", "\n", " [[0.43852377, 0. ],\n", " [0. , 0.23088466]]],\n", "\n", "\n", " [[[0.20527988, 0. ],\n", " [0. , 0.4136553 ]],\n", "\n", " [[0.11465166, 0. ],\n", " [0. , 0.23847009]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAHD, _37316dAAAHq, _37316dAAAHu, _37316dAAAHv], tags={I7,3, I8,3, I8,2}),backend=numpy, dtype=float64, data=array([[[[0.71356791, 0. ],\n", " [0. , 0.01894532]],\n", "\n", " [[0.08548934, 0. ],\n", " [0. , 0.07118638]]],\n", "\n", "\n", " [[[0.37799549, 0. ],\n", " [0. , 0.07549824]],\n", "\n", " [[0.04528593, 0. ],\n", " [0. , 0.28368197]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAGz, _37316dAAAHm, _37316dAAAHq, _37316dAAAHr], tags={I7,2, I8,2, I8,1}),backend=numpy, dtype=float64, data=array([[[[0.00574731, 0. ],\n", " [0. , 0.65470103]],\n", "\n", " [[0.11656246, 0. ],\n", " [0. , 0.34319103]]],\n", "\n", "\n", " [[[0.01685468, 0. ],\n", " [0. , 0.53218604]],\n", "\n", " [[0.34183375, 0. ],\n", " [0. , 0.27896928]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAGv, _37316dAAAHh, _37316dAAAHm, _37316dAAAHn], tags={I7,1, I8,1, I8,0}),backend=numpy, dtype=float64, data=array([[[[0.17191281, 0. ],\n", " [0. , 0.27234324]],\n", "\n", " [[0.08844251, 0. ],\n", " [0. , 0.03833531]]],\n", "\n", "\n", " [[[0.17167276, 0. ],\n", " [0. , 0.4842305 ]],\n", "\n", " [[0.08831901, 0. ],\n", " [0. , 0.06816077]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAGr, _37316dAAAHh, _37316dAAAHi, _37316dAAAHj], tags={I7,0, I8,0}),backend=numpy, dtype=float64, data=array([[[[0.68958947, 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.58617687]]],\n", "\n", "\n", " [[[0.86465505, 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.68436724]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAGn, _37316dAAAGq, _37316dAAAHa, _37316dAAAHf], tags={I6,10, I7,10, I7,0, I7,9}),backend=numpy, dtype=float64, data=array([[[[0.24183713, 0.0116064 ],\n", " [0.12402443, 0.03934484]],\n", "\n", " [[0.12061582, 0.03625626],\n", " [0.06185695, 0.12290604]]],\n", "\n", "\n", " [[[0.17216508, 0.01206627],\n", " [0.08829362, 0.04090376]],\n", "\n", " [[0.08586702, 0.03769281],\n", " [0.04403628, 0.12777582]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAGj, _37316dAAAHW, _37316dAAAHa, _37316dAAAHb], tags={I6,9, I7,9, I7,8}),backend=numpy, dtype=float64, data=array([[[[0.52664404, 0. ],\n", " [0. , 0.03029739]],\n", "\n", " [[0.10941918, 0. ],\n", " [0. , 0.20854388]]],\n", "\n", "\n", " [[[0.05830505, 0. ],\n", " [0. , 0.0641957 ]],\n", "\n", " [[0.01211386, 0. ],\n", " [0. , 0.44187378]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAGf, _37316dAAAHS, _37316dAAAHW, _37316dAAAHX], tags={I6,8, I7,8, I7,7}),backend=numpy, dtype=float64, data=array([[[[0.03099676, 0. ],\n", " [0. , 0.03044964]],\n", "\n", " [[0.16399324, 0. ],\n", " [0. , 0.07158476]]],\n", "\n", "\n", " [[[0.09990355, 0. ],\n", " [0. , 0.26246253]],\n", "\n", " [[0.5285554 , 0. ],\n", " [0. , 0.6170291 ]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAGb, _37316dAAAHO, _37316dAAAHS, _37316dAAAHT], tags={I6,7, I7,7, I7,6}),backend=numpy, dtype=float64, data=array([[[[0.02795534, 0. ],\n", " [0. , 0.10559532]],\n", "\n", " [[0.1638309 , 0. ],\n", " [0. , 0.21906133]]],\n", "\n", "\n", " [[[0.07807534, 0. ],\n", " [0. , 0.08527429]],\n", "\n", " [[0.4575568 , 0. ],\n", " [0. , 0.1769046 ]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAGX, _37316dAAAHK, _37316dAAAHO, _37316dAAAHP], tags={I6,6, I7,6, I7,5}),backend=numpy, dtype=float64, data=array([[[[0.71946394, 0. ],\n", " [0. , 0.01856209]],\n", "\n", " [[0.34653052, 0. ],\n", " [0. , 0.23964822]]],\n", "\n", "\n", " [[[0.53030002, 0. ],\n", " [0. , 0.04783304]],\n", "\n", " [[0.25541953, 0. ],\n", " [0. , 0.61755464]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAGT, _37316dAAAHG, _37316dAAAHK, _37316dAAAHL], tags={I6,5, I7,5, I7,4}),backend=numpy, dtype=float64, data=array([[[[0.17132095, 0. ],\n", " [0. , 0.60644787]],\n", "\n", " [[0.11018716, 0. ],\n", " [0. , 0.64136459]]],\n", "\n", "\n", " [[[0.39314936, 0. ],\n", " [0. , 0.33180147]],\n", "\n", " [[0.2528588 , 0. ],\n", " [0. , 0.3509052 ]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAGP, _37316dAAAHC, _37316dAAAHG, _37316dAAAHH], tags={I6,4, I7,4, I7,3}),backend=numpy, dtype=float64, data=array([[[[0.24620323, 0. ],\n", " [0. , 0.0479586 ]],\n", "\n", " [[0.61157316, 0. ],\n", " [0. , 0.10791037]]],\n", "\n", "\n", " [[[0.17341925, 0. ],\n", " [0. , 0.16066881]],\n", "\n", " [[0.43077649, 0. ],\n", " [0. , 0.36151661]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAGL, _37316dAAAGy, _37316dAAAHC, _37316dAAAHD], tags={I6,3, I7,3, I7,2}),backend=numpy, dtype=float64, data=array([[[[0.72330684, 0. ],\n", " [0. , 0.03387727]],\n", "\n", " [[0.66285945, 0. ],\n", " [0. , 0.07468555]]],\n", "\n", "\n", " [[[0.68958418, 0. ],\n", " [0. , 0.07983275]],\n", "\n", " [[0.63195502, 0. ],\n", " [0. , 0.17599862]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAGH, _37316dAAAGu, _37316dAAAGy, _37316dAAAGz], tags={I6,2, I7,2, I7,1}),backend=numpy, dtype=float64, data=array([[[[0.25647498, 0. ],\n", " [0. , 0.04468245]],\n", "\n", " [[0.33461375, 0. ],\n", " [0. , 0.01390354]]],\n", "\n", "\n", " [[[0.22715019, 0. ],\n", " [0. , 0.27774194]],\n", "\n", " [[0.29635474, 0. ],\n", " [0. , 0.08642314]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAGD, _37316dAAAGp, _37316dAAAGu, _37316dAAAGv], tags={I6,1, I7,1, I7,0}),backend=numpy, dtype=float64, data=array([[[[0.23430003, 0. ],\n", " [0. , 0.03069845]],\n", "\n", " [[0.303242 , 0. ],\n", " [0. , 0.12129391]]],\n", "\n", "\n", " [[[0.44422775, 0. ],\n", " [0. , 0.0875716 ]],\n", "\n", " [[0.57494022, 0. ],\n", " [0. , 0.34600776]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAFz, _37316dAAAGp, _37316dAAAGq, _37316dAAAGr], tags={I6,0, I7,0}),backend=numpy, dtype=float64, data=array([[[[0.12360669, 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.226417 ]]],\n", "\n", "\n", " [[[0.81500797, 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.19715346]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAFv, _37316dAAAFy, _37316dAAAGi, _37316dAAAGn], tags={I5,10, I6,10, I6,0, I6,9}),backend=numpy, dtype=float64, data=array([[[[0.29849937, 0.04800776],\n", " [0.47472187, 0.06460346]],\n", "\n", " [[0.20524448, 0.00868738],\n", " [0.3264129 , 0.0116905 ]]],\n", "\n", "\n", " [[[0.18317428, 0.19439693],\n", " [0.29131331, 0.2615976 ]],\n", "\n", " [[0.12594838, 0.03517765],\n", " [0.20030344, 0.04733814]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAFr, _37316dAAAGe, _37316dAAAGi, _37316dAAAGj], tags={I5,9, I6,9, I6,8}),backend=numpy, dtype=float64, data=array([[[[0.72930843, 0. ],\n", " [0. , 0.05438355]],\n", "\n", " [[0.43484998, 0. ],\n", " [0. , 0.09300723]]],\n", "\n", "\n", " [[[0.35658549, 0. ],\n", " [0. , 0.25813133]],\n", "\n", " [[0.21261401, 0. ],\n", " [0. , 0.44145846]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAFn, _37316dAAAGa, _37316dAAAGe, _37316dAAAGf], tags={I5,8, I6,8, I6,7}),backend=numpy, dtype=float64, data=array([[[[1.65094886e-01, 0.00000000e+00],\n", " [0.00000000e+00, 5.47184256e-04]],\n", "\n", " [[2.25748535e-01, 0.00000000e+00],\n", " [0.00000000e+00, 4.36443509e-02]]],\n", "\n", "\n", " [[[2.24479985e-01, 0.00000000e+00],\n", " [0.00000000e+00, 7.66440673e-03]],\n", "\n", " [[3.06950923e-01, 0.00000000e+00],\n", " [0.00000000e+00, 6.11326172e-01]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAFj, _37316dAAAGW, _37316dAAAGa, _37316dAAAGb], tags={I5,7, I6,7, I6,6}),backend=numpy, dtype=float64, data=array([[[[0.49847452, 0. ],\n", " [0. , 0.25653057]],\n", "\n", " [[0.56046661, 0. ],\n", " [0. , 0.32707117]]],\n", "\n", "\n", " [[[0.26593368, 0. ],\n", " [0. , 0.05901136]],\n", "\n", " [[0.29900615, 0. ],\n", " [0. , 0.07523827]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAFf, _37316dAAAGS, _37316dAAAGW, _37316dAAAGX], tags={I5,6, I6,6, I6,5}),backend=numpy, dtype=float64, data=array([[[[0.55035626, 0. ],\n", " [0. , 0.08935641]],\n", "\n", " [[0.51610541, 0. ],\n", " [0. , 0.22585123]]],\n", "\n", "\n", " [[[0.33858474, 0. ],\n", " [0. , 0.08994194]],\n", "\n", " [[0.31751327, 0. ],\n", " [0. , 0.22733117]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAFb, _37316dAAAGO, _37316dAAAGS, _37316dAAAGT], tags={I5,5, I6,5, I6,4}),backend=numpy, dtype=float64, data=array([[[[0.37385197, 0. ],\n", " [0. , 0.09713352]],\n", "\n", " [[0.06941306, 0. ],\n", " [0. , 0.12493573]]],\n", "\n", "\n", " [[[0.45546521, 0. ],\n", " [0. , 0.72067705]],\n", "\n", " [[0.08456618, 0. ],\n", " [0. , 0.92695406]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAFX, _37316dAAAGK, _37316dAAAGO, _37316dAAAGP], tags={I5,4, I6,4, I6,3}),backend=numpy, dtype=float64, data=array([[[[0.36570512, 0. ],\n", " [0. , 0.0046134 ]],\n", "\n", " [[0.38677087, 0. ],\n", " [0. , 0.1923458 ]]],\n", "\n", "\n", " [[[0.42479383, 0. ],\n", " [0. , 0.00736817]],\n", "\n", " [[0.44926327, 0. ],\n", " [0. , 0.30719963]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAFT, _37316dAAAGG, _37316dAAAGK, _37316dAAAGL], tags={I5,3, I6,3, I6,2}),backend=numpy, dtype=float64, data=array([[[[0.13816674, 0. ],\n", " [0. , 0.01417059]],\n", "\n", " [[0.17090383, 0. ],\n", " [0. , 0.11962981]]],\n", "\n", "\n", " [[[0.37018252, 0. ],\n", " [0. , 0.01828364]],\n", "\n", " [[0.45789318, 0. ],\n", " [0. , 0.15435262]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAFP, _37316dAAAGC, _37316dAAAGG, _37316dAAAGH], tags={I5,2, I6,2, I6,1}),backend=numpy, dtype=float64, data=array([[[[0.10264372, 0. ],\n", " [0. , 0.0602687 ]],\n", "\n", " [[0.00230986, 0. ],\n", " [0. , 0.89336007]]],\n", "\n", "\n", " [[[0.08434693, 0. ],\n", " [0. , 0.0146159 ]],\n", "\n", " [[0.00189811, 0. ],\n", " [0. , 0.21665078]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAFL, _37316dAAAFx, _37316dAAAGC, _37316dAAAGD], tags={I5,1, I6,1, I6,0}),backend=numpy, dtype=float64, data=array([[[[0.24888342, 0. ],\n", " [0. , 0.01432119]],\n", "\n", " [[0.11602825, 0. ],\n", " [0. , 0.02571209]]],\n", "\n", "\n", " [[[0.31028946, 0. ],\n", " [0. , 0.07945127]],\n", "\n", " [[0.14465545, 0. ],\n", " [0. , 0.14264584]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAFH, _37316dAAAFx, _37316dAAAFy, _37316dAAAFz], tags={I5,0, I6,0}),backend=numpy, dtype=float64, data=array([[[[0.53538185, 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.79579357]]],\n", "\n", "\n", " [[[0.05858071, 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.43429323]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAFD, _37316dAAAFG, _37316dAAAFq, _37316dAAAFv], tags={I4,10, I5,10, I5,0, I5,9}),backend=numpy, dtype=float64, data=array([[[[0.03704254, 0.04807433],\n", " [0.00327266, 0.00559244]],\n", "\n", " [[0.06413039, 0.04460987],\n", " [0.00566583, 0.00518942]]],\n", "\n", "\n", " [[[0.03635689, 0.32821905],\n", " [0.00321208, 0.03818138]],\n", "\n", " [[0.06294334, 0.30456607],\n", " [0.00556096, 0.03542986]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAEz, _37316dAAAFm, _37316dAAAFq, _37316dAAAFr], tags={I4,9, I5,9, I5,8}),backend=numpy, dtype=float64, data=array([[[[0.45787027, 0. ],\n", " [0. , 0.32703235]],\n", "\n", " [[0.4816507 , 0. ],\n", " [0. , 0.3044519 ]]],\n", "\n", "\n", " [[[0.71553645, 0. ],\n", " [0. , 0.37375764]],\n", "\n", " [[0.7526993 , 0. ],\n", " [0. , 0.34795097]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAEv, _37316dAAAFi, _37316dAAAFm, _37316dAAAFn], tags={I4,8, I5,8, I5,7}),backend=numpy, dtype=float64, data=array([[[[0.16323221, 0. ],\n", " [0. , 0.1174236 ]],\n", "\n", " [[0.15038912, 0. ],\n", " [0. , 0.47466338]]],\n", "\n", "\n", " [[[0.28290785, 0. ],\n", " [0. , 0.00216719]],\n", "\n", " [[0.26064869, 0. ],\n", " [0. , 0.00876048]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAEr, _37316dAAAFe, _37316dAAAFi, _37316dAAAFj], tags={I4,7, I5,7, I5,6}),backend=numpy, dtype=float64, data=array([[[[0.34759203, 0. ],\n", " [0. , 0.00485486]],\n", "\n", " [[0.12506385, 0. ],\n", " [0. , 0.00436493]]],\n", "\n", "\n", " [[[0.34700909, 0. ],\n", " [0. , 0.6354464 ]],\n", "\n", " [[0.1248541 , 0. ],\n", " [0. , 0.57132075]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAEn, _37316dAAAFa, _37316dAAAFe, _37316dAAAFf], tags={I4,6, I5,6, I5,5}),backend=numpy, dtype=float64, data=array([[[[0.19589175, 0. ],\n", " [0. , 0.28200918]],\n", "\n", " [[0.04311255, 0. ],\n", " [0. , 0.18853595]]],\n", "\n", "\n", " [[[0.54863139, 0. ],\n", " [0. , 0.7451087 ]],\n", "\n", " [[0.12074473, 0. ],\n", " [0. , 0.49813903]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAEj, _37316dAAAFW, _37316dAAAFa, _37316dAAAFb], tags={I4,5, I5,5, I5,4}),backend=numpy, dtype=float64, data=array([[[[0.32674397, 0. ],\n", " [0. , 0.15078731]],\n", "\n", " [[0.37104828, 0. ],\n", " [0. , 0.05073517]]],\n", "\n", "\n", " [[[0.73623251, 0. ],\n", " [0. , 0.15607704]],\n", "\n", " [[0.83606075, 0. ],\n", " [0. , 0.052515 ]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAEf, _37316dAAAFS, _37316dAAAFW, _37316dAAAFX], tags={I4,4, I5,4, I5,3}),backend=numpy, dtype=float64, data=array([[[[0.34076976, 0. ],\n", " [0. , 0.45534 ]],\n", "\n", " [[0.49127367, 0. ],\n", " [0. , 0.35971314]]],\n", "\n", "\n", " [[[0.4913981 , 0. ],\n", " [0. , 0.35189262]],\n", "\n", " [[0.70842833, 0. ],\n", " [0. , 0.27799095]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAEb, _37316dAAAFO, _37316dAAAFS, _37316dAAAFT], tags={I4,3, I5,3, I5,2}),backend=numpy, dtype=float64, data=array([[[[0.11928609, 0. ],\n", " [0. , 0.16069384]],\n", "\n", " [[0.04197682, 0. ],\n", " [0. , 0.09977424]]],\n", "\n", "\n", " [[[0.4001926 , 0. ],\n", " [0. , 0.32462865]],\n", "\n", " [[0.14082794, 0. ],\n", " [0. , 0.20156079]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAEX, _37316dAAAFK, _37316dAAAFO, _37316dAAAFP], tags={I4,2, I5,2, I5,1}),backend=numpy, dtype=float64, data=array([[[[0.54024641, 0. ],\n", " [0. , 0.18652377]],\n", "\n", " [[0.21517034, 0. ],\n", " [0. , 0.13833783]]],\n", "\n", "\n", " [[[0.38555619, 0. ],\n", " [0. , 0.26786933]],\n", "\n", " [[0.15356003, 0. ],\n", " [0. , 0.19866885]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAET, _37316dAAAFF, _37316dAAAFK, _37316dAAAFL], tags={I4,1, I5,1, I5,0}),backend=numpy, dtype=float64, data=array([[[[0.22694822, 0. ],\n", " [0. , 0.22105937]],\n", "\n", " [[0.35088724, 0. ],\n", " [0. , 0.31997477]]],\n", "\n", "\n", " [[[0.39212912, 0. ],\n", " [0. , 0.32130613]],\n", "\n", " [[0.60627533, 0. ],\n", " [0. , 0.46507802]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAEP, _37316dAAAFF, _37316dAAAFG, _37316dAAAFH], tags={I4,0, I5,0}),backend=numpy, dtype=float64, data=array([[[[0.02842265, 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.6625001 ]]],\n", "\n", "\n", " [[[0.39593194, 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.41625417]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAEL, _37316dAAAEO, _37316dAAAEy, _37316dAAAFD], tags={I3,10, I4,10, I4,0, I4,9}),backend=numpy, dtype=float64, data=array([[[[0.00241314, 0.13645125],\n", " [0.09781036, 0.07371886]],\n", "\n", " [[0.00413726, 0.05294092],\n", " [0.16769334, 0.02860175]]],\n", "\n", "\n", " [[[0.00160792, 0.34923446],\n", " [0.0651729 , 0.18867667]],\n", "\n", " [[0.00275674, 0.13549743],\n", " [0.11173727, 0.07320355]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAEH, _37316dAAAEu, _37316dAAAEy, _37316dAAAEz], tags={I3,9, I4,9, I4,8}),backend=numpy, dtype=float64, data=array([[[[0.11592249, 0. ],\n", " [0. , 0.05596665]],\n", "\n", " [[0.05430324, 0. ],\n", " [0. , 0.1757446 ]]],\n", "\n", "\n", " [[[0.08843934, 0. ],\n", " [0. , 0.14958775]],\n", "\n", " [[0.04142891, 0. ],\n", " [0. , 0.46973046]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAED, _37316dAAAEq, _37316dAAAEu, _37316dAAAEv], tags={I3,8, I4,8, I4,7}),backend=numpy, dtype=float64, data=array([[[[0.35048787, 0. ],\n", " [0. , 0.15770445]],\n", "\n", " [[0.35264511, 0. ],\n", " [0. , 0.02523343]]],\n", "\n", "\n", " [[[0.02699552, 0. ],\n", " [0. , 0.09924406]],\n", "\n", " [[0.02716168, 0. ],\n", " [0. , 0.0158795 ]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAADz, _37316dAAAEm, _37316dAAAEq, _37316dAAAEr], tags={I3,7, I4,7, I4,6}),backend=numpy, dtype=float64, data=array([[[[0.00058265, 0. ],\n", " [0. , 0.07877969]],\n", "\n", " [[0.02566338, 0. ],\n", " [0. , 0.00635111]]],\n", "\n", "\n", " [[[0.01000305, 0. ],\n", " [0. , 0.04365211]],\n", "\n", " [[0.44059325, 0. ],\n", " [0. , 0.00351917]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAADv, _37316dAAAEi, _37316dAAAEm, _37316dAAAEn], tags={I3,6, I4,6, I4,5}),backend=numpy, dtype=float64, data=array([[[[0.0057597 , 0. ],\n", " [0. , 0.2026922 ]],\n", "\n", " [[0.00606797, 0. ],\n", " [0. , 0.43347381]]],\n", "\n", "\n", " [[[0.09880333, 0. ],\n", " [0. , 0.02986218]],\n", "\n", " [[0.10409138, 0. ],\n", " [0. , 0.06386271]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAADr, _37316dAAAEe, _37316dAAAEi, _37316dAAAEj], tags={I3,5, I4,5, I4,4}),backend=numpy, dtype=float64, data=array([[[[0.82920628, 0. ],\n", " [0. , 0.09715009]],\n", "\n", " [[0.06341125, 0. ],\n", " [0. , 0.32262083]]],\n", "\n", "\n", " [[[0.64184805, 0. ],\n", " [0. , 0.06574332]],\n", "\n", " [[0.04908355, 0. ],\n", " [0. , 0.21832367]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAADn, _37316dAAAEa, _37316dAAAEe, _37316dAAAEf], tags={I3,4, I4,4, I4,3}),backend=numpy, dtype=float64, data=array([[[[0.03979482, 0. ],\n", " [0. , 0.29491981]],\n", "\n", " [[0.04848149, 0. ],\n", " [0. , 0.21213374]]],\n", "\n", "\n", " [[[0.58663895, 0. ],\n", " [0. , 0.74981312]],\n", "\n", " [[0.71469421, 0. ],\n", " [0. , 0.53933529]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAADj, _37316dAAAEW, _37316dAAAEa, _37316dAAAEb], tags={I3,3, I4,3, I4,2}),backend=numpy, dtype=float64, data=array([[[[0.06718564, 0. ],\n", " [0. , 0.24394629]],\n", "\n", " [[0.00887929, 0. ],\n", " [0. , 0.28650723]]],\n", "\n", "\n", " [[[0.21411055, 0. ],\n", " [0. , 0.38802084]],\n", "\n", " [[0.02829698, 0. ],\n", " [0. , 0.45571826]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAADf, _37316dAAAES, _37316dAAAEW, _37316dAAAEX], tags={I3,2, I4,2, I4,1}),backend=numpy, dtype=float64, data=array([[[[0.6115557 , 0. ],\n", " [0. , 0.01783725]],\n", "\n", " [[0.07517378, 0. ],\n", " [0. , 0.08005207]]],\n", "\n", "\n", " [[[0.17987384, 0. ],\n", " [0. , 0.12082297]],\n", "\n", " [[0.02211049, 0. ],\n", " [0. , 0.54224315]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAADb, _37316dAAAEN, _37316dAAAES, _37316dAAAET], tags={I3,1, I4,1, I4,0}),backend=numpy, dtype=float64, data=array([[[[0.12930678, 0. ],\n", " [0. , 0.04552327]],\n", "\n", " [[0.21844291, 0. ],\n", " [0. , 0.42699905]]],\n", "\n", "\n", " [[[0.12101118, 0. ],\n", " [0. , 0.00855001]],\n", "\n", " [[0.20442884, 0. ],\n", " [0. , 0.08019737]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAADX, _37316dAAAEN, _37316dAAAEO, _37316dAAAEP], tags={I3,0, I4,0}),backend=numpy, dtype=float64, data=array([[[[0.33078157, 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.12673324]]],\n", "\n", "\n", " [[[0.35060575, 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.3745653 ]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAADT, _37316dAAADW, _37316dAAAEG, _37316dAAAEL], tags={I2,10, I3,10, I3,0, I3,9}),backend=numpy, dtype=float64, data=array([[[[0.02496291, 0.35422035],\n", " [0.26478008, 0.2046741 ]],\n", "\n", " [[0.01866919, 0.22314817],\n", " [0.19802302, 0.12893852]]],\n", "\n", "\n", " [[[0.02848814, 0.31095835],\n", " [0.30217202, 0.17967663]],\n", "\n", " [[0.02130564, 0.19589441],\n", " [0.22598761, 0.11319087]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAADP, _37316dAAAEC, _37316dAAAEG, _37316dAAAEH], tags={I2,9, I3,9, I3,8}),backend=numpy, dtype=float64, data=array([[[[0.04731539, 0. ],\n", " [0. , 0.43078503]],\n", "\n", " [[0.02358699, 0. ],\n", " [0. , 0.40852314]]],\n", "\n", "\n", " [[[0.80146272, 0. ],\n", " [0. , 0.6146165 ]],\n", "\n", " [[0.39953368, 0. ],\n", " [0. , 0.58285467]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAADL, _37316dAAADy, _37316dAAAEC, _37316dAAAED], tags={I2,8, I3,8, I3,7}),backend=numpy, dtype=float64, data=array([[[[0.23306772, 0. ],\n", " [0. , 0.03038818]],\n", "\n", " [[0.33928484, 0. ],\n", " [0. , 0.03765741]]],\n", "\n", "\n", " [[[0.06024266, 0. ],\n", " [0. , 0.18395781]],\n", "\n", " [[0.08769735, 0. ],\n", " [0. , 0.22796286]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAADH, _37316dAAADu, _37316dAAADy, _37316dAAADz], tags={I2,7, I3,7, I3,6}),backend=numpy, dtype=float64, data=array([[[[0.65990829, 0. ],\n", " [0. , 0.25105343]],\n", "\n", " [[0.64967303, 0. ],\n", " [0. , 0.21721365]]],\n", "\n", "\n", " [[[0.03699147, 0. ],\n", " [0. , 0.14586692]],\n", "\n", " [[0.03641773, 0. ],\n", " [0. , 0.12620535]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAADD, _37316dAAADq, _37316dAAADu, _37316dAAADv], tags={I2,6, I3,6, I3,5}),backend=numpy, dtype=float64, data=array([[[[0.21647108, 0. ],\n", " [0. , 0.37782011]],\n", "\n", " [[0.02309821, 0. ],\n", " [0. , 0.26336123]]],\n", "\n", "\n", " [[[0.08984861, 0. ],\n", " [0. , 0.10679084]],\n", "\n", " [[0.00958716, 0. ],\n", " [0. , 0.07443905]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAACz, _37316dAAADm, _37316dAAADq, _37316dAAADr], tags={I2,5, I3,5, I3,4}),backend=numpy, dtype=float64, data=array([[[[0.10400068, 0. ],\n", " [0. , 0.85499264]],\n", "\n", " [[0.0732575 , 0. ],\n", " [0. , 0.31384392]]],\n", "\n", "\n", " [[[0.13440631, 0. ],\n", " [0. , 0.17848867]],\n", "\n", " [[0.09467505, 0. ],\n", " [0. , 0.06551821]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAACv, _37316dAAADi, _37316dAAADm, _37316dAAADn], tags={I2,4, I3,4, I3,3}),backend=numpy, dtype=float64, data=array([[[[0.26158581, 0. ],\n", " [0. , 0.04349857]],\n", "\n", " [[0.13017446, 0. ],\n", " [0. , 0.19616064]]],\n", "\n", "\n", " [[[0.2813531 , 0. ],\n", " [0. , 0.02121143]],\n", "\n", " [[0.14001137, 0. ],\n", " [0. , 0.0956548 ]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAACr, _37316dAAADe, _37316dAAADi, _37316dAAADj], tags={I2,3, I3,3, I3,2}),backend=numpy, dtype=float64, data=array([[[[0.41171223, 0. ],\n", " [0. , 0.01783015]],\n", "\n", " [[0.05081785, 0. ],\n", " [0. , 0.03472296]]],\n", "\n", "\n", " [[[0.21392341, 0. ],\n", " [0. , 0.23345127]],\n", "\n", " [[0.02640468, 0. ],\n", " [0. , 0.45462991]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAACn, _37316dAAADa, _37316dAAADe, _37316dAAADf], tags={I2,2, I3,2, I3,1}),backend=numpy, dtype=float64, data=array([[[[0.20132182, 0. ],\n", " [0. , 0.11164972]],\n", "\n", " [[0.90473446, 0. ],\n", " [0. , 0.03934138]]],\n", "\n", "\n", " [[[0.12952685, 0. ],\n", " [0. , 0.16513403]],\n", "\n", " [[0.58208991, 0. ],\n", " [0. , 0.05818734]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAACj, _37316dAAADV, _37316dAAADa, _37316dAAADb], tags={I2,1, I3,1, I3,0}),backend=numpy, dtype=float64, data=array([[[[0.00343563, 0. ],\n", " [0. , 0.51260271]],\n", "\n", " [[0.05369015, 0. ],\n", " [0. , 0.47256939]]],\n", "\n", "\n", " [[[0.01113416, 0. ],\n", " [0. , 0.7559372 ]],\n", "\n", " [[0.17399847, 0. ],\n", " [0. , 0.69689991]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAACf, _37316dAAADV, _37316dAAADW, _37316dAAADX], tags={I2,0, I3,0}),backend=numpy, dtype=float64, data=array([[[[0.73534517, 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.60415853]]],\n", "\n", "\n", " [[[0.33694845, 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.54446209]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAACX, _37316dAAACe, _37316dAAADO, _37316dAAADT], tags={I1,10, I2,10, I2,0, I2,9}),backend=numpy, dtype=float64, data=array([[[[0.38142507, 0.34142437],\n", " [0.24937398, 0.20674807]],\n", "\n", " [[0.42808156, 0.15696338],\n", " [0.27987778, 0.09504851]]],\n", "\n", "\n", " [[[0.4530231 , 0.20912295],\n", " [0.29618445, 0.12663351]],\n", "\n", " [[0.50843756, 0.09614031],\n", " [0.33241417, 0.05821735]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAACP, _37316dAAADK, _37316dAAADO, _37316dAAADP], tags={I1,9, I2,9, I2,8}),backend=numpy, dtype=float64, data=array([[[[0.5187806 , 0. ],\n", " [0. , 0.08658708]],\n", "\n", " [[0.04130601, 0. ],\n", " [0. , 0.20495103]]],\n", "\n", "\n", " [[[0.17975861, 0. ],\n", " [0. , 0.36432361]],\n", "\n", " [[0.01431262, 0. ],\n", " [0. , 0.86235147]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAACH, _37316dAAADG, _37316dAAADK, _37316dAAADL], tags={I1,8, I2,8, I2,7}),backend=numpy, dtype=float64, data=array([[[[0.04444563, 0. ],\n", " [0. , 0.08051288]],\n", "\n", " [[0.01196388, 0. ],\n", " [0. , 0.18222752]]],\n", "\n", "\n", " [[[0.08052174, 0. ],\n", " [0. , 0.02332862]],\n", "\n", " [[0.02167486, 0. ],\n", " [0. , 0.05280046]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAABv, _37316dAAADC, _37316dAAADG, _37316dAAADH], tags={I1,7, I2,7, I2,6}),backend=numpy, dtype=float64, data=array([[[[0.39560383, 0. ],\n", " [0. , 0.10392522]],\n", "\n", " [[0.52167785, 0. ],\n", " [0. , 0.10909228]]],\n", "\n", "\n", " [[[0.48331436, 0. ],\n", " [0. , 0.01980534]],\n", "\n", " [[0.63734065, 0. ],\n", " [0. , 0.02079005]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAABj, _37316dAAACy, _37316dAAADC, _37316dAAADD], tags={I1,6, I2,6, I2,5}),backend=numpy, dtype=float64, data=array([[[[0.23859785, 0. ],\n", " [0. , 0.19344254]],\n", "\n", " [[0.1170521 , 0. ],\n", " [0. , 0.07960765]]],\n", "\n", "\n", " [[[0.15905561, 0. ],\n", " [0. , 0.32175942]],\n", "\n", " [[0.07803001, 0. ],\n", " [0. , 0.13241406]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAABX, _37316dAAACu, _37316dAAACy, _37316dAAACz], tags={I1,5, I2,5, I2,4}),backend=numpy, dtype=float64, data=array([[[[0.07639231, 0. ],\n", " [0. , 0.04756834]],\n", "\n", " [[0.17480942, 0. ],\n", " [0. , 0.01205076]]],\n", "\n", "\n", " [[[0.1271354 , 0. ],\n", " [0. , 0.15668426]],\n", "\n", " [[0.29092544, 0. ],\n", " [0. , 0.03969371]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAABL, _37316dAAACq, _37316dAAACu, _37316dAAACv], tags={I1,4, I2,4, I2,3}),backend=numpy, dtype=float64, data=array([[[[0.03209676, 0. ],\n", " [0. , 0.26820763]],\n", "\n", " [[0.09558302, 0. ],\n", " [0. , 0.33799144]]],\n", "\n", "\n", " [[[0.14604625, 0. ],\n", " [0. , 0.13280802]],\n", "\n", " [[0.43492059, 0. ],\n", " [0. , 0.16736277]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAAz, _37316dAAACm, _37316dAAACq, _37316dAAACr], tags={I1,3, I2,3, I2,2}),backend=numpy, dtype=float64, data=array([[[[0.21958977, 0. ],\n", " [0. , 0.34353984]],\n", "\n", " [[0.21277054, 0. ],\n", " [0. , 0.08005 ]]],\n", "\n", "\n", " [[[0.00850977, 0. ],\n", " [0. , 0.00378069]],\n", "\n", " [[0.0082455 , 0. ],\n", " [0. , 0.00088096]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAAn, _37316dAAACi, _37316dAAACm, _37316dAAACn], tags={I1,2, I2,2, I2,1}),backend=numpy, dtype=float64, data=array([[[[0.1842287 , 0. ],\n", " [0. , 0.1257628 ]],\n", "\n", " [[0.23585119, 0. ],\n", " [0. , 0.41045086]]],\n", "\n", "\n", " [[[0.64840819, 0. ],\n", " [0. , 0.06818021]],\n", "\n", " [[0.83009783, 0. ],\n", " [0. , 0.22251911]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAAb, _37316dAAACd, _37316dAAACi, _37316dAAACj], tags={I1,1, I2,1, I2,0}),backend=numpy, dtype=float64, data=array([[[[0.00634843, 0. ],\n", " [0. , 0.48151635]],\n", "\n", " [[0.27665375, 0. ],\n", " [0. , 0.85439091]]],\n", "\n", "\n", " [[[0.00867393, 0. ],\n", " [0. , 0.05393989]],\n", "\n", " [[0.37799482, 0. ],\n", " [0. , 0.09570963]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAAP, _37316dAAACd, _37316dAAACe, _37316dAAACf], tags={I1,0, I2,0}),backend=numpy, dtype=float64, data=array([[[[0.64298199, 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.24740919]]],\n", "\n", "\n", " [[[0.78029186, 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.60712602]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAAL, _37316dAAAIX, _37316dAAAAT, _37316dAAACT], tags={I0,10, I9,10, I8,10, I9,0, I9,9}),backend=numpy, dtype=float64, data=array([[[[0.0532232 , 0.0537702 ],\n", " [0.0289815 , 0.03532978]],\n", "\n", " [[0.20064867, 0.18597707],\n", " [0.05153748, 0.05550073]]],\n", "\n", "\n", " [[[0.05601466, 0.05891469],\n", " [0.0385191 , 0.04797412]],\n", "\n", " [[0.18899798, 0.17814853],\n", " [0.05879046, 0.06606815]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAAK, _37316dAAAAO, _37316dAAACO, _37316dAAACX], tags={I0,10, I1,10, I1,0, I1,9}),backend=numpy, dtype=float64, data=array([[[[0.24995738, 0.0109522 ],\n", " [0.13727177, 0.02160958]],\n", "\n", " [[0.34964455, 0.02713711],\n", " [0.19201804, 0.05354371]]],\n", "\n", "\n", " [[[0.20749824, 0.07740389],\n", " [0.11395403, 0.15272414]],\n", "\n", " [[0.29025199, 0.1917896 ],\n", " [0.1594008 , 0.37841639]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAACD, _37316dAAAIT, _37316dAAACL, _37316dAAACT], tags={I0,9, I9,9, I8,9, I9,8}),backend=numpy, dtype=float64, data=array([[[[0.03864488, 0.12397119],\n", " [0.03250545, 0.01104815]],\n", "\n", " [[0.05484124, 0.03810483],\n", " [0.04612873, 0.00339585]]],\n", "\n", "\n", " [[[0.10126901, 0.1783599 ],\n", " [0.08518063, 0.01589521]],\n", "\n", " [[0.14371162, 0.0548222 ],\n", " [0.12088047, 0.00488568]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAACC, _37316dAAACG, _37316dAAACO, _37316dAAACP], tags={I0,9, I1,9, I1,8}),backend=numpy, dtype=float64, data=array([[[[0.41529499, 0. ],\n", " [0. , 0.41533028]],\n", "\n", " [[0.33486792, 0. ],\n", " [0. , 0.17308891]]],\n", "\n", "\n", " [[[0.34274614, 0. ],\n", " [0. , 0.70391274]],\n", "\n", " [[0.27636906, 0. ],\n", " [0. , 0.29335566]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAABr, _37316dAAAIP, _37316dAAABz, _37316dAAACL], tags={I0,8, I9,8, I8,8, I9,7}),backend=numpy, dtype=float64, data=array([[[[0.25866149, 0.01403773],\n", " [0.24656904, 0.02021299]],\n", "\n", " [[0.39168995, 0.04294743],\n", " [0.37337842, 0.06184022]]],\n", "\n", "\n", " [[[0.01029788, 0.0144621 ],\n", " [0.00981645, 0.02082404]],\n", "\n", " [[0.01559404, 0.04424575],\n", " [0.01486501, 0.06370968]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAABq, _37316dAAABu, _37316dAAACG, _37316dAAACH], tags={I0,8, I1,8, I1,7}),backend=numpy, dtype=float64, data=array([[[[0.1233939 , 0. ],\n", " [0. , 0.58929355]],\n", "\n", " [[0.1124948 , 0. ],\n", " [0. , 0.096846 ]]],\n", "\n", "\n", " [[[0.00788126, 0. ],\n", " [0. , 0.59944087]],\n", "\n", " [[0.00718512, 0. ],\n", " [0. , 0.09851363]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAABp, _37316dAAACB, _37316dAAACC, _37316dAAACD], tags={I0,8, I0,9}),backend=numpy, dtype=float64, data=array([[[[0.42051076, 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.74922576]]],\n", "\n", "\n", " [[[0.22775978, 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.83056512]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAABf, _37316dAAAIL, _37316dAAABn, _37316dAAABz], tags={I0,7, I9,7, I8,7, I9,6}),backend=numpy, dtype=float64, data=array([[[[0.10252801, 0.36217978],\n", " [0.16062073, 0.2244091 ]],\n", "\n", " [[0.30299314, 0.17829511],\n", " [0.4746701 , 0.11047289]]],\n", "\n", "\n", " [[[0.07572302, 0.10681258],\n", " [0.11862794, 0.06618181]],\n", "\n", " [[0.22377842, 0.05258206],\n", " [0.35057205, 0.03258021]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAABe, _37316dAAABi, _37316dAAABu, _37316dAAABv], tags={I0,7, I1,7, I1,6}),backend=numpy, dtype=float64, data=array([[[[0.01779431, 0. ],\n", " [0. , 0.62807228]],\n", "\n", " [[0.02105786, 0. ],\n", " [0. , 0.42341707]]],\n", "\n", "\n", " [[[0.08471033, 0. ],\n", " [0. , 0.02012659]],\n", "\n", " [[0.10024653, 0. ],\n", " [0. , 0.01356841]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAABd, _37316dAAABp, _37316dAAABq, _37316dAAABr], tags={I0,7, I0,8}),backend=numpy, dtype=float64, data=array([[[[0.50985231, 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.66277614]]],\n", "\n", "\n", " [[[0.47390027, 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.23531892]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAABT, _37316dAAAIH, _37316dAAABb, _37316dAAABn], tags={I0,6, I9,6, I8,6, I9,5}),backend=numpy, dtype=float64, data=array([[[[0.01522724, 0.00455045],\n", " [0.00786621, 0.18621459]],\n", "\n", " [[0.02078662, 0.00451157],\n", " [0.01073812, 0.18462354]]],\n", "\n", "\n", " [[[0.03056484, 0.00495965],\n", " [0.01578943, 0.20295981]],\n", "\n", " [[0.04172391, 0.00491727],\n", " [0.02155406, 0.20122568]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAABS, _37316dAAABW, _37316dAAABi, _37316dAAABj], tags={I0,6, I1,6, I1,5}),backend=numpy, dtype=float64, data=array([[[[0.0542125 , 0. ],\n", " [0. , 0.05350238]],\n", "\n", " [[0.06413732, 0. ],\n", " [0. , 0.04332653]]],\n", "\n", "\n", " [[[0.49521923, 0. ],\n", " [0. , 0.42037853]],\n", "\n", " [[0.58588031, 0. ],\n", " [0. , 0.34042491]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAABR, _37316dAAABd, _37316dAAABe, _37316dAAABf], tags={I0,6, I0,7}),backend=numpy, dtype=float64, data=array([[[[0.48346119, 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.76838016]]],\n", "\n", "\n", " [[[0.63992093, 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.82725158]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAABH, _37316dAAAID, _37316dAAABP, _37316dAAABb], tags={I0,5, I9,5, I8,5, I9,4}),backend=numpy, dtype=float64, data=array([[[[0.00231744, 0.0350393 ],\n", " [0.00166211, 0.00613395]],\n", "\n", " [[0.01717882, 0.06325508],\n", " [0.01232093, 0.01107338]]],\n", "\n", "\n", " [[[0.0357278 , 0.16969336],\n", " [0.02562457, 0.02970636]],\n", "\n", " [[0.26484425, 0.30634082],\n", " [0.18995063, 0.05362774]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAABG, _37316dAAABK, _37316dAAABW, _37316dAAABX], tags={I0,5, I1,5, I1,4}),backend=numpy, dtype=float64, data=array([[[[0.01671212, 0. ],\n", " [0. , 0.01692231]],\n", "\n", " [[0.0192893 , 0. ],\n", " [0. , 0.22703241]]],\n", "\n", "\n", " [[[0.02716025, 0. ],\n", " [0. , 0.0265343 ]],\n", "\n", " [[0.03134864, 0. ],\n", " [0. , 0.35598837]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAABF, _37316dAAABR, _37316dAAABS, _37316dAAABT], tags={I0,5, I0,6}),backend=numpy, dtype=float64, data=array([[[[0.70908829, 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.55270282]]],\n", "\n", "\n", " [[[0.62742591, 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.07837106]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAAv, _37316dAAAHz, _37316dAAABD, _37316dAAABP], tags={I0,4, I9,4, I8,4, I9,3}),backend=numpy, dtype=float64, data=array([[[[0.67351705, 0.79610168],\n", " [0.24512013, 0.21817672]],\n", "\n", " [[0.38616331, 0.37851145],\n", " [0.14054047, 0.10373346]]],\n", "\n", "\n", " [[[0.44214684, 0.35025664],\n", " [0.16091514, 0.09599005]],\n", "\n", " [[0.2535064 , 0.16653168],\n", " [0.09226125, 0.04563906]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAAu, _37316dAAAAy, _37316dAAABK, _37316dAAABL], tags={I0,4, I1,4, I1,3}),backend=numpy, dtype=float64, data=array([[[[0.01916552, 0. ],\n", " [0. , 0.47666464]],\n", "\n", " [[0.36386609, 0. ],\n", " [0. , 0.28191409]]],\n", "\n", "\n", " [[[0.0177802 , 0. ],\n", " [0. , 0.509181 ]],\n", "\n", " [[0.33756523, 0. ],\n", " [0. , 0.30114527]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAAt, _37316dAAABF, _37316dAAABG, _37316dAAABH], tags={I0,4, I0,5}),backend=numpy, dtype=float64, data=array([[[[0.34760498, 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.9562864 ]]],\n", "\n", "\n", " [[[0.8728551 , 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.57262446]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAAj, _37316dAAAHv, _37316dAAAAr, _37316dAAABD], tags={I0,3, I9,3, I8,3, I9,2}),backend=numpy, dtype=float64, data=array([[[[0.02166966, 0.27904886],\n", " [0.00882408, 0.01299472]],\n", "\n", " [[0.0698341 , 0.3496806 ],\n", " [0.02843707, 0.01628389]]],\n", "\n", "\n", " [[[0.14379812, 0.12418732],\n", " [0.05855587, 0.00578314]],\n", "\n", " [[0.4634135 , 0.15562113],\n", " [0.18870609, 0.00724695]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAAi, _37316dAAAAm, _37316dAAAAy, _37316dAAAAz], tags={I0,3, I1,3, I1,2}),backend=numpy, dtype=float64, data=array([[[[0.62265549, 0. ],\n", " [0. , 0.64636168]],\n", "\n", " [[0.47155957, 0. ],\n", " [0. , 0.73326283]]],\n", "\n", "\n", " [[[0.27171307, 0. ],\n", " [0. , 0.03051431]],\n", "\n", " [[0.20577815, 0. ],\n", " [0. , 0.03461686]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAAh, _37316dAAAAt, _37316dAAAAu, _37316dAAAAv], tags={I0,3, I0,4}),backend=numpy, dtype=float64, data=array([[[[0.21322457, 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.88236378]]],\n", "\n", "\n", " [[[0.62095282, 0. ],\n", " [0. , 0. ]],\n", "\n", " [[0. , 0. ],\n", " [0. , 0.13583653]]]])

...

" ], "text/plain": [ "TensorNetwork(tensors=110, indices=220)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tn.rank_simplify_()" ] }, { "cell_type": "code", "execution_count": 6, "id": "0847c4b5-0f52-48b8-861c-17a577cd780d", "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "" ], "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "tn.draw(htn.tags, layout=\"neato\")" ] }, { "cell_type": "markdown", "id": "150364b0-9d98-4a96-b3b6-f81b808ea0d0", "metadata": {}, "source": [ "The tags show you that some tensors have been formed from varying cluster of the original tensors.\n", "\n", "```{hint}\n", "There is also the experimental [`compress_simplify`](quimb.tensor.TensorNetwork.compress_simplify) method, which will combine rounds of hyper index resolution with various types of simplification. It generally has the best chance of reducing a networks size for *exact* contraction, and has a `final_resolve=True` option meaning it always outputs a non-hyper TN.\n", "```\n", "\n", "Once we have the TN in non-hyper form, we can contract it approximately using fully automatic approximate contraction (https://arxiv.org/abs/2206.07044):" ] }, { "cell_type": "code", "execution_count": 7, "id": "4be1b263-a051-4de9-9d4d-9c85f50c0894", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "F=7.24 C=7.57 S=14.00 P=15.02: 100%|██████████| 128/128 [00:02<00:00, 44.60it/s]\n" ] } ], "source": [ "import cotengra as ctg\n", "\n", "# first we find a compressed specific contraction tree:\n", "copt = ctg.HyperCompressedOptimizer(chi=16, progbar=True)\n", "ctree = tn.contraction_tree(copt)" ] }, { "cell_type": "markdown", "id": "9cf3bf3a-dc6a-4b3c-86ec-3a3e8a79de0b", "metadata": {}, "source": [ "Check cost of compressed tree first:" ] }, { "cell_type": "code", "execution_count": 8, "id": "c1367f26-24c1-40ea-98e1-93d4648341f5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ctree.compressed_contract_stats()" ] }, { "cell_type": "markdown", "id": "fb7b10ef-e026-4eda-a660-7ece693a790b", "metadata": {}, "source": [ "The P value (peak memory), means storage for $2^{15.19}$ elements will be needed." ] }, { "cell_type": "markdown", "id": "0c6d63c8-a494-4b55-bde2-44d0bb759b21", "metadata": {}, "source": [ "Then we can perform the compressed contraction:" ] }, { "cell_type": "code", "execution_count": 9, "id": "ba799888-44ef-4a0a-abe8-0ba0a56f8097", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "log2[SIZE]: 12.00/12.00: 51%|█████▏ | 56/109 [00:00<00:00, 1320.83it/s]" ] }, { "name": "stderr", "output_type": "stream", "text": [ "log2[SIZE]: 0.00/13.46: 100%|██████████| 109/109 [00:00<00:00, 700.63it/s] \n" ] }, { "data": { "text/plain": [ "np.float64(3.931684265510081e-38)" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tn.contract_compressed(ctree, progbar=True)" ] }, { "cell_type": "markdown", "id": "d4174222-4abc-4160-819a-fc5af988ef2a", "metadata": {}, "source": [ "`max_bond` will be picked up automatically from the `ctree`. There are also many other parameters controlling accuracy such as gauging, see the [`contract_compressed`](quimb.tensor.TensorNetwork.contract_compressed) docstring for more details." ] }, { "cell_type": "markdown", "id": "bd1c2feb-6a77-4268-99e2-7d9e2bf11d21", "metadata": {}, "source": [ "## Manually to `TensorNetwork2D`\n", "\n", "We know that the hyper TN we created has a 2D-like structure. The following demonstrates how to convert it no just to a non-hyper TN, but also setup the tag structure so that it can cast as a [`TensorNetwork2D`](quimb.tensor.tn2d.core.TensorNetwork2D). From then, 2D specific algorithms can be applied to it.\n", "\n", "Here we'll first split each bond tensor in half:" ] }, { "cell_type": "code", "execution_count": 10, "id": "a4b06ec3-b2df-43e6-8ad3-ffcbe0a064e7", "metadata": {}, "outputs": [], "source": [ "tn = htn.copy()\n", "\n", "site_tag_to_inds = {}\n", "\n", "for cooa, coob in edges:\n", " # get the tensor at this bond\n", " taga = site_tag_id.format(*cooa)\n", " tagb = site_tag_id.format(*coob)\n", " t = tn.pop_tensor((taga, tagb))\n", " # we only want cooa tag on left, coob tag on right\n", " t.drop_tags((taga, tagb))\n", "\n", " # get ind to define left/right split\n", " lix = site_ind_id.format(*cooa)\n", " # name for the new bond\n", " bix = qtn.rand_uuid()\n", " tl, tr = t.split(\n", " left_inds=[lix],\n", " # how to split doesn't really matter, just do it exactly\n", " cutoff=0.0,\n", " get=\"tensors\",\n", " ltags=taga,\n", " rtags=tagb,\n", " bond_ind=bix,\n", " )\n", " tn |= tl\n", " tn |= tr\n", "\n", " # record the bonds around each site for later contraction\n", " site_tag_to_inds.setdefault(taga, []).append(bix)\n", " site_tag_to_inds.setdefault(tagb, []).append(bix)" ] }, { "cell_type": "markdown", "id": "773bf8b4-6802-4bd0-9c97-e55adabbacdf", "metadata": {}, "source": [ "We now have two tensors per bond, and four tensors belonging exclusively to each site:" ] }, { "cell_type": "code", "execution_count": 11, "id": "3b2c9b09-9eac-4122-8a91-41d25150c00a", "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "" ], "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "tn.draw(tn.tags, layout=\"neato\")" ] }, { "cell_type": "markdown", "id": "a61c7819-6ff6-41ab-8f52-984bbc7ba1e0", "metadata": {}, "source": [ "We can now contract those four tensors, needing to specifiy the incident indices since it is an effect hyper contraction:" ] }, { "cell_type": "code", "execution_count": 12, "id": "06d83978-cb39-4182-b46e-1f415ca7ed4e", "metadata": {}, "outputs": [], "source": [ "for tag, inds in site_tag_to_inds.items():\n", " tn.contract_(tag, output_inds=inds)" ] }, { "cell_type": "markdown", "id": "46f1ad90-6a70-425a-b69e-a8cfb2d9c515", "metadata": {}, "source": [ "We now have a single tensor per site, correctly tagged for that site." ] }, { "cell_type": "code", "execution_count": 13, "id": "4f649d8c-3d80-44e2-bb79-e197da49e84f", "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "" ], "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "tn.draw(tn.tags, layout=\"neato\")" ] }, { "cell_type": "markdown", "id": "24d9173f-ef58-4f88-aaa1-5543dd64a6ca", "metadata": {}, "source": [ "Finally we want to cast the network as [`TensorNetwork2D`](quimb.tensor.tn2d.core.TensorNetwork2D), that involves adding some extra tags that specify the 2D stucture:" ] }, { "cell_type": "code", "execution_count": 14, "id": "dba2bd57-aceb-4223-8b2f-d76de3c5a8b5", "metadata": {}, "outputs": [], "source": [ "x_tag_id = \"X{}\"\n", "y_tag_id = \"Y{}\"\n", "\n", "for coo in sites:\n", " i, j = coo\n", " t = tn[site_tag_id.format(i, j)]\n", " t.add_tag((x_tag_id.format(i), y_tag_id.format(j)))" ] }, { "cell_type": "markdown", "id": "8d975b6d-2388-4682-86c5-fb365b9daa5e", "metadata": {}, "source": [ "Before 'casting' the TN:" ] }, { "cell_type": "code", "execution_count": 15, "id": "a228b4d3-3a8d-4408-9101-11a14733b394", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
TensorNetwork2D(tensors=110, indices=220, Lx=10, Ly=11, max_bond=2)
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIY, _37316dAAAIZ, _37316dAAAIa, _37316dAAAIb], tags={I0,0, X0, Y0}),backend=numpy, dtype=float64, data=array([[[[ 0.41131952, -0.26722998],\n", " [ 0.30606677, 0.16823801]],\n", "\n", " [[ 0.14089751, 0.14211816],\n", " [ 0.23705465, -0.00592954]]],\n", "\n", "\n", " [[[ 0.01354028, 0.22222884],\n", " [ 0.14079766, -0.05730528]],\n", "\n", " [[ 0.08784552, -0.06560805],\n", " [ 0.06053688, 0.03825248]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIY, _37316dAAAIc, _37316dAAAId, _37316dAAAIe], tags={I0,1, X0, Y1}),backend=numpy, dtype=float64, data=array([[[[ 0.58043015, -0.04631693],\n", " [ 0.14775113, 0.06009977]],\n", "\n", " [[-0.11175168, 0.07834591],\n", " [ 0.13398402, 0.01801887]]],\n", "\n", "\n", " [[[ 0.17100729, -0.07476152],\n", " [-0.09945194, -0.00834044]],\n", "\n", " [[-0.17101127, 0.02471842],\n", " [-0.01762793, -0.01298822]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIZ, _37316dAAAJA, _37316dAAAJD, _37316dAAAJE], tags={I0,10, X0, Y10}),backend=numpy, dtype=float64, data=array([[[[ 0.80621712, 0.04769954],\n", " [ 0.0534107 , 0.15516802]],\n", "\n", " [[ 0.19430794, 0.17926244],\n", " [ 0.28364082, 0.05682748]]],\n", "\n", "\n", " [[[-0.25544705, 0.14663054],\n", " [ 0.24412544, -0.03043179]],\n", "\n", " [[ 0.22654489, -0.00896796],\n", " [-0.0210983 , 0.04101082]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIa, _37316dAAAJF, _37316dAAAJG, _37316dAAAJH], tags={I1,0, X1, Y0}),backend=numpy, dtype=float64, data=array([[[[ 0.54339324, 0.06065579],\n", " [ 0.07180621, 0.08634133]],\n", "\n", " [[-0.05185594, 0.08292953],\n", " [ 0.07404731, 0.01767446]]],\n", "\n", "\n", " [[[ 0.23563776, -0.13672079],\n", " [-0.11751927, -0.01017712]],\n", "\n", " [[-0.19086736, 0.02198374],\n", " [ 0.01425234, -0.01768296]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIb, _37316dAAAMF, _37316dAAAMZ, _37316dAAAMa], tags={I9,0, X9, Y0}),backend=numpy, dtype=float64, data=array([[[[ 0.20769725, 0.02172661],\n", " [-0.01748876, 0.0608437 ]],\n", "\n", " [[-0.02793735, 0.05465769],\n", " [ 0.04691463, -0.03707534]]],\n", "\n", "\n", " [[[-0.24159975, -0.13645441],\n", " [-0.06570162, -0.01498918]],\n", "\n", " [[-0.04655521, -0.00597282],\n", " [ 0.00306661, -0.01308473]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIc, _37316dAAAIf, _37316dAAAIg, _37316dAAAIh], tags={I0,2, X0, Y2}),backend=numpy, dtype=float64, data=array([[[[ 0.49367536, -0.0775353 ],\n", " [ 0.4934709 , 0.12675324]],\n", "\n", " [[ 0.09131858, 0.10309223],\n", " [ 0.12530635, -0.00622275]]],\n", "\n", "\n", " [[[ 0.01882554, 0.28401241],\n", " [ 0.10196446, -0.06766764]],\n", "\n", " [[ 0.05128637, -0.1495903 ],\n", " [ 0.01025652, 0.04892614]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAId, _37316dAAAJF, _37316dAAAJI, _37316dAAAJJ], tags={I1,1, X1, Y1}),backend=numpy, dtype=float64, data=array([[[[-0.75956875, 0.17348378],\n", " [-0.0111242 , -0.2788132 ]],\n", "\n", " [[ 0.14601283, 0.1986183 ],\n", " [ 0.14611501, -0.04392789]]],\n", "\n", "\n", " [[[ 0.12342538, 0.17928073],\n", " [ 0.13057982, -0.04192012]],\n", "\n", " [[-0.12989476, 0.00226319],\n", " [-0.01891167, -0.0361587 ]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIe, _37316dAAAMH, _37316dAAAMZ, _37316dAAAMb], tags={I9,1, X9, Y1}),backend=numpy, dtype=float64, data=array([[[[ 0.15715992, -0.09229868],\n", " [-0.09970623, 0.16379632]],\n", "\n", " [[ 0.01714259, 0.04319461],\n", " [ 0.03607566, -0.04377823]]],\n", "\n", "\n", " [[[-0.10315691, -0.03495779],\n", " [-0.01877514, 0.00306422]],\n", "\n", " [[-0.05387646, -0.01348673],\n", " [-0.0056002 , -0.00392139]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIf, _37316dAAAIi, _37316dAAAIj, _37316dAAAIk], tags={I0,3, X0, Y3}),backend=numpy, dtype=float64, data=array([[[[ 0.38806918, 0.25755807],\n", " [-0.06819315, 0.0926 ]],\n", "\n", " [[ 0.02762254, 0.15629977],\n", " [ 0.17263713, -0.08981563]]],\n", "\n", "\n", " [[[ 0.13957368, 0.14647328],\n", " [ 0.04473668, -0.0043166 ]],\n", "\n", " [[ 0.07925207, 0.03186493],\n", " [-0.04060024, 0.03339913]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIg, _37316dAAAJI, _37316dAAAJK, _37316dAAAJL], tags={I1,2, X1, Y2}),backend=numpy, dtype=float64, data=array([[[[-0.8710736 , 0.16235842],\n", " [ 0.18261023, -0.15059705]],\n", "\n", " [[-0.06539412, -0.24765638],\n", " [-0.10547389, -0.03614808]]],\n", "\n", "\n", " [[[-0.21024356, 0.25506313],\n", " [ 0.1430908 , -0.01570964]],\n", "\n", " [[ 0.20494937, 0.10332859],\n", " [ 0.02194976, 0.04896379]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIh, _37316dAAAMJ, _37316dAAAMb, _37316dAAAMc], tags={I9,2, X9, Y2}),backend=numpy, dtype=float64, data=array([[[[ 0.27484159, -0.37271284],\n", " [ 0.05992316, -0.20995336]],\n", "\n", " [[-0.0021919 , -0.05000952],\n", " [ 0.03527061, -0.02364581]]],\n", "\n", "\n", " [[[-0.33999419, -0.08705515],\n", " [ 0.29570558, -0.00222481]],\n", "\n", " [[ 0.15497111, 0.00759254],\n", " [-0.11313365, -0.01432069]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIi, _37316dAAAIl, _37316dAAAIm, _37316dAAAIn], tags={I0,4, X0, Y4}),backend=numpy, dtype=float64, data=array([[[[ 7.69378774e-01, -1.42812179e-01],\n", " [-7.46369332e-03, 4.89257794e-02]],\n", "\n", " [[ 2.05746811e-03, 1.49033496e-01],\n", " [ 8.13022110e-02, -1.49145884e-02]]],\n", "\n", "\n", " [[[-3.64618038e-01, -1.63969852e-01],\n", " [-1.22542935e-01, 1.39563635e-04]],\n", "\n", " [[-3.97234189e-01, -4.99916448e-03],\n", " [-3.89988342e-02, -1.73325058e-02]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIj, _37316dAAAJK, _37316dAAAJM, _37316dAAAJN], tags={I1,3, X1, Y3}),backend=numpy, dtype=float64, data=array([[[[ 0.35922694, -0.0304151 ],\n", " [ 0.15057313, 0.02518695]],\n", "\n", " [[ 0.12812041, 0.00864686],\n", " [ 0.05744845, -0.00668911]]],\n", "\n", "\n", " [[[-0.14904948, -0.01364039],\n", " [-0.06752098, 0.0106607 ]],\n", "\n", " [[-0.05575222, 0.00355157],\n", " [-0.02359362, -0.00296935]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIk, _37316dAAAML, _37316dAAAMc, _37316dAAAMd], tags={I9,3, X9, Y3}),backend=numpy, dtype=float64, data=array([[[[ 0.54408316, -0.05491092],\n", " [-0.11511373, -0.0446535 ]],\n", "\n", " [[-0.10117373, -0.04894122],\n", " [ 0.0906955 , -0.01281088]]],\n", "\n", "\n", " [[[-0.26625592, -0.07409719],\n", " [ 0.17460598, -0.01418887]],\n", "\n", " [[ 0.1738393 , -0.01761633],\n", " [-0.03669572, -0.01429281]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIl, _37316dAAAIo, _37316dAAAIp, _37316dAAAIq], tags={I0,5, X0, Y5}),backend=numpy, dtype=float64, data=array([[[[ 0.29425238, 0.04564136],\n", " [-0.00677912, 0.00471031]],\n", "\n", " [[-0.19585664, 0.02497804],\n", " [ 0.00745958, 0.00127307]]],\n", "\n", "\n", " [[[ 0.10655296, -0.04287022],\n", " [-0.00561728, -0.00302436]],\n", "\n", " [[-0.10130616, -0.01001124],\n", " [ 0.00263754, -0.00116759]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIm, _37316dAAAJM, _37316dAAAJO, _37316dAAAJP], tags={I1,4, X1, Y4}),backend=numpy, dtype=float64, data=array([[[[ 0.5425171 , -0.12034723],\n", " [-0.02322436, 0.09436746]],\n", "\n", " [[ 0.03778 , -0.0972649 ],\n", " [-0.11819737, -0.14466326]]],\n", "\n", "\n", " [[[-0.12599104, 0.04327577],\n", " [ 0.02549635, 0.00416332]],\n", "\n", " [[-0.02880198, -0.00297988],\n", " [-0.01105546, -0.02095123]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIn, _37316dAAAMN, _37316dAAAMd, _37316dAAAMe], tags={I9,4, X9, Y4}),backend=numpy, dtype=float64, data=array([[[[ 0.82017952, -0.14079669],\n", " [-0.10498382, -0.07237022]],\n", "\n", " [[-0.03841616, -0.07977435],\n", " [ 0.03395181, -0.00311954]]],\n", "\n", "\n", " [[[-0.04888758, -0.11918061],\n", " [ 0.04914357, -0.00530093]],\n", "\n", " [[ 0.04326694, -0.01405898],\n", " [-0.00330891, -0.00431754]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIo, _37316dAAAIr, _37316dAAAIs, _37316dAAAIt], tags={I0,6, X0, Y6}),backend=numpy, dtype=float64, data=array([[[[ 0.32638931, -0.05949305],\n", " [ 0.02917351, 0.0163632 ]],\n", "\n", " [[-0.04402681, 0.01995369],\n", " [ 0.00871577, 0.003757 ]]],\n", "\n", "\n", " [[[ 0.25878663, -0.07996963],\n", " [-0.0116541 , -0.00342525]],\n", "\n", " [[-0.05404638, 0.01283531],\n", " [-0.00166617, -0.00121761]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIp, _37316dAAAJO, _37316dAAAJQ, _37316dAAAJR], tags={I1,5, X1, Y5}),backend=numpy, dtype=float64, data=array([[[[ 0.40294459, -0.05111026],\n", " [-0.11193946, 0.02418725]],\n", "\n", " [[-0.11030127, 0.0340611 ],\n", " [ 0.04509916, -0.00294389]]],\n", "\n", "\n", " [[[-0.00266647, -0.00472192],\n", " [-0.00290418, -0.00108713]],\n", "\n", " [[-0.00659389, -0.00352755],\n", " [-0.00131163, -0.00119532]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIq, _37316dAAAMP, _37316dAAAMe, _37316dAAAMf], tags={I9,5, X9, Y5}),backend=numpy, dtype=float64, data=array([[[[-0.28737696, -0.12265005],\n", " [-0.14512131, 0.06131013]],\n", "\n", " [[-0.0531127 , 0.09438148],\n", " [-0.04540182, -0.03273776]]],\n", "\n", "\n", " [[[-0.07631099, 0.03510581],\n", " [-0.04927877, -0.00919897]],\n", "\n", " [[-0.02430634, -0.01908474],\n", " [-0.01089156, 0.00846529]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIr, _37316dAAAIu, _37316dAAAIv, _37316dAAAIw], tags={I0,7, X0, Y7}),backend=numpy, dtype=float64, data=array([[[[ 0.4841934 , 0.0647189 ],\n", " [-0.08435673, 0.1251128 ]],\n", "\n", " [[ 0.11013665, 0.03880267],\n", " [ 0.10671833, -0.08634573]]],\n", "\n", "\n", " [[[-0.13928681, -0.02948919],\n", " [-0.03257422, 0.01583795]],\n", "\n", " [[-0.0417189 , -0.00481843],\n", " [ 0.01123067, -0.01439289]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIs, _37316dAAAJQ, _37316dAAAJS, _37316dAAAJT], tags={I1,6, X1, Y6}),backend=numpy, dtype=float64, data=array([[[[ 0.55978223, 0.05672278],\n", " [ 0.01410234, 0.06349485]],\n", "\n", " [[-0.05650907, -0.06947453],\n", " [-0.04431794, 0.00339042]]],\n", "\n", "\n", " [[[-0.00820624, -0.0205659 ],\n", " [-0.01348537, 0.00210297]],\n", "\n", " [[ 0.01446702, -0.00061604],\n", " [-0.00103644, 0.00196103]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIt, _37316dAAAMR, _37316dAAAMf, _37316dAAAMg], tags={I9,6, X9, Y6}),backend=numpy, dtype=float64, data=array([[[[-0.48453884, 0.18338654],\n", " [-0.04757964, -0.07595661]],\n", "\n", " [[-0.05261355, 0.0399202 ],\n", " [ 0.05413911, 0.01884144]]],\n", "\n", "\n", " [[[-0.09549453, 0.06194796],\n", " [ 0.06711579, 0.01997014]],\n", "\n", " [[-0.02665639, 0.00376971],\n", " [-0.02134867, -0.01273455]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIu, _37316dAAAIx, _37316dAAAIy, _37316dAAAIz], tags={I0,8, X0, Y8}),backend=numpy, dtype=float64, data=array([[[[-0.77181135, 0.05471965],\n", " [-0.04542886, -0.28415721]],\n", "\n", " [[-0.12319477, -0.1520376 ],\n", " [-0.14149646, 0.04594286]]],\n", "\n", "\n", " [[[ 0.16311833, 0.1972846 ],\n", " [ 0.18399128, -0.05854655]],\n", "\n", " [[ 0.12359804, -0.00775975],\n", " [ 0.00811256, 0.04493537]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIv, _37316dAAAJS, _37316dAAAJU, _37316dAAAJV], tags={I1,7, X1, Y7}),backend=numpy, dtype=float64, data=array([[[[ 0.13082138, -0.02389757],\n", " [-0.1999665 , 0.0676052 ]],\n", "\n", " [[-0.01326438, -0.01310151],\n", " [-0.01971779, 0.00510378]]],\n", "\n", "\n", " [[[-0.08675785, -0.04892946],\n", " [-0.03426148, 0.00506369]],\n", "\n", " [[ 0.09216015, 0.03979384],\n", " [ 0.0050117 , 0.00400503]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIw, _37316dAAAMT, _37316dAAAMg, _37316dAAAMh], tags={I9,7, X9, Y7}),backend=numpy, dtype=float64, data=array([[[[ 0.51257554, 0.0310327 ],\n", " [-0.0380776 , -0.05214731]],\n", "\n", " [[ 0.11702027, -0.07002821],\n", " [ 0.15802043, -0.01794201]]],\n", "\n", "\n", " [[[-0.1188747 , -0.05156294],\n", " [ 0.10474731, 0.00862059]],\n", "\n", " [[ 0.12125807, -0.00436068],\n", " [ 0.01629108, -0.01325239]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIx, _37316dAAAJA, _37316dAAAJB, _37316dAAAJC], tags={I0,9, X0, Y9}),backend=numpy, dtype=float64, data=array([[[[ 0.67891229, -0.03545567],\n", " [-0.11688057, 0.07439513]],\n", "\n", " [[-0.31789412, 0.10957632],\n", " [ 0.15745367, -0.00690321]]],\n", "\n", "\n", " [[[ 0.03029026, 0.07833118],\n", " [ 0.08307942, 0.02732684]],\n", "\n", " [[ 0.10602439, 0.01888573],\n", " [ 0.00873116, 0.01895528]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIy, _37316dAAAJU, _37316dAAAJW, _37316dAAAJX], tags={I1,8, X1, Y8}),backend=numpy, dtype=float64, data=array([[[[-0.35125925, 0.06994819],\n", " [ 0.18247825, -0.08078915]],\n", "\n", " [[ 0.04937853, 0.07294314],\n", " [ 0.03715908, 0.0062469 ]]],\n", "\n", "\n", " [[[ 0.04599445, -0.07849525],\n", " [-0.07650671, 0.01485905]],\n", "\n", " [[ 0.09150855, 0.05930038],\n", " [ 0.01128651, 0.01626105]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAIz, _37316dAAAMV, _37316dAAAMh, _37316dAAAMi], tags={I9,8, X9, Y8}),backend=numpy, dtype=float64, data=array([[[[ 0.52256234, 0.02332289],\n", " [ 0.0077263 , 0.04539873]],\n", "\n", " [[ 0.08052626, 0.04251613],\n", " [ 0.01793117, -0.02428773]]],\n", "\n", "\n", " [[[ 0.3778234 , 0.07960827],\n", " [ 0.0325733 , -0.01760732]],\n", "\n", " [[ 0.08153628, -0.00396028],\n", " [-0.00206298, 0.01319165]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJB, _37316dAAAJW, _37316dAAAJY, _37316dAAAJZ], tags={I1,9, X1, Y9}),backend=numpy, dtype=float64, data=array([[[[-0.71289122, 0.10936529],\n", " [ 0.00831321, -0.22548058]],\n", "\n", " [[-0.10552094, 0.1778055 ],\n", " [ 0.11229874, 0.02655053]]],\n", "\n", "\n", " [[[ 0.08427975, -0.19356806],\n", " [-0.12512297, -0.04032174]],\n", "\n", " [[ 0.10196087, 0.00204128],\n", " [ 0.01096341, 0.03880595]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJC, _37316dAAAMX, _37316dAAAMi, _37316dAAAMj], tags={I9,9, X9, Y9}),backend=numpy, dtype=float64, data=array([[[[ 0.34028129, 0.00398228],\n", " [-0.11571281, -0.05216567]],\n", "\n", " [[ 0.17522369, -0.06257039],\n", " [ 0.09518946, -0.01132147]]],\n", "\n", "\n", " [[[-0.05939346, -0.0313761 ],\n", " [ 0.09368115, 0.01648354]],\n", "\n", " [[ 0.062872 , -0.0087625 ],\n", " [ 0.00136978, -0.00735415]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJD, _37316dAAAJG, _37316dAAAJY, _37316dAAAJa], tags={I1,10, X1, Y10}),backend=numpy, dtype=float64, data=array([[[[-0.50547268, -0.03855497],\n", " [-0.31622745, -0.14773242]],\n", "\n", " [[ 0.05193485, -0.06166137],\n", " [-0.09134936, -0.019422 ]]],\n", "\n", "\n", " [[[ 0.19055694, -0.11970517],\n", " [-0.13411762, -0.01508718]],\n", "\n", " [[-0.15406635, 0.04404617],\n", " [ 0.00891362, -0.01560803]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJE, _37316dAAAMY, _37316dAAAMa, _37316dAAAMj], tags={I9,10, X9, Y10}),backend=numpy, dtype=float64, data=array([[[[ 0.427811 , -0.03367563],\n", " [ 0.1921905 , 0.06247233]],\n", "\n", " [[-0.03816905, -0.0628416 ],\n", " [-0.13705003, 0.02087247]]],\n", "\n", "\n", " [[[ 0.07939511, 0.03275468],\n", " [ 0.10669281, -0.00407168]],\n", "\n", " [[-0.06735016, 0.01301839],\n", " [-0.01620446, -0.01293437]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJH, _37316dAAAJb, _37316dAAAJc, _37316dAAAJd], tags={I2,0, X2, Y0}),backend=numpy, dtype=float64, data=array([[[[ 0.58956767, -0.07193207],\n", " [-0.01332059, 0.11325801]],\n", "\n", " [[ 0.27696189, 0.11577879],\n", " [ 0.15175587, 0.01595908]]],\n", "\n", "\n", " [[[-0.0764495 , 0.1112832 ],\n", " [ 0.10943832, -0.0400754 ]],\n", "\n", " [[ 0.10840209, 0.00195168],\n", " [ 0.01358517, 0.01704486]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJJ, _37316dAAAJb, _37316dAAAJe, _37316dAAAJf], tags={I2,1, X2, Y1}),backend=numpy, dtype=float64, data=array([[[[ 0.73530608, -0.06228006],\n", " [-0.09463309, 0.05619156]],\n", "\n", " [[ 0.02654499, -0.06867516],\n", " [-0.09545745, -0.01967658]]],\n", "\n", "\n", " [[[ 0.27592956, -0.10056572],\n", " [-0.14247287, -0.0041372 ]],\n", "\n", " [[ 0.15744241, 0.01991981],\n", " [ 0.02581568, 0.02289783]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJL, _37316dAAAJe, _37316dAAAJg, _37316dAAAJh], tags={I2,2, X2, Y2}),backend=numpy, dtype=float64, data=array([[[[ 0.87446674, 0.0943376 ],\n", " [ 0.16821586, 0.11042006]],\n", "\n", " [[ 0.01258229, 0.09278649],\n", " [ 0.1252116 , -0.02537108]]],\n", "\n", "\n", " [[[-0.26060336, -0.15138593],\n", " [-0.21568759, 0.00344271]],\n", "\n", " [[-0.16779265, 0.0300879 ],\n", " [ 0.03244211, -0.03539709]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJN, _37316dAAAJg, _37316dAAAJi, _37316dAAAJj], tags={I2,3, X2, Y3}),backend=numpy, dtype=float64, data=array([[[[-0.37684443, -0.07786152],\n", " [ 0.0526854 , -0.09567212]],\n", "\n", " [[-0.30228824, 0.08379703],\n", " [ 0.08784902, 0.00570995]]],\n", "\n", "\n", " [[[-0.00469567, 0.0318445 ],\n", " [ 0.01088475, 0.01730788]],\n", "\n", " [[-0.01780531, -0.00432202],\n", " [ 0.00228882, -0.00488297]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJP, _37316dAAAJi, _37316dAAAJk, _37316dAAAJl], tags={I2,4, X2, Y4}),backend=numpy, dtype=float64, data=array([[[[ 0.37016354, -0.01549314],\n", " [ 0.06975109, 0.09648496]],\n", "\n", " [[-0.06831076, -0.06121682],\n", " [-0.1256684 , -0.02753649]]],\n", "\n", "\n", " [[[ 0.17585692, -0.1217325 ],\n", " [-0.168198 , 0.02846877]],\n", "\n", " [[ 0.0973275 , -0.01067226],\n", " [ 0.0067238 , 0.02436679]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJR, _37316dAAAJk, _37316dAAAJm, _37316dAAAJn], tags={I2,5, X2, Y5}),backend=numpy, dtype=float64, data=array([[[[ 0.4967528 , 0.0707485 ],\n", " [ 0.0203266 , 0.02246295]],\n", "\n", " [[-0.12278764, -0.08916904],\n", " [-0.02435105, 0.01637507]]],\n", "\n", "\n", " [[[ 0.09409645, 0.04607912],\n", " [ 0.01266088, -0.00574118]],\n", "\n", " [[-0.05553361, 0.01654818],\n", " [ 0.00432182, -0.00999277]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJT, _37316dAAAJm, _37316dAAAJo, _37316dAAAJp], tags={I2,6, X2, Y6}),backend=numpy, dtype=float64, data=array([[[[ 0.29823959, -0.05280675],\n", " [ 0.03958964, 0.01599358]],\n", "\n", " [[-0.06410864, -0.00953736],\n", " [-0.02091621, -0.00046744]]],\n", "\n", "\n", " [[[-0.02641557, 0.05661451],\n", " [ 0.02734016, -0.00880241]],\n", "\n", " [[-0.02233254, 0.00264781],\n", " [-0.00374043, -0.00101184]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJV, _37316dAAAJo, _37316dAAAJq, _37316dAAAJr], tags={I2,7, X2, Y7}),backend=numpy, dtype=float64, data=array([[[[-0.44595031, -0.0310226 ],\n", " [-0.33702907, -0.07508912]],\n", "\n", " [[ 0.04251049, 0.02780067],\n", " [ 0.05163676, 0.00628705]]],\n", "\n", "\n", " [[[-0.05739929, 0.10254737],\n", " [ 0.04028515, -0.0133996 ]],\n", "\n", " [[-0.03477579, 0.0339526 ],\n", " [ 0.00228039, -0.00713054]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJX, _37316dAAAJq, _37316dAAAJs, _37316dAAAJt], tags={I2,8, X2, Y8}),backend=numpy, dtype=float64, data=array([[[[ 0.1371796 , -0.05420017],\n", " [-0.02881899, 0.06253945]],\n", "\n", " [[ 0.06947771, 0.07463951],\n", " [ 0.08052561, 0.07047778]]],\n", "\n", "\n", " [[[ 0.1653896 , -0.12291854],\n", " [-0.08838795, 0.05351767]],\n", "\n", " [[-0.02329379, -0.0069822 ],\n", " [-0.0101872 , -0.01677148]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJZ, _37316dAAAJs, _37316dAAAJu, _37316dAAAJv], tags={I2,9, X2, Y9}),backend=numpy, dtype=float64, data=array([[[[-0.6487257 , -0.05794603],\n", " [ 0.10570841, -0.03343088]],\n", "\n", " [[-0.01433389, -0.30104553],\n", " [-0.04738128, -0.01596749]]],\n", "\n", "\n", " [[[ 0.23989029, -0.2017038 ],\n", " [-0.07609662, 0.00102666]],\n", "\n", " [[-0.25344988, -0.22708328],\n", " [ 0.00739137, -0.02344736]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJa, _37316dAAAJc, _37316dAAAJu, _37316dAAAJw], tags={I2,10, X2, Y10}),backend=numpy, dtype=float64, data=array([[[[ 6.86018818e-01, 6.48330289e-02],\n", " [-5.50759138e-02, -2.52834654e-02]],\n", "\n", " [[-1.06287488e-02, -7.22755875e-02],\n", " [ 3.79722004e-02, 2.49536759e-03]]],\n", "\n", "\n", " [[[ 6.18853915e-02, -6.15967523e-02],\n", " [ 3.01579950e-02, -2.90089103e-04]],\n", "\n", " [[ 1.23726843e-01, -1.76289920e-02],\n", " [ 5.33802823e-03, -3.69452849e-03]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJd, _37316dAAAJx, _37316dAAAJy, _37316dAAAJz], tags={I3,0, X3, Y0}),backend=numpy, dtype=float64, data=array([[[[ 0.51315086, 0.06829365],\n", " [-0.05120681, 0.04697699]],\n", "\n", " [[ 0.02020045, 0.14781951],\n", " [ 0.05934659, 0.00311131]]],\n", "\n", "\n", " [[[-0.02356073, 0.0960759 ],\n", " [ 0.04429838, -0.00129417]],\n", "\n", " [[ 0.11224662, 0.02615707],\n", " [-0.00645772, 0.0103733 ]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJf, _37316dAAAJx, _37316dAAAKA, _37316dAAAKB], tags={I3,1, X3, Y1}),backend=numpy, dtype=float64, data=array([[[[ 5.51202948e-01, -3.66405288e-01],\n", " [-8.52109961e-02, 1.25138151e-01]],\n", "\n", " [[ 8.04383928e-02, -1.09275895e-01],\n", " [-1.08950126e-01, -8.93844537e-05]]],\n", "\n", "\n", " [[[ 1.29026069e-04, -4.05218741e-02],\n", " [-6.99538334e-02, -1.32677367e-02]],\n", "\n", " [[ 5.69964515e-02, 1.00000009e-02],\n", " [ 7.40101851e-02, 2.86871631e-02]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJh, _37316dAAAKA, _37316dAAAKC, _37316dAAAKD], tags={I3,2, X3, Y2}),backend=numpy, dtype=float64, data=array([[[[ 0.69526089, 0.40077804],\n", " [ 0.11154829, 0.1409255 ]],\n", "\n", " [[-0.14127972, -0.14935774],\n", " [-0.11466356, 0.04600718]]],\n", "\n", "\n", " [[[ 0.04492525, 0.0691234 ],\n", " [ 0.06575917, -0.03840106]],\n", "\n", " [[-0.06102758, 0.02982183],\n", " [ 0.07825358, -0.08380749]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJj, _37316dAAAKC, _37316dAAAKE, _37316dAAAKF], tags={I3,3, X3, Y3}),backend=numpy, dtype=float64, data=array([[[[-0.19819753, -0.00596753],\n", " [ 0.03460761, -0.04291208]],\n", "\n", " [[ 0.19255782, -0.04822213],\n", " [-0.12863307, 0.01181492]]],\n", "\n", "\n", " [[[-0.05015714, -0.06205303],\n", " [-0.09772486, -0.0443433 ]],\n", "\n", " [[-0.08213825, -0.00752741],\n", " [ 0.00545276, -0.02057922]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJl, _37316dAAAKE, _37316dAAAKG, _37316dAAAKH], tags={I3,4, X3, Y4}),backend=numpy, dtype=float64, data=array([[[[ 0.22963859, 0.20157082],\n", " [-0.06162313, 0.03054502]],\n", "\n", " [[ 0.00941262, 0.1503685 ],\n", " [ 0.06241237, 0.01134505]]],\n", "\n", "\n", " [[[ 0.05755093, -0.04896258],\n", " [-0.06090268, 0.00058957]],\n", "\n", " [[-0.07396784, -0.02307777],\n", " [ 0.03897299, -0.00686639]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJn, _37316dAAAKG, _37316dAAAKI, _37316dAAAKJ], tags={I3,5, X3, Y5}),backend=numpy, dtype=float64, data=array([[[[ 0.36180759, -0.03187881],\n", " [-0.25542223, 0.06983225]],\n", "\n", " [[-0.10285408, -0.02054895],\n", " [-0.05081942, 0.00313918]]],\n", "\n", "\n", " [[[-0.07282155, -0.03523905],\n", " [-0.12222447, 0.01828693]],\n", "\n", " [[ 0.1293401 , 0.01414121],\n", " [ 0.01513924, 0.00513606]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJp, _37316dAAAKI, _37316dAAAKK, _37316dAAAKL], tags={I3,6, X3, Y6}),backend=numpy, dtype=float64, data=array([[[[ 0.26761582, -0.22158602],\n", " [ 0.0147323 , 0.03473957]],\n", "\n", " [[ 0.06817734, 0.1302281 ],\n", " [ 0.01744269, -0.0139232 ]]],\n", "\n", "\n", " [[[-0.07536057, -0.03708032],\n", " [-0.01144359, 0.002353 ]],\n", "\n", " [[-0.04821189, 0.00803018],\n", " [-0.00499257, -0.0023682 ]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJr, _37316dAAAKK, _37316dAAAKM, _37316dAAAKN], tags={I3,7, X3, Y7}),backend=numpy, dtype=float64, data=array([[[[ 0.21619315, 0.14951285],\n", " [-0.01566959, 0.04357976]],\n", "\n", " [[ 0.08413287, -0.01078559],\n", " [-0.01200697, -0.00073091]]],\n", "\n", "\n", " [[[-0.02658611, 0.12333134],\n", " [ 0.01406881, 0.03099051]],\n", "\n", " [[-0.0257352 , -0.00261306],\n", " [ 0.00316624, -0.00129288]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJt, _37316dAAAKM, _37316dAAAKO, _37316dAAAKP], tags={I3,8, X3, Y8}),backend=numpy, dtype=float64, data=array([[[[ 0.36667171, -0.05495506],\n", " [ 0.08344192, 0.04408562]],\n", "\n", " [[-0.03693221, -0.02314976],\n", " [-0.0161005 , 0.01005659]]],\n", "\n", "\n", " [[[ 0.27408859, 0.07276133],\n", " [ 0.09291581, -0.0245793 ]],\n", "\n", " [[-0.04308838, 0.01352286],\n", " [-0.00790995, -0.00875114]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJv, _37316dAAAKO, _37316dAAAKQ, _37316dAAAKR], tags={I3,9, X3, Y9}),backend=numpy, dtype=float64, data=array([[[[ 0.59045746, 0.04636064],\n", " [-0.11833967, 0.20700466]],\n", "\n", " [[-0.02779505, 0.12065856],\n", " [ 0.14995432, 0.02571109]]],\n", "\n", "\n", " [[[ 0.09849826, -0.16027355],\n", " [-0.2172119 , -0.01396007]],\n", "\n", " [[-0.1167861 , -0.01862671],\n", " [ 0.01229073, -0.04367288]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJw, _37316dAAAJy, _37316dAAAKQ, _37316dAAAKS], tags={I3,10, X3, Y10}),backend=numpy, dtype=float64, data=array([[[[ 0.63418901, -0.10404847],\n", " [-0.19100766, -0.21591659]],\n", "\n", " [[ 0.0363976 , -0.06816893],\n", " [ 0.08907923, 0.00365445]]],\n", "\n", "\n", " [[[ 0.01404924, -0.08149983],\n", " [ 0.1231499 , 0.01564842]],\n", "\n", " [[ 0.03284935, -0.00691579],\n", " [-0.00743865, -0.01079014]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAJz, _37316dAAAKT, _37316dAAAKU, _37316dAAAKV], tags={I4,0, X4, Y0}),backend=numpy, dtype=float64, data=array([[[[ 0.20250575, -0.06462916],\n", " [-0.10849261, 0.10513585]],\n", "\n", " [[ 0.13867046, 0.08272814],\n", " [ 0.05489484, 0.01516514]]],\n", "\n", "\n", " [[[-0.05194649, 0.06956005],\n", " [ 0.08173107, -0.05067997]],\n", "\n", " [[ 0.0614995 , 0.02347683],\n", " [ 0.01090369, 0.01263865]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKB, _37316dAAAKT, _37316dAAAKW, _37316dAAAKX], tags={I4,1, X4, Y1}),backend=numpy, dtype=float64, data=array([[[[ 0.46324031, 0.00982179],\n", " [-0.12003976, 0.07310642]],\n", "\n", " [[ 0.07669242, 0.04996774],\n", " [ 0.1660917 , 0.03018067]]],\n", "\n", "\n", " [[[ 0.22383784, -0.0479961 ],\n", " [-0.26089581, 0.01560211]],\n", "\n", " [[-0.09259148, -0.00592371],\n", " [ 0.00875748, -0.01609341]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKD, _37316dAAAKW, _37316dAAAKY, _37316dAAAKZ], tags={I4,2, X4, Y2}),backend=numpy, dtype=float64, data=array([[[[-0.66781742, -0.05965499],\n", " [-0.02512503, -0.15143549]],\n", "\n", " [[-0.16939628, -0.2425419 ],\n", " [-0.30985141, -0.02957983]]],\n", "\n", "\n", " [[[ 0.12093817, -0.21855852],\n", " [-0.3015328 , 0.03633274]],\n", "\n", " [[-0.43588118, 0.01247652],\n", " [ 0.05221163, -0.10083813]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKF, _37316dAAAKY, _37316dAAAKa, _37316dAAAKb], tags={I4,3, X4, Y3}),backend=numpy, dtype=float64, data=array([[[[-0.61671271, 0.01221895],\n", " [ 0.19875139, -0.03719775]],\n", "\n", " [[ 0.06670919, -0.06946693],\n", " [-0.07712867, -0.01317993]]],\n", "\n", "\n", " [[[-0.07881843, 0.03690546],\n", " [ 0.05425396, 0.00416869]],\n", "\n", " [[ 0.0676412 , 0.02891778],\n", " [ 0.0029018 , 0.01171862]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKH, _37316dAAAKa, _37316dAAAKc, _37316dAAAKd], tags={I4,4, X4, Y4}),backend=numpy, dtype=float64, data=array([[[[ 0.535076 , 0.15313008],\n", " [-0.31829387, 0.14657128]],\n", "\n", " [[-0.11826807, -0.0834561 ],\n", " [-0.15566572, 0.03057974]]],\n", "\n", "\n", " [[[-0.12674285, -0.09023896],\n", " [-0.17047696, 0.03378987]],\n", "\n", " [[ 0.07933728, 0.02409729],\n", " [-0.0408514 , 0.01996518]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKJ, _37316dAAAKc, _37316dAAAKe, _37316dAAAKf], tags={I4,5, X4, Y5}),backend=numpy, dtype=float64, data=array([[[[ 0.28771503, 0.09391101],\n", " [ 0.08489292, 0.07440176]],\n", "\n", " [[-0.2617271 , 0.06203064],\n", " [ 0.09211754, 0.00346524]]],\n", "\n", "\n", " [[[ 0.00731438, -0.01711953],\n", " [-0.02024368, -0.00752033]],\n", "\n", " [[-0.07740085, 0.00777569],\n", " [ 0.0151049 , -0.00407445]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKL, _37316dAAAKe, _37316dAAAKg, _37316dAAAKh], tags={I4,6, X4, Y6}),backend=numpy, dtype=float64, data=array([[[[ 0.58056526, -0.02009431],\n", " [-0.02246138, 0.00415134]],\n", "\n", " [[-0.16416619, 0.00596125],\n", " [ 0.01595313, 0.00126547]]],\n", "\n", "\n", " [[[ 0.02782006, -0.0031568 ],\n", " [-0.07652833, -0.01896984]],\n", "\n", " [[-0.01411022, -0.00068719],\n", " [-0.03988384, -0.01037217]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKN, _37316dAAAKg, _37316dAAAKi, _37316dAAAKj], tags={I4,7, X4, Y7}),backend=numpy, dtype=float64, data=array([[[[ 0.36322714, 0.37421032],\n", " [ 0.10366969, 0.11845251]],\n", "\n", " [[ 0.02529268, -0.04517704],\n", " [-0.0610477 , 0.01135912]]],\n", "\n", "\n", " [[[-0.0222668 , -0.04634035],\n", " [-0.02878052, -0.00623954]],\n", "\n", " [[ 0.13559262, -0.0459537 ],\n", " [-0.1392116 , 0.05232568]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKP, _37316dAAAKi, _37316dAAAKk, _37316dAAAKl], tags={I4,8, X4, Y8}),backend=numpy, dtype=float64, data=array([[[[-0.18714169, 0.06481931],\n", " [-0.19114213, -0.05261184]],\n", "\n", " [[ 0.06226674, 0.0700715 ],\n", " [ 0.10861313, 0.00617315]]],\n", "\n", "\n", " [[[ 0.01231194, -0.10508637],\n", " [-0.03695137, 0.01592906]],\n", "\n", " [[ 0.03410127, -0.06010193],\n", " [ 0.01110865, 0.01555867]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKR, _37316dAAAKk, _37316dAAAKm, _37316dAAAKn], tags={I4,9, X4, Y9}),backend=numpy, dtype=float64, data=array([[[[-0.41904755, 0.0406425 ],\n", " [ 0.27001393, -0.07533166]],\n", "\n", " [[-0.10216219, -0.06375106],\n", " [-0.10486073, -0.01213711]]],\n", "\n", "\n", " [[[ 0.07614494, -0.0487077 ],\n", " [-0.14481968, 0.01718261]],\n", "\n", " [[-0.12496066, -0.03316201],\n", " [-0.02441127, -0.01863512]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKS, _37316dAAAKU, _37316dAAAKm, _37316dAAAKo], tags={I4,10, X4, Y10}),backend=numpy, dtype=float64, data=array([[[[-3.51149293e-01, -1.00640550e-02],\n", " [ 1.46824223e-03, 1.13299932e-01]],\n", "\n", " [[-6.25922833e-02, 5.92779772e-02],\n", " [-7.00509607e-02, -1.16916474e-01]]],\n", "\n", "\n", " [[[ 3.72612593e-01, -5.00891844e-02],\n", " [ 6.84052570e-02, 1.62055936e-02]],\n", "\n", " [[ 1.04144306e-01, -3.02797048e-04],\n", " [ 3.34960168e-03, -2.62216497e-02]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKV, _37316dAAAKp, _37316dAAAKq, _37316dAAAKr], tags={I5,0, X5, Y0}),backend=numpy, dtype=float64, data=array([[[[ 0.36748359, -0.21113148],\n", " [-0.03390634, 0.0846886 ]],\n", "\n", " [[ 0.00422683, 0.02300115],\n", " [ 0.01453714, -0.004754 ]]],\n", "\n", "\n", " [[[-0.16934909, -0.08913728],\n", " [-0.09381119, 0.00296741]],\n", "\n", " [[-0.04462534, -0.00307535],\n", " [-0.01273771, -0.00381622]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKX, _37316dAAAKp, _37316dAAAKs, _37316dAAAKt], tags={I5,1, X5, Y1}),backend=numpy, dtype=float64, data=array([[[[ 0.3986457 , 0.08105745],\n", " [-0.05315772, 0.04092106]],\n", "\n", " [[-0.00481879, -0.01610241],\n", " [-0.01834652, 0.00199623]]],\n", "\n", "\n", " [[[-0.03008919, -0.02998243],\n", " [-0.02595362, 0.00084209]],\n", "\n", " [[ 0.0091239 , 0.00128503],\n", " [-0.00193256, 0.00103048]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKZ, _37316dAAAKs, _37316dAAAKu, _37316dAAAKv], tags={I5,2, X5, Y2}),backend=numpy, dtype=float64, data=array([[[[ 5.87603656e-01, -3.07811194e-03],\n", " [ 6.42578926e-02, 4.23847337e-02]],\n", "\n", " [[ 6.42219925e-02, 4.32678887e-02],\n", " [ 3.25689125e-02, -1.98552460e-02]]],\n", "\n", "\n", " [[[ 2.27924001e-01, 4.41538054e-02],\n", " [ 5.14920982e-02, -9.02627905e-03]],\n", "\n", " [[ 5.20272668e-02, -9.31532748e-03],\n", " [ 3.91711265e-04, 8.83112915e-03]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKb, _37316dAAAKu, _37316dAAAKw, _37316dAAAKx], tags={I5,3, X5, Y3}),backend=numpy, dtype=float64, data=array([[[[ 0.46348791, 0.06103484],\n", " [-0.05704812, 0.06720346]],\n", "\n", " [[-0.00654273, 0.06487136],\n", " [ 0.05373356, 0.01595238]]],\n", "\n", "\n", " [[[ 0.09792342, -0.04552591],\n", " [-0.05909355, -0.00082262]],\n", "\n", " [[-0.04276741, -0.00501089],\n", " [ 0.00576401, -0.0060414 ]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKd, _37316dAAAKw, _37316dAAAKy, _37316dAAAKz], tags={I5,4, X5, Y4}),backend=numpy, dtype=float64, data=array([[[[ 0.64848307, 0.07378673],\n", " [-0.01283887, 0.08820492]],\n", "\n", " [[-0.06050588, -0.07523252],\n", " [-0.12308569, -0.01043254]]],\n", "\n", "\n", " [[[ 0.07539 , -0.06473929],\n", " [-0.13481269, 0.0078915 ]],\n", "\n", " [[ 0.0945894 , 0.0010021 ],\n", " [-0.01962137, 0.01255123]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKf, _37316dAAAKy, _37316dAAALA, _37316dAAALB], tags={I5,5, X5, Y5}),backend=numpy, dtype=float64, data=array([[[[ 0.57077863, 0.53867794],\n", " [ 0.02152594, 0.13076893]],\n", "\n", " [[-0.09521551, -0.19652606],\n", " [-0.09009905, -0.02177763]]],\n", "\n", "\n", " [[[ 0.05659805, -0.06624183],\n", " [-0.09490991, 0.01300829]],\n", "\n", " [[ 0.08427465, -0.00392442],\n", " [-0.06450925, 0.01933667]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKh, _37316dAAALA, _37316dAAALC, _37316dAAALD], tags={I5,6, X5, Y6}),backend=numpy, dtype=float64, data=array([[[[ 0.55540162, -0.05339212],\n", " [-0.04332614, 0.08074506]],\n", "\n", " [[ 0.05001854, 0.08070859],\n", " [ 0.09133093, -0.01064354]]],\n", "\n", "\n", " [[[-0.01830879, -0.01766884],\n", " [-0.02020803, 0.00140848]],\n", "\n", " [[-0.02581011, -0.00155754],\n", " [-0.00248417, -0.00290622]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKj, _37316dAAALC, _37316dAAALE, _37316dAAALF], tags={I5,7, X5, Y7}),backend=numpy, dtype=float64, data=array([[[[ 0.52664787, -0.18732973],\n", " [ 0.12605647, 0.11776853]],\n", "\n", " [[ 0.2263666 , 0.0724592 ],\n", " [ 0.20418151, 0.0102925 ]]],\n", "\n", "\n", " [[[-0.08681568, 0.22807538],\n", " [ 0.17257492, -0.07139721]],\n", "\n", " [[ 0.14458967, -0.02049547],\n", " [ 0.0649414 , 0.02417798]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKl, _37316dAAALE, _37316dAAALG, _37316dAAALH], tags={I5,8, X5, Y8}),backend=numpy, dtype=float64, data=array([[[[ 0.51026383, 0.05571215],\n", " [-0.04275579, 0.03566463]],\n", "\n", " [[-0.27570935, 0.12017413],\n", " [ 0.05314472, -0.00208731]]],\n", "\n", "\n", " [[[-0.03326614, -0.24323047],\n", " [-0.04511189, -0.02972174]],\n", "\n", " [[-0.16049439, -0.05525349],\n", " [ 0.00590523, -0.0155319 ]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKn, _37316dAAALG, _37316dAAALI, _37316dAAALJ], tags={I5,9, X5, Y9}),backend=numpy, dtype=float64, data=array([[[[ 0.54170031, 0.37490129],\n", " [-0.0305392 , 0.02744323]],\n", "\n", " [[-0.02673389, -0.03488713],\n", " [-0.01232233, 0.00710475]]],\n", "\n", "\n", " [[[-0.1550539 , -0.12998383],\n", " [-0.01039592, 0.00385054]],\n", "\n", " [[ 0.01410698, 0.00758785],\n", " [-0.00263135, 0.00183774]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKo, _37316dAAAKq, _37316dAAALI, _37316dAAALK], tags={I5,10, X5, Y10}),backend=numpy, dtype=float64, data=array([[[[-0.4660264 , 0.17819736],\n", " [ 0.04850352, -0.03579337]],\n", "\n", " [[-0.01143884, 0.06979568],\n", " [ 0.0133986 , -0.00130487]]],\n", "\n", "\n", " [[[-0.02477123, -0.1012939 ],\n", " [-0.01809136, -0.00118078]],\n", "\n", " [[ 0.07779708, 0.04198349],\n", " [ 0.00528842, 0.00550782]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKr, _37316dAAALL, _37316dAAALM, _37316dAAALN], tags={I6,0, X6, Y0}),backend=numpy, dtype=float64, data=array([[[[ 0.37781729, 0.09196471],\n", " [-0.24144433, 0.0550542 ]],\n", "\n", " [[-0.09580583, 0.09783885],\n", " [ 0.1168373 , 0.00876711]]],\n", "\n", "\n", " [[[-0.03374765, 0.09803845],\n", " [ 0.07033706, 0.01501386]],\n", "\n", " [[ 0.06047096, 0.05780974],\n", " [-0.01886527, 0.01689473]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKt, _37316dAAALL, _37316dAAALO, _37316dAAALP], tags={I6,1, X6, Y1}),backend=numpy, dtype=float64, data=array([[[[-0.18601884, 0.00744625],\n", " [-0.1229705 , -0.08719113]],\n", "\n", " [[ 0.03338103, -0.01697554],\n", " [-0.1298826 , -0.0804201 ]]],\n", "\n", "\n", " [[[ 0.26023008, -0.03091223],\n", " [-0.02710116, -0.00391968]],\n", "\n", " [[-0.08050711, 0.00835121],\n", " [-0.00339212, -0.00623271]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKv, _37316dAAALO, _37316dAAALQ, _37316dAAALR], tags={I6,2, X6, Y2}),backend=numpy, dtype=float64, data=array([[[[-0.6065955 , 0.2082066 ],\n", " [ 0.18428689, -0.06833295]],\n", "\n", " [[-0.01883604, -0.05316203],\n", " [-0.03876437, -0.0287145 ]]],\n", "\n", "\n", " [[[-0.05024137, 0.02415698],\n", " [ 0.02042069, -0.00257696]],\n", "\n", " [[ 0.05898774, 0.05665989],\n", " [ 0.03945797, 0.04094388]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKx, _37316dAAALQ, _37316dAAALS, _37316dAAALT], tags={I6,3, X6, Y3}),backend=numpy, dtype=float64, data=array([[[[ 0.52924483, 0.10839215],\n", " [ 0.24042269, 0.16561542]],\n", "\n", " [[-0.10541152, 0.09975846],\n", " [ 0.13142661, 0.00389571]]],\n", "\n", "\n", " [[[ 0.01316863, -0.07536625],\n", " [-0.1093703 , -0.01960546]],\n", "\n", " [[-0.12290333, 0.03026757],\n", " [ 0.02608892, -0.02160997]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAAKz, _37316dAAALS, _37316dAAALU, _37316dAAALV], tags={I6,4, X6, Y4}),backend=numpy, dtype=float64, data=array([[[[-0.61154449, -0.10180592],\n", " [-0.17345302, -0.14821452]],\n", "\n", " [[ 0.0403607 , -0.1546106 ],\n", " [-0.15841081, 0.02035491]]],\n", "\n", "\n", " [[[-0.03757483, -0.07034373],\n", " [-0.07813398, -0.0049065 ]],\n", "\n", " [[-0.08873887, 0.02498146],\n", " [ 0.01668665, -0.02411221]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAALB, _37316dAAALU, _37316dAAALW, _37316dAAALX], tags={I6,5, X6, Y5}),backend=numpy, dtype=float64, data=array([[[[-0.68217903, 0.24211339],\n", " [ 0.05002385, -0.16206884]],\n", "\n", " [[-0.2414601 , -0.17534055],\n", " [-0.19465214, -0.02973147]]],\n", "\n", "\n", " [[[ 0.14152137, -0.22779164],\n", " [-0.15482889, 0.05241892]],\n", "\n", " [[-0.21119227, -0.01602613],\n", " [-0.05852769, -0.04054282]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAALD, _37316dAAALW, _37316dAAALY, _37316dAAALZ], tags={I6,6, X6, Y6}),backend=numpy, dtype=float64, data=array([[[[ 5.97464112e-01, 1.58776459e-01],\n", " [ 4.50772950e-02, 5.60748847e-02]],\n", "\n", " [[-7.38237488e-02, 1.30279261e-01],\n", " [ 3.76725912e-02, -2.79544705e-04]]],\n", "\n", "\n", " [[[ 2.64921170e-03, 1.01564832e-01],\n", " [ 2.92961054e-02, 4.72262182e-03]],\n", "\n", " [[ 9.85820494e-02, -2.25444564e-02],\n", " [-6.62345787e-03, 7.09027301e-03]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAALF, _37316dAAALY, _37316dAAALa, _37316dAAALb], tags={I6,7, X6, Y7}),backend=numpy, dtype=float64, data=array([[[[ 0.28845908, -0.0149676 ],\n", " [ 0.10982246, 0.13497337]],\n", "\n", " [[-0.07478816, 0.0240455 ],\n", " [ 0.01838571, 0.00696315]]],\n", "\n", "\n", " [[[ 0.06082317, -0.03979921],\n", " [-0.0619948 , -0.04778425]],\n", "\n", " [[-0.02797569, 0.00564098],\n", " [-0.00091568, -0.00437326]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAALH, _37316dAAALa, _37316dAAALc, _37316dAAALd], tags={I6,8, X6, Y8}),backend=numpy, dtype=float64, data=array([[[[ 0.44830217, 0.08220046],\n", " [-0.20130782, 0.05385215]],\n", "\n", " [[-0.07147813, 0.097765 ],\n", " [ 0.10173515, 0.02887353]]],\n", "\n", "\n", " [[[-0.19634546, 0.06407479],\n", " [ 0.1510261 , 0.01022673]],\n", "\n", " [[ 0.10808912, 0.03742267],\n", " [-0.0374801 , 0.01893183]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAALJ, _37316dAAALc, _37316dAAALe, _37316dAAALf], tags={I6,9, X6, Y9}),backend=numpy, dtype=float64, data=array([[[[ 0.52776409, -0.10860899],\n", " [ 0.10881984, 0.05736085]],\n", "\n", " [[ 0.03129782, 0.20042315],\n", " [ 0.04539841, -0.01479428]]],\n", "\n", "\n", " [[[ 0.15835144, 0.23380681],\n", " [ 0.08280304, -0.00622158]],\n", "\n", " [[ 0.13947341, -0.12731282],\n", " [ 0.01019323, 0.02383274]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAALK, _37316dAAALM, _37316dAAALe, _37316dAAALg], tags={I6,10, X6, Y10}),backend=numpy, dtype=float64, data=array([[[[ 0.70729102, 0.04166257],\n", " [-0.06230251, -0.02479038]],\n", "\n", " [[-0.02039554, -0.05486705],\n", " [ 0.04941599, -0.00385298]]],\n", "\n", "\n", " [[[ 0.1347755 , 0.07804456],\n", " [-0.07407909, 0.00124331]],\n", "\n", " [[-0.16195061, 0.01837665],\n", " [-0.01050547, 0.00805247]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAALN, _37316dAAALh, _37316dAAALi, _37316dAAALj], tags={I7,0, X7, Y0}),backend=numpy, dtype=float64, data=array([[[[ 0.35565402, 0.01526732],\n", " [ 0.12569879, 0.03761397]],\n", "\n", " [[ 0.06843451, 0.02168376],\n", " [ 0.12093485, 0.01475215]]],\n", "\n", "\n", " [[[ 0.22046639, -0.03101022],\n", " [-0.13096777, 0.00709204]],\n", "\n", " [[-0.07911895, 0.00453658],\n", " [ 0.01297888, -0.00518762]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAALP, _37316dAAALh, _37316dAAALk, _37316dAAALl], tags={I7,1, X7, Y1}),backend=numpy, dtype=float64, data=array([[[[ 0.56022521, 0.12392472],\n", " [ 0.07051809, 0.12046919]],\n", "\n", " [[-0.1605783 , 0.08041335],\n", " [ 0.13325813, -0.01523627]]],\n", "\n", "\n", " [[[ 0.0584533 , 0.06882948],\n", " [ 0.08135598, 0.02187251]],\n", "\n", " [[ 0.06505049, -0.00512656],\n", " [-0.0176467 , 0.01074036]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAALR, _37316dAAALk, _37316dAAALm, _37316dAAALn], tags={I7,2, X7, Y2}),backend=numpy, dtype=float64, data=array([[[[ 0.47743956, 0.17307068],\n", " [ 0.02094679, 0.09743521]],\n", "\n", " [[ 0.13219649, -0.12858849],\n", " [-0.0910938 , 0.00304005]]],\n", "\n", "\n", " [[[ 0.02041941, 0.1726717 ],\n", " [ 0.0916196 , 0.02658126]],\n", "\n", " [[-0.17258775, 0.01047082],\n", " [ 0.03251927, -0.02531658]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAALT, _37316dAAALm, _37316dAAALo, _37316dAAALp], tags={I7,3, X7, Y3}),backend=numpy, dtype=float64, data=array([[[[ 0.49041746, 0.21960886],\n", " [ 0.10011781, 0.09561831]],\n", "\n", " [[-0.14078477, 0.11618118],\n", " [ 0.01918695, 0.00293226]]],\n", "\n", "\n", " [[[-0.04196996, 0.12227326],\n", " [ 0.02915589, 0.01573023]],\n", "\n", " [[ 0.14517801, -0.06767997],\n", " [-0.00584606, 0.00581258]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAALV, _37316dAAALo, _37316dAAALq, _37316dAAALr], tags={I7,4, X7, Y4}),backend=numpy, dtype=float64, data=array([[[[ 0.74497448, 0.05537579],\n", " [ 0.12890593, 0.09751741]],\n", "\n", " [[-0.08493561, -0.03946369],\n", " [-0.03300069, -0.00181023]]],\n", "\n", "\n", " [[[-0.03678784, 0.18434226],\n", " [ 0.09692919, -0.0573427 ]],\n", "\n", " [[-0.03474614, 0.01262492],\n", " [ 0.00238468, -0.00881828]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAALX, _37316dAAALq, _37316dAAALs, _37316dAAALt], tags={I7,5, X7, Y5}),backend=numpy, dtype=float64, data=array([[[[ 0.59658488, -0.1062297 ],\n", " [-0.20832781, 0.25133553]],\n", "\n", " [[-0.12527301, 0.1231205 ],\n", " [ 0.16045363, -0.03438561]]],\n", "\n", "\n", " [[[-0.10548788, -0.19294504],\n", " [-0.20827294, -0.08306504]],\n", "\n", " [[-0.09318933, -0.03027735],\n", " [-0.02171875, -0.04781008]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAALZ, _37316dAAALs, _37316dAAALu, _37316dAAALv], tags={I7,6, X7, Y6}),backend=numpy, dtype=float64, data=array([[[[ 0.57695607, -0.01627723],\n", " [ 0.15826783, 0.10861878]],\n", "\n", " [[-0.36129785, 0.15213524],\n", " [ 0.15579536, 0.03397372]]],\n", "\n", "\n", " [[[-0.19072153, 0.10155954],\n", " [ 0.12040359, 0.03320355]],\n", "\n", " [[ 0.33623134, -0.05688994],\n", " [ 0.00710341, 0.02923739]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAALb, _37316dAAALu, _37316dAAALw, _37316dAAALx], tags={I7,7, X7, Y7}),backend=numpy, dtype=float64, data=array([[[[ 0.3535381 , -0.02209954],\n", " [ 0.09692126, 0.0374012 ]],\n", "\n", " [[ 0.04249562, -0.03118068],\n", " [-0.05552238, -0.01023311]]],\n", "\n", "\n", " [[[ 0.17083945, -0.05434597],\n", " [-0.05599687, -0.00447446]],\n", "\n", " [[ 0.08802764, -0.01337431],\n", " [ 0.00559519, 0.00524791]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAALd, _37316dAAALw, _37316dAAALy, _37316dAAALz], tags={I7,8, X7, Y8}),backend=numpy, dtype=float64, data=array([[[[ 0.62505861, -0.13213081],\n", " [ 0.15340105, 0.19494906]],\n", "\n", " [[ 0.0781593 , -0.08466473],\n", " [-0.15532952, -0.0273484 ]]],\n", "\n", "\n", " [[[-0.0755034 , 0.07909483],\n", " [ 0.14315479, 0.02437494]],\n", "\n", " [[-0.05789665, 0.00840272],\n", " [-0.02403284, -0.02096917]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAALf, _37316dAAALy, _37316dAAAMA, _37316dAAAMB], tags={I7,9, X7, Y9}),backend=numpy, dtype=float64, data=array([[[[ 0.3359095 , -0.03122322],\n", " [ 0.0844369 , 0.03516463]],\n", "\n", " [[ 0.17404611, 0.04730931],\n", " [ 0.303247 , 0.03158615]]],\n", "\n", "\n", " [[[-0.26222717, 0.07653167],\n", " [ 0.1472724 , -0.01647035]],\n", "\n", " [[ 0.17879517, -0.01305106],\n", " [ 0.05952799, 0.01946836]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAALg, _37316dAAALi, _37316dAAAMA, _37316dAAAMC], tags={I7,10, X7, Y10}),backend=numpy, dtype=float64, data=array([[[[-0.3132323 , -0.04061483],\n", " [-0.14966935, -0.1221432 ]],\n", "\n", " [[-0.0906352 , -0.10585569],\n", " [-0.1979514 , -0.08769842]]],\n", "\n", "\n", " [[[ 0.10885222, -0.04751576],\n", " [-0.0492667 , 0.00815774]],\n", "\n", " [[-0.06127139, 0.01451961],\n", " [ 0.00763953, -0.01139416]]]])
Tensor(shape=(2, 2, 2, 2), inds=[_37316dAAALj, _37316dAAAMD, _37316dAAAME, _37316dAAAMF], tags={I8,0, X8, Y0}),backend=numpy, dtype=float64, data=array([[[[ 0.2467155 , 0.05177836],\n", " [ 0.18050348, 0.10934369]],\n", "\n", " [[-0.15430265, 0.04516107],\n", " [ 0.0571187 , 0.00025098]]],\n", "\n", "\n", " [[[ 0.00043731, -0.01168632],\n", " [-0.02550259, -0.01023139]],\n", "\n", " [[-0.02829428, 0.00548443],\n", " [ 0.00434225, -0.00242943]]]])

...

" ], "text/plain": [ "TensorNetwork2D(tensors=110, indices=220, Lx=10, Ly=11, max_bond=2)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tn.view_as_(\n", " qtn.TensorNetwork2D,\n", " site_tag_id=site_tag_id,\n", " x_tag_id=x_tag_id,\n", " y_tag_id=y_tag_id,\n", " Lx=Lx,\n", " Ly=Ly,\n", ")" ] }, { "cell_type": "markdown", "id": "b4651d45-18c2-478c-beae-95e814500fb9", "metadata": {}, "source": [ "Now we can call 2D specific methods. For this PBC contraction for example, the two following methods (docstrings: [HOTRG](quimb.tensor.TensorNetwork2D.contract_hotrg) and [CTMRG](quimb.tensor.TensorNetwork2D.contract_ctmrg)) are supported:" ] }, { "cell_type": "code", "execution_count": 16, "id": "c6fe2b81-a21e-4604-a6ab-82633106e7cd", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(3.931679435391318e-38)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tn.contract_hotrg(max_bond=8)" ] }, { "cell_type": "code", "execution_count": 17, "id": "a68cd28d-53ad-4770-a079-6df9e9e98480", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(3.931773203487969e-38)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tn.contract_ctmrg(max_bond=16)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3" } }, "nbformat": 4, "nbformat_minor": 5 }