14. Converting a hyper TN for approximate contraction¶
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 instance, that supports 2D specific manual approximate contraction schemes.
%config InlineBackend.figure_formats = ['svg']
import quimb as qu
import quimb.tensor as qtn
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.
Lx = 10
Ly = 11
qu.seed_rand(42)
edges = qtn.edges_2d_square(Lx, Ly, cyclic=True)
sites = sorted({coo for edge in edges for coo in edge})
# we'll need some convention for naming tags
site_tag_id = "I{},{}"
site_ind_id = "s{},{}"
htn = qtn.TensorNetwork()
for cooa, coob in edges:
htn |= qtn.rand_tensor(
# assume local dimension of size 2
shape=[2, 2],
inds=[site_ind_id.format(*cooa), site_ind_id.format(*coob)],
tags=[site_tag_id.format(*cooa), site_tag_id.format(*coob)],
# for contractbility use positive uniform distribution
dist="uniform",
)
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:
htn.draw(htn.tags, layout="neato")
14.1. Fully automatic to general TN:¶
The following method works for arbitrary geometry, producing a standard TensorNetwork, but with no guarantees on its structure, other than that there are no hyper indices.
First we ‘resolve’ each hyper index into an actual tensor (or optionally tensor network), using the hyperinds_resolve method:
tn = htn.hyperinds_resolve()
tn.draw(tn.tags, layout="neato")
Note
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.
We can then ‘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:
tn.rank_simplify_()
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.], [0., 0.]], [[0., 0.], [0., 0.]]], [[[0., 0.], [0., 0.]], [[0., 0.], [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], [0.01417084, 0.16492491]], [[0.19622399, 0.18743906], [0.14122859, 0.18480437]]], [[[0.01065057, 0.24721241], [0.00766555, 0.24373753]], [[0.10614505, 0.2770105 ], [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. ], [0. , 0.35301803]], [[0.2210163 , 0. ], [0. , 0.37892683]]], [[[0.2411676 , 0. ], [0. , 0.25861065]], [[0.20086046, 0. ], [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. ], [0. , 0.57598331]], [[0.3768877 , 0. ], [0. , 0.84605001]]], [[[0.20391932, 0. ], [0. , 0.66129169]], [[0.1395698 , 0. ], [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. ], [0. , 0.45358259]], [[0.09629392, 0. ], [0. , 0.42758297]]], [[[0.17637696, 0. ], [0. , 0.42925506]], [[0.11567479, 0. ], [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. ], [0. , 0.19047351]], [[0.25097737, 0. ], [0. , 0.12007771]]], [[[0.33623491, 0. ], [0. , 0.41691681]], [[0.30051028, 0. ], [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. ], [0. , 0.23432309]], [[0.11314396, 0. ], [0. , 0.39261678]]], [[[0.58975718, 0. ], [0. , 0.02435448]], [[0.19553762, 0. ], [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. ], [0. , 0.40049746]], [[0.43852377, 0. ], [0. , 0.23088466]]], [[[0.20527988, 0. ], [0. , 0.4136553 ]], [[0.11465166, 0. ], [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. ], [0. , 0.01894532]], [[0.08548934, 0. ], [0. , 0.07118638]]], [[[0.37799549, 0. ], [0. , 0.07549824]], [[0.04528593, 0. ], [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. ], [0. , 0.65470103]], [[0.11656246, 0. ], [0. , 0.34319103]]], [[[0.01685468, 0. ], [0. , 0.53218604]], [[0.34183375, 0. ], [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. ], [0. , 0.27234324]], [[0.08844251, 0. ], [0. , 0.03833531]]], [[[0.17167276, 0. ], [0. , 0.4842305 ]], [[0.08831901, 0. ], [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. ], [0. , 0. ]], [[0. , 0. ], [0. , 0.58617687]]], [[[0.86465505, 0. ], [0. , 0. ]], [[0. , 0. ], [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 ], [0.12402443, 0.03934484]], [[0.12061582, 0.03625626], [0.06185695, 0.12290604]]], [[[0.17216508, 0.01206627], [0.08829362, 0.04090376]], [[0.08586702, 0.03769281], [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. ], [0. , 0.03029739]], [[0.10941918, 0. ], [0. , 0.20854388]]], [[[0.05830505, 0. ], [0. , 0.0641957 ]], [[0.01211386, 0. ], [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. ], [0. , 0.03044964]], [[0.16399324, 0. ], [0. , 0.07158476]]], [[[0.09990355, 0. ], [0. , 0.26246253]], [[0.5285554 , 0. ], [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. ], [0. , 0.10559532]], [[0.1638309 , 0. ], [0. , 0.21906133]]], [[[0.07807534, 0. ], [0. , 0.08527429]], [[0.4575568 , 0. ], [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. ], [0. , 0.01856209]], [[0.34653052, 0. ], [0. , 0.23964822]]], [[[0.53030002, 0. ], [0. , 0.04783304]], [[0.25541953, 0. ], [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. ], [0. , 0.60644787]], [[0.11018716, 0. ], [0. , 0.64136459]]], [[[0.39314936, 0. ], [0. , 0.33180147]], [[0.2528588 , 0. ], [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. ], [0. , 0.0479586 ]], [[0.61157316, 0. ], [0. , 0.10791037]]], [[[0.17341925, 0. ], [0. , 0.16066881]], [[0.43077649, 0. ], [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. ], [0. , 0.03387727]], [[0.66285945, 0. ], [0. , 0.07468555]]], [[[0.68958418, 0. ], [0. , 0.07983275]], [[0.63195502, 0. ], [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. ], [0. , 0.04468245]], [[0.33461375, 0. ], [0. , 0.01390354]]], [[[0.22715019, 0. ], [0. , 0.27774194]], [[0.29635474, 0. ], [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. ], [0. , 0.03069845]], [[0.303242 , 0. ], [0. , 0.12129391]]], [[[0.44422775, 0. ], [0. , 0.0875716 ]], [[0.57494022, 0. ], [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. ], [0. , 0. ]], [[0. , 0. ], [0. , 0.226417 ]]], [[[0.81500797, 0. ], [0. , 0. ]], [[0. , 0. ], [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], [0.47472187, 0.06460346]], [[0.20524448, 0.00868738], [0.3264129 , 0.0116905 ]]], [[[0.18317428, 0.19439693], [0.29131331, 0.2615976 ]], [[0.12594838, 0.03517765], [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. ], [0. , 0.05438355]], [[0.43484998, 0. ], [0. , 0.09300723]]], [[[0.35658549, 0. ], [0. , 0.25813133]], [[0.21261401, 0. ], [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], [0.00000000e+00, 5.47184256e-04]], [[2.25748535e-01, 0.00000000e+00], [0.00000000e+00, 4.36443509e-02]]], [[[2.24479985e-01, 0.00000000e+00], [0.00000000e+00, 7.66440673e-03]], [[3.06950923e-01, 0.00000000e+00], [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. ], [0. , 0.25653057]], [[0.56046661, 0. ], [0. , 0.32707117]]], [[[0.26593368, 0. ], [0. , 0.05901136]], [[0.29900615, 0. ], [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. ], [0. , 0.08935641]], [[0.51610541, 0. ], [0. , 0.22585123]]], [[[0.33858474, 0. ], [0. , 0.08994194]], [[0.31751327, 0. ], [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. ], [0. , 0.09713352]], [[0.06941306, 0. ], [0. , 0.12493573]]], [[[0.45546521, 0. ], [0. , 0.72067705]], [[0.08456618, 0. ], [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. ], [0. , 0.0046134 ]], [[0.38677087, 0. ], [0. , 0.1923458 ]]], [[[0.42479383, 0. ], [0. , 0.00736817]], [[0.44926327, 0. ], [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. ], [0. , 0.01417059]], [[0.17090383, 0. ], [0. , 0.11962981]]], [[[0.37018252, 0. ], [0. , 0.01828364]], [[0.45789318, 0. ], [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. ], [0. , 0.0602687 ]], [[0.00230986, 0. ], [0. , 0.89336007]]], [[[0.08434693, 0. ], [0. , 0.0146159 ]], [[0.00189811, 0. ], [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. ], [0. , 0.01432119]], [[0.11602825, 0. ], [0. , 0.02571209]]], [[[0.31028946, 0. ], [0. , 0.07945127]], [[0.14465545, 0. ], [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. ], [0. , 0. ]], [[0. , 0. ], [0. , 0.79579357]]], [[[0.05858071, 0. ], [0. , 0. ]], [[0. , 0. ], [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], [0.00327266, 0.00559244]], [[0.06413039, 0.04460987], [0.00566583, 0.00518942]]], [[[0.03635689, 0.32821905], [0.00321208, 0.03818138]], [[0.06294334, 0.30456607], [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. ], [0. , 0.32703235]], [[0.4816507 , 0. ], [0. , 0.3044519 ]]], [[[0.71553645, 0. ], [0. , 0.37375764]], [[0.7526993 , 0. ], [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. ], [0. , 0.1174236 ]], [[0.15038912, 0. ], [0. , 0.47466338]]], [[[0.28290785, 0. ], [0. , 0.00216719]], [[0.26064869, 0. ], [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. ], [0. , 0.00485486]], [[0.12506385, 0. ], [0. , 0.00436493]]], [[[0.34700909, 0. ], [0. , 0.6354464 ]], [[0.1248541 , 0. ], [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. ], [0. , 0.28200918]], [[0.04311255, 0. ], [0. , 0.18853595]]], [[[0.54863139, 0. ], [0. , 0.7451087 ]], [[0.12074473, 0. ], [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. ], [0. , 0.15078731]], [[0.37104828, 0. ], [0. , 0.05073517]]], [[[0.73623251, 0. ], [0. , 0.15607704]], [[0.83606075, 0. ], [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. ], [0. , 0.45534 ]], [[0.49127367, 0. ], [0. , 0.35971314]]], [[[0.4913981 , 0. ], [0. , 0.35189262]], [[0.70842833, 0. ], [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. ], [0. , 0.16069384]], [[0.04197682, 0. ], [0. , 0.09977424]]], [[[0.4001926 , 0. ], [0. , 0.32462865]], [[0.14082794, 0. ], [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. ], [0. , 0.18652377]], [[0.21517034, 0. ], [0. , 0.13833783]]], [[[0.38555619, 0. ], [0. , 0.26786933]], [[0.15356003, 0. ], [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. ], [0. , 0.22105937]], [[0.35088724, 0. ], [0. , 0.31997477]]], [[[0.39212912, 0. ], [0. , 0.32130613]], [[0.60627533, 0. ], [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. ], [0. , 0. ]], [[0. , 0. ], [0. , 0.6625001 ]]], [[[0.39593194, 0. ], [0. , 0. ]], [[0. , 0. ], [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], [0.09781036, 0.07371886]], [[0.00413726, 0.05294092], [0.16769334, 0.02860175]]], [[[0.00160792, 0.34923446], [0.0651729 , 0.18867667]], [[0.00275674, 0.13549743], [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. ], [0. , 0.05596665]], [[0.05430324, 0. ], [0. , 0.1757446 ]]], [[[0.08843934, 0. ], [0. , 0.14958775]], [[0.04142891, 0. ], [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. ], [0. , 0.15770445]], [[0.35264511, 0. ], [0. , 0.02523343]]], [[[0.02699552, 0. ], [0. , 0.09924406]], [[0.02716168, 0. ], [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. ], [0. , 0.07877969]], [[0.02566338, 0. ], [0. , 0.00635111]]], [[[0.01000305, 0. ], [0. , 0.04365211]], [[0.44059325, 0. ], [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. ], [0. , 0.2026922 ]], [[0.00606797, 0. ], [0. , 0.43347381]]], [[[0.09880333, 0. ], [0. , 0.02986218]], [[0.10409138, 0. ], [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. ], [0. , 0.09715009]], [[0.06341125, 0. ], [0. , 0.32262083]]], [[[0.64184805, 0. ], [0. , 0.06574332]], [[0.04908355, 0. ], [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. ], [0. , 0.29491981]], [[0.04848149, 0. ], [0. , 0.21213374]]], [[[0.58663895, 0. ], [0. , 0.74981312]], [[0.71469421, 0. ], [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. ], [0. , 0.24394629]], [[0.00887929, 0. ], [0. , 0.28650723]]], [[[0.21411055, 0. ], [0. , 0.38802084]], [[0.02829698, 0. ], [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. ], [0. , 0.01783725]], [[0.07517378, 0. ], [0. , 0.08005207]]], [[[0.17987384, 0. ], [0. , 0.12082297]], [[0.02211049, 0. ], [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. ], [0. , 0.04552327]], [[0.21844291, 0. ], [0. , 0.42699905]]], [[[0.12101118, 0. ], [0. , 0.00855001]], [[0.20442884, 0. ], [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. ], [0. , 0. ]], [[0. , 0. ], [0. , 0.12673324]]], [[[0.35060575, 0. ], [0. , 0. ]], [[0. , 0. ], [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], [0.26478008, 0.2046741 ]], [[0.01866919, 0.22314817], [0.19802302, 0.12893852]]], [[[0.02848814, 0.31095835], [0.30217202, 0.17967663]], [[0.02130564, 0.19589441], [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. ], [0. , 0.43078503]], [[0.02358699, 0. ], [0. , 0.40852314]]], [[[0.80146272, 0. ], [0. , 0.6146165 ]], [[0.39953368, 0. ], [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. ], [0. , 0.03038818]], [[0.33928484, 0. ], [0. , 0.03765741]]], [[[0.06024266, 0. ], [0. , 0.18395781]], [[0.08769735, 0. ], [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. ], [0. , 0.25105343]], [[0.64967303, 0. ], [0. , 0.21721365]]], [[[0.03699147, 0. ], [0. , 0.14586692]], [[0.03641773, 0. ], [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. ], [0. , 0.37782011]], [[0.02309821, 0. ], [0. , 0.26336123]]], [[[0.08984861, 0. ], [0. , 0.10679084]], [[0.00958716, 0. ], [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. ], [0. , 0.85499264]], [[0.0732575 , 0. ], [0. , 0.31384392]]], [[[0.13440631, 0. ], [0. , 0.17848867]], [[0.09467505, 0. ], [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. ], [0. , 0.04349857]], [[0.13017446, 0. ], [0. , 0.19616064]]], [[[0.2813531 , 0. ], [0. , 0.02121143]], [[0.14001137, 0. ], [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. ], [0. , 0.01783015]], [[0.05081785, 0. ], [0. , 0.03472296]]], [[[0.21392341, 0. ], [0. , 0.23345127]], [[0.02640468, 0. ], [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. ], [0. , 0.11164972]], [[0.90473446, 0. ], [0. , 0.03934138]]], [[[0.12952685, 0. ], [0. , 0.16513403]], [[0.58208991, 0. ], [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. ], [0. , 0.51260271]], [[0.05369015, 0. ], [0. , 0.47256939]]], [[[0.01113416, 0. ], [0. , 0.7559372 ]], [[0.17399847, 0. ], [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. ], [0. , 0. ]], [[0. , 0. ], [0. , 0.60415853]]], [[[0.33694845, 0. ], [0. , 0. ]], [[0. , 0. ], [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], [0.24937398, 0.20674807]], [[0.42808156, 0.15696338], [0.27987778, 0.09504851]]], [[[0.4530231 , 0.20912295], [0.29618445, 0.12663351]], [[0.50843756, 0.09614031], [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. ], [0. , 0.08658708]], [[0.04130601, 0. ], [0. , 0.20495103]]], [[[0.17975861, 0. ], [0. , 0.36432361]], [[0.01431262, 0. ], [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. ], [0. , 0.08051288]], [[0.01196388, 0. ], [0. , 0.18222752]]], [[[0.08052174, 0. ], [0. , 0.02332862]], [[0.02167486, 0. ], [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. ], [0. , 0.10392522]], [[0.52167785, 0. ], [0. , 0.10909228]]], [[[0.48331436, 0. ], [0. , 0.01980534]], [[0.63734065, 0. ], [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. ], [0. , 0.19344254]], [[0.1170521 , 0. ], [0. , 0.07960765]]], [[[0.15905561, 0. ], [0. , 0.32175942]], [[0.07803001, 0. ], [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. ], [0. , 0.04756834]], [[0.17480942, 0. ], [0. , 0.01205076]]], [[[0.1271354 , 0. ], [0. , 0.15668426]], [[0.29092544, 0. ], [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. ], [0. , 0.26820763]], [[0.09558302, 0. ], [0. , 0.33799144]]], [[[0.14604625, 0. ], [0. , 0.13280802]], [[0.43492059, 0. ], [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. ], [0. , 0.34353984]], [[0.21277054, 0. ], [0. , 0.08005 ]]], [[[0.00850977, 0. ], [0. , 0.00378069]], [[0.0082455 , 0. ], [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. ], [0. , 0.1257628 ]], [[0.23585119, 0. ], [0. , 0.41045086]]], [[[0.64840819, 0. ], [0. , 0.06818021]], [[0.83009783, 0. ], [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. ], [0. , 0.48151635]], [[0.27665375, 0. ], [0. , 0.85439091]]], [[[0.00867393, 0. ], [0. , 0.05393989]], [[0.37799482, 0. ], [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. ], [0. , 0. ]], [[0. , 0. ], [0. , 0.24740919]]], [[[0.78029186, 0. ], [0. , 0. ]], [[0. , 0. ], [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 ], [0.0289815 , 0.03532978]], [[0.20064867, 0.18597707], [0.05153748, 0.05550073]]], [[[0.05601466, 0.05891469], [0.0385191 , 0.04797412]], [[0.18899798, 0.17814853], [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 ], [0.13727177, 0.02160958]], [[0.34964455, 0.02713711], [0.19201804, 0.05354371]]], [[[0.20749824, 0.07740389], [0.11395403, 0.15272414]], [[0.29025199, 0.1917896 ], [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], [0.03250545, 0.01104815]], [[0.05484124, 0.03810483], [0.04612873, 0.00339585]]], [[[0.10126901, 0.1783599 ], [0.08518063, 0.01589521]], [[0.14371162, 0.0548222 ], [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. ], [0. , 0.41533028]], [[0.33486792, 0. ], [0. , 0.17308891]]], [[[0.34274614, 0. ], [0. , 0.70391274]], [[0.27636906, 0. ], [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], [0.24656904, 0.02021299]], [[0.39168995, 0.04294743], [0.37337842, 0.06184022]]], [[[0.01029788, 0.0144621 ], [0.00981645, 0.02082404]], [[0.01559404, 0.04424575], [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. ], [0. , 0.58929355]], [[0.1124948 , 0. ], [0. , 0.096846 ]]], [[[0.00788126, 0. ], [0. , 0.59944087]], [[0.00718512, 0. ], [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. ], [0. , 0. ]], [[0. , 0. ], [0. , 0.74922576]]], [[[0.22775978, 0. ], [0. , 0. ]], [[0. , 0. ], [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], [0.16062073, 0.2244091 ]], [[0.30299314, 0.17829511], [0.4746701 , 0.11047289]]], [[[0.07572302, 0.10681258], [0.11862794, 0.06618181]], [[0.22377842, 0.05258206], [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. ], [0. , 0.62807228]], [[0.02105786, 0. ], [0. , 0.42341707]]], [[[0.08471033, 0. ], [0. , 0.02012659]], [[0.10024653, 0. ], [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. ], [0. , 0. ]], [[0. , 0. ], [0. , 0.66277614]]], [[[0.47390027, 0. ], [0. , 0. ]], [[0. , 0. ], [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], [0.00786621, 0.18621459]], [[0.02078662, 0.00451157], [0.01073812, 0.18462354]]], [[[0.03056484, 0.00495965], [0.01578943, 0.20295981]], [[0.04172391, 0.00491727], [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. ], [0. , 0.05350238]], [[0.06413732, 0. ], [0. , 0.04332653]]], [[[0.49521923, 0. ], [0. , 0.42037853]], [[0.58588031, 0. ], [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. ], [0. , 0. ]], [[0. , 0. ], [0. , 0.76838016]]], [[[0.63992093, 0. ], [0. , 0. ]], [[0. , 0. ], [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 ], [0.00166211, 0.00613395]], [[0.01717882, 0.06325508], [0.01232093, 0.01107338]]], [[[0.0357278 , 0.16969336], [0.02562457, 0.02970636]], [[0.26484425, 0.30634082], [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. ], [0. , 0.01692231]], [[0.0192893 , 0. ], [0. , 0.22703241]]], [[[0.02716025, 0. ], [0. , 0.0265343 ]], [[0.03134864, 0. ], [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. ], [0. , 0. ]], [[0. , 0. ], [0. , 0.55270282]]], [[[0.62742591, 0. ], [0. , 0. ]], [[0. , 0. ], [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], [0.24512013, 0.21817672]], [[0.38616331, 0.37851145], [0.14054047, 0.10373346]]], [[[0.44214684, 0.35025664], [0.16091514, 0.09599005]], [[0.2535064 , 0.16653168], [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. ], [0. , 0.47666464]], [[0.36386609, 0. ], [0. , 0.28191409]]], [[[0.0177802 , 0. ], [0. , 0.509181 ]], [[0.33756523, 0. ], [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. ], [0. , 0. ]], [[0. , 0. ], [0. , 0.9562864 ]]], [[[0.8728551 , 0. ], [0. , 0. ]], [[0. , 0. ], [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], [0.00882408, 0.01299472]], [[0.0698341 , 0.3496806 ], [0.02843707, 0.01628389]]], [[[0.14379812, 0.12418732], [0.05855587, 0.00578314]], [[0.4634135 , 0.15562113], [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. ], [0. , 0.64636168]], [[0.47155957, 0. ], [0. , 0.73326283]]], [[[0.27171307, 0. ], [0. , 0.03051431]], [[0.20577815, 0. ], [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. ], [0. , 0. ]], [[0. , 0. ], [0. , 0.88236378]]], [[[0.62095282, 0. ], [0. , 0. ]], [[0. , 0. ], [0. , 0.13583653]]]])...
tn.draw(htn.tags, layout="neato")
The tags show you that some tensors have been formed from varying cluster of the original tensors.
Hint
There is also the experimental 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.
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):
import cotengra as ctg
# first we find a compressed specific contraction tree:
copt = ctg.HyperCompressedOptimizer(chi=16, progbar=True)
ctree = tn.contraction_tree(copt)
F=7.24 C=7.57 S=14.00 P=15.02: 100%|██████████| 128/128 [00:02<00:00, 44.60it/s]
Check cost of compressed tree first:
ctree.compressed_contract_stats()
<CompressedStatsTracker(F=7.24, C=7.57, S=14.00, P=15.02)>
The P value (peak memory), means storage for \(2^{15.19}\) elements will be needed.
Then we can perform the compressed contraction:
tn.contract_compressed(ctree, progbar=True)
log2[SIZE]: 12.00/12.00: 51%|█████▏ | 56/109 [00:00<00:00, 1320.83it/s]
log2[SIZE]: 0.00/13.46: 100%|██████████| 109/109 [00:00<00:00, 700.63it/s]
np.float64(3.931684265510081e-38)
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 docstring for more details.
14.2. Manually to TensorNetwork2D¶
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. From then, 2D specific algorithms can be applied to it.
Here we’ll first split each bond tensor in half:
tn = htn.copy()
site_tag_to_inds = {}
for cooa, coob in edges:
# get the tensor at this bond
taga = site_tag_id.format(*cooa)
tagb = site_tag_id.format(*coob)
t = tn.pop_tensor((taga, tagb))
# we only want cooa tag on left, coob tag on right
t.drop_tags((taga, tagb))
# get ind to define left/right split
lix = site_ind_id.format(*cooa)
# name for the new bond
bix = qtn.rand_uuid()
tl, tr = t.split(
left_inds=[lix],
# how to split doesn't really matter, just do it exactly
cutoff=0.0,
get="tensors",
ltags=taga,
rtags=tagb,
bond_ind=bix,
)
tn |= tl
tn |= tr
# record the bonds around each site for later contraction
site_tag_to_inds.setdefault(taga, []).append(bix)
site_tag_to_inds.setdefault(tagb, []).append(bix)
We now have two tensors per bond, and four tensors belonging exclusively to each site:
tn.draw(tn.tags, layout="neato")
We can now contract those four tensors, needing to specifiy the incident indices since it is an effect hyper contraction:
for tag, inds in site_tag_to_inds.items():
tn.contract_(tag, output_inds=inds)
We now have a single tensor per site, correctly tagged for that site.
tn.draw(tn.tags, layout="neato")
Finally we want to cast the network as TensorNetwork2D, that involves adding some extra tags that specify the 2D stucture:
x_tag_id = "X{}"
y_tag_id = "Y{}"
for coo in sites:
i, j = coo
t = tn[site_tag_id.format(i, j)]
t.add_tag((x_tag_id.format(i), y_tag_id.format(j)))
Before ‘casting’ the TN:
tn.view_as_(
qtn.TensorNetwork2D,
site_tag_id=site_tag_id,
x_tag_id=x_tag_id,
y_tag_id=y_tag_id,
Lx=Lx,
Ly=Ly,
)
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], [ 0.30606677, 0.16823801]], [[ 0.14089751, 0.14211816], [ 0.23705465, -0.00592954]]], [[[ 0.01354028, 0.22222884], [ 0.14079766, -0.05730528]], [[ 0.08784552, -0.06560805], [ 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], [ 0.14775113, 0.06009977]], [[-0.11175168, 0.07834591], [ 0.13398402, 0.01801887]]], [[[ 0.17100729, -0.07476152], [-0.09945194, -0.00834044]], [[-0.17101127, 0.02471842], [-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], [ 0.0534107 , 0.15516802]], [[ 0.19430794, 0.17926244], [ 0.28364082, 0.05682748]]], [[[-0.25544705, 0.14663054], [ 0.24412544, -0.03043179]], [[ 0.22654489, -0.00896796], [-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], [ 0.07180621, 0.08634133]], [[-0.05185594, 0.08292953], [ 0.07404731, 0.01767446]]], [[[ 0.23563776, -0.13672079], [-0.11751927, -0.01017712]], [[-0.19086736, 0.02198374], [ 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], [-0.01748876, 0.0608437 ]], [[-0.02793735, 0.05465769], [ 0.04691463, -0.03707534]]], [[[-0.24159975, -0.13645441], [-0.06570162, -0.01498918]], [[-0.04655521, -0.00597282], [ 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 ], [ 0.4934709 , 0.12675324]], [[ 0.09131858, 0.10309223], [ 0.12530635, -0.00622275]]], [[[ 0.01882554, 0.28401241], [ 0.10196446, -0.06766764]], [[ 0.05128637, -0.1495903 ], [ 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], [-0.0111242 , -0.2788132 ]], [[ 0.14601283, 0.1986183 ], [ 0.14611501, -0.04392789]]], [[[ 0.12342538, 0.17928073], [ 0.13057982, -0.04192012]], [[-0.12989476, 0.00226319], [-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], [-0.09970623, 0.16379632]], [[ 0.01714259, 0.04319461], [ 0.03607566, -0.04377823]]], [[[-0.10315691, -0.03495779], [-0.01877514, 0.00306422]], [[-0.05387646, -0.01348673], [-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], [-0.06819315, 0.0926 ]], [[ 0.02762254, 0.15629977], [ 0.17263713, -0.08981563]]], [[[ 0.13957368, 0.14647328], [ 0.04473668, -0.0043166 ]], [[ 0.07925207, 0.03186493], [-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], [ 0.18261023, -0.15059705]], [[-0.06539412, -0.24765638], [-0.10547389, -0.03614808]]], [[[-0.21024356, 0.25506313], [ 0.1430908 , -0.01570964]], [[ 0.20494937, 0.10332859], [ 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], [ 0.05992316, -0.20995336]], [[-0.0021919 , -0.05000952], [ 0.03527061, -0.02364581]]], [[[-0.33999419, -0.08705515], [ 0.29570558, -0.00222481]], [[ 0.15497111, 0.00759254], [-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], [-7.46369332e-03, 4.89257794e-02]], [[ 2.05746811e-03, 1.49033496e-01], [ 8.13022110e-02, -1.49145884e-02]]], [[[-3.64618038e-01, -1.63969852e-01], [-1.22542935e-01, 1.39563635e-04]], [[-3.97234189e-01, -4.99916448e-03], [-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 ], [ 0.15057313, 0.02518695]], [[ 0.12812041, 0.00864686], [ 0.05744845, -0.00668911]]], [[[-0.14904948, -0.01364039], [-0.06752098, 0.0106607 ]], [[-0.05575222, 0.00355157], [-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], [-0.11511373, -0.0446535 ]], [[-0.10117373, -0.04894122], [ 0.0906955 , -0.01281088]]], [[[-0.26625592, -0.07409719], [ 0.17460598, -0.01418887]], [[ 0.1738393 , -0.01761633], [-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], [-0.00677912, 0.00471031]], [[-0.19585664, 0.02497804], [ 0.00745958, 0.00127307]]], [[[ 0.10655296, -0.04287022], [-0.00561728, -0.00302436]], [[-0.10130616, -0.01001124], [ 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], [-0.02322436, 0.09436746]], [[ 0.03778 , -0.0972649 ], [-0.11819737, -0.14466326]]], [[[-0.12599104, 0.04327577], [ 0.02549635, 0.00416332]], [[-0.02880198, -0.00297988], [-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], [-0.10498382, -0.07237022]], [[-0.03841616, -0.07977435], [ 0.03395181, -0.00311954]]], [[[-0.04888758, -0.11918061], [ 0.04914357, -0.00530093]], [[ 0.04326694, -0.01405898], [-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], [ 0.02917351, 0.0163632 ]], [[-0.04402681, 0.01995369], [ 0.00871577, 0.003757 ]]], [[[ 0.25878663, -0.07996963], [-0.0116541 , -0.00342525]], [[-0.05404638, 0.01283531], [-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], [-0.11193946, 0.02418725]], [[-0.11030127, 0.0340611 ], [ 0.04509916, -0.00294389]]], [[[-0.00266647, -0.00472192], [-0.00290418, -0.00108713]], [[-0.00659389, -0.00352755], [-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], [-0.14512131, 0.06131013]], [[-0.0531127 , 0.09438148], [-0.04540182, -0.03273776]]], [[[-0.07631099, 0.03510581], [-0.04927877, -0.00919897]], [[-0.02430634, -0.01908474], [-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 ], [-0.08435673, 0.1251128 ]], [[ 0.11013665, 0.03880267], [ 0.10671833, -0.08634573]]], [[[-0.13928681, -0.02948919], [-0.03257422, 0.01583795]], [[-0.0417189 , -0.00481843], [ 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], [ 0.01410234, 0.06349485]], [[-0.05650907, -0.06947453], [-0.04431794, 0.00339042]]], [[[-0.00820624, -0.0205659 ], [-0.01348537, 0.00210297]], [[ 0.01446702, -0.00061604], [-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], [-0.04757964, -0.07595661]], [[-0.05261355, 0.0399202 ], [ 0.05413911, 0.01884144]]], [[[-0.09549453, 0.06194796], [ 0.06711579, 0.01997014]], [[-0.02665639, 0.00376971], [-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], [-0.04542886, -0.28415721]], [[-0.12319477, -0.1520376 ], [-0.14149646, 0.04594286]]], [[[ 0.16311833, 0.1972846 ], [ 0.18399128, -0.05854655]], [[ 0.12359804, -0.00775975], [ 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], [-0.1999665 , 0.0676052 ]], [[-0.01326438, -0.01310151], [-0.01971779, 0.00510378]]], [[[-0.08675785, -0.04892946], [-0.03426148, 0.00506369]], [[ 0.09216015, 0.03979384], [ 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 ], [-0.0380776 , -0.05214731]], [[ 0.11702027, -0.07002821], [ 0.15802043, -0.01794201]]], [[[-0.1188747 , -0.05156294], [ 0.10474731, 0.00862059]], [[ 0.12125807, -0.00436068], [ 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], [-0.11688057, 0.07439513]], [[-0.31789412, 0.10957632], [ 0.15745367, -0.00690321]]], [[[ 0.03029026, 0.07833118], [ 0.08307942, 0.02732684]], [[ 0.10602439, 0.01888573], [ 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], [ 0.18247825, -0.08078915]], [[ 0.04937853, 0.07294314], [ 0.03715908, 0.0062469 ]]], [[[ 0.04599445, -0.07849525], [-0.07650671, 0.01485905]], [[ 0.09150855, 0.05930038], [ 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], [ 0.0077263 , 0.04539873]], [[ 0.08052626, 0.04251613], [ 0.01793117, -0.02428773]]], [[[ 0.3778234 , 0.07960827], [ 0.0325733 , -0.01760732]], [[ 0.08153628, -0.00396028], [-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], [ 0.00831321, -0.22548058]], [[-0.10552094, 0.1778055 ], [ 0.11229874, 0.02655053]]], [[[ 0.08427975, -0.19356806], [-0.12512297, -0.04032174]], [[ 0.10196087, 0.00204128], [ 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], [-0.11571281, -0.05216567]], [[ 0.17522369, -0.06257039], [ 0.09518946, -0.01132147]]], [[[-0.05939346, -0.0313761 ], [ 0.09368115, 0.01648354]], [[ 0.062872 , -0.0087625 ], [ 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], [-0.31622745, -0.14773242]], [[ 0.05193485, -0.06166137], [-0.09134936, -0.019422 ]]], [[[ 0.19055694, -0.11970517], [-0.13411762, -0.01508718]], [[-0.15406635, 0.04404617], [ 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], [ 0.1921905 , 0.06247233]], [[-0.03816905, -0.0628416 ], [-0.13705003, 0.02087247]]], [[[ 0.07939511, 0.03275468], [ 0.10669281, -0.00407168]], [[-0.06735016, 0.01301839], [-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], [-0.01332059, 0.11325801]], [[ 0.27696189, 0.11577879], [ 0.15175587, 0.01595908]]], [[[-0.0764495 , 0.1112832 ], [ 0.10943832, -0.0400754 ]], [[ 0.10840209, 0.00195168], [ 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], [-0.09463309, 0.05619156]], [[ 0.02654499, -0.06867516], [-0.09545745, -0.01967658]]], [[[ 0.27592956, -0.10056572], [-0.14247287, -0.0041372 ]], [[ 0.15744241, 0.01991981], [ 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 ], [ 0.16821586, 0.11042006]], [[ 0.01258229, 0.09278649], [ 0.1252116 , -0.02537108]]], [[[-0.26060336, -0.15138593], [-0.21568759, 0.00344271]], [[-0.16779265, 0.0300879 ], [ 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], [ 0.0526854 , -0.09567212]], [[-0.30228824, 0.08379703], [ 0.08784902, 0.00570995]]], [[[-0.00469567, 0.0318445 ], [ 0.01088475, 0.01730788]], [[-0.01780531, -0.00432202], [ 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], [ 0.06975109, 0.09648496]], [[-0.06831076, -0.06121682], [-0.1256684 , -0.02753649]]], [[[ 0.17585692, -0.1217325 ], [-0.168198 , 0.02846877]], [[ 0.0973275 , -0.01067226], [ 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 ], [ 0.0203266 , 0.02246295]], [[-0.12278764, -0.08916904], [-0.02435105, 0.01637507]]], [[[ 0.09409645, 0.04607912], [ 0.01266088, -0.00574118]], [[-0.05553361, 0.01654818], [ 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], [ 0.03958964, 0.01599358]], [[-0.06410864, -0.00953736], [-0.02091621, -0.00046744]]], [[[-0.02641557, 0.05661451], [ 0.02734016, -0.00880241]], [[-0.02233254, 0.00264781], [-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 ], [-0.33702907, -0.07508912]], [[ 0.04251049, 0.02780067], [ 0.05163676, 0.00628705]]], [[[-0.05739929, 0.10254737], [ 0.04028515, -0.0133996 ]], [[-0.03477579, 0.0339526 ], [ 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], [-0.02881899, 0.06253945]], [[ 0.06947771, 0.07463951], [ 0.08052561, 0.07047778]]], [[[ 0.1653896 , -0.12291854], [-0.08838795, 0.05351767]], [[-0.02329379, -0.0069822 ], [-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], [ 0.10570841, -0.03343088]], [[-0.01433389, -0.30104553], [-0.04738128, -0.01596749]]], [[[ 0.23989029, -0.2017038 ], [-0.07609662, 0.00102666]], [[-0.25344988, -0.22708328], [ 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], [-5.50759138e-02, -2.52834654e-02]], [[-1.06287488e-02, -7.22755875e-02], [ 3.79722004e-02, 2.49536759e-03]]], [[[ 6.18853915e-02, -6.15967523e-02], [ 3.01579950e-02, -2.90089103e-04]], [[ 1.23726843e-01, -1.76289920e-02], [ 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], [-0.05120681, 0.04697699]], [[ 0.02020045, 0.14781951], [ 0.05934659, 0.00311131]]], [[[-0.02356073, 0.0960759 ], [ 0.04429838, -0.00129417]], [[ 0.11224662, 0.02615707], [-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], [-8.52109961e-02, 1.25138151e-01]], [[ 8.04383928e-02, -1.09275895e-01], [-1.08950126e-01, -8.93844537e-05]]], [[[ 1.29026069e-04, -4.05218741e-02], [-6.99538334e-02, -1.32677367e-02]], [[ 5.69964515e-02, 1.00000009e-02], [ 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], [ 0.11154829, 0.1409255 ]], [[-0.14127972, -0.14935774], [-0.11466356, 0.04600718]]], [[[ 0.04492525, 0.0691234 ], [ 0.06575917, -0.03840106]], [[-0.06102758, 0.02982183], [ 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], [ 0.03460761, -0.04291208]], [[ 0.19255782, -0.04822213], [-0.12863307, 0.01181492]]], [[[-0.05015714, -0.06205303], [-0.09772486, -0.0443433 ]], [[-0.08213825, -0.00752741], [ 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], [-0.06162313, 0.03054502]], [[ 0.00941262, 0.1503685 ], [ 0.06241237, 0.01134505]]], [[[ 0.05755093, -0.04896258], [-0.06090268, 0.00058957]], [[-0.07396784, -0.02307777], [ 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], [-0.25542223, 0.06983225]], [[-0.10285408, -0.02054895], [-0.05081942, 0.00313918]]], [[[-0.07282155, -0.03523905], [-0.12222447, 0.01828693]], [[ 0.1293401 , 0.01414121], [ 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], [ 0.0147323 , 0.03473957]], [[ 0.06817734, 0.1302281 ], [ 0.01744269, -0.0139232 ]]], [[[-0.07536057, -0.03708032], [-0.01144359, 0.002353 ]], [[-0.04821189, 0.00803018], [-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], [-0.01566959, 0.04357976]], [[ 0.08413287, -0.01078559], [-0.01200697, -0.00073091]]], [[[-0.02658611, 0.12333134], [ 0.01406881, 0.03099051]], [[-0.0257352 , -0.00261306], [ 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], [ 0.08344192, 0.04408562]], [[-0.03693221, -0.02314976], [-0.0161005 , 0.01005659]]], [[[ 0.27408859, 0.07276133], [ 0.09291581, -0.0245793 ]], [[-0.04308838, 0.01352286], [-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], [-0.11833967, 0.20700466]], [[-0.02779505, 0.12065856], [ 0.14995432, 0.02571109]]], [[[ 0.09849826, -0.16027355], [-0.2172119 , -0.01396007]], [[-0.1167861 , -0.01862671], [ 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], [-0.19100766, -0.21591659]], [[ 0.0363976 , -0.06816893], [ 0.08907923, 0.00365445]]], [[[ 0.01404924, -0.08149983], [ 0.1231499 , 0.01564842]], [[ 0.03284935, -0.00691579], [-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], [-0.10849261, 0.10513585]], [[ 0.13867046, 0.08272814], [ 0.05489484, 0.01516514]]], [[[-0.05194649, 0.06956005], [ 0.08173107, -0.05067997]], [[ 0.0614995 , 0.02347683], [ 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], [-0.12003976, 0.07310642]], [[ 0.07669242, 0.04996774], [ 0.1660917 , 0.03018067]]], [[[ 0.22383784, -0.0479961 ], [-0.26089581, 0.01560211]], [[-0.09259148, -0.00592371], [ 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], [-0.02512503, -0.15143549]], [[-0.16939628, -0.2425419 ], [-0.30985141, -0.02957983]]], [[[ 0.12093817, -0.21855852], [-0.3015328 , 0.03633274]], [[-0.43588118, 0.01247652], [ 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], [ 0.19875139, -0.03719775]], [[ 0.06670919, -0.06946693], [-0.07712867, -0.01317993]]], [[[-0.07881843, 0.03690546], [ 0.05425396, 0.00416869]], [[ 0.0676412 , 0.02891778], [ 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], [-0.31829387, 0.14657128]], [[-0.11826807, -0.0834561 ], [-0.15566572, 0.03057974]]], [[[-0.12674285, -0.09023896], [-0.17047696, 0.03378987]], [[ 0.07933728, 0.02409729], [-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], [ 0.08489292, 0.07440176]], [[-0.2617271 , 0.06203064], [ 0.09211754, 0.00346524]]], [[[ 0.00731438, -0.01711953], [-0.02024368, -0.00752033]], [[-0.07740085, 0.00777569], [ 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], [-0.02246138, 0.00415134]], [[-0.16416619, 0.00596125], [ 0.01595313, 0.00126547]]], [[[ 0.02782006, -0.0031568 ], [-0.07652833, -0.01896984]], [[-0.01411022, -0.00068719], [-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], [ 0.10366969, 0.11845251]], [[ 0.02529268, -0.04517704], [-0.0610477 , 0.01135912]]], [[[-0.0222668 , -0.04634035], [-0.02878052, -0.00623954]], [[ 0.13559262, -0.0459537 ], [-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], [-0.19114213, -0.05261184]], [[ 0.06226674, 0.0700715 ], [ 0.10861313, 0.00617315]]], [[[ 0.01231194, -0.10508637], [-0.03695137, 0.01592906]], [[ 0.03410127, -0.06010193], [ 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 ], [ 0.27001393, -0.07533166]], [[-0.10216219, -0.06375106], [-0.10486073, -0.01213711]]], [[[ 0.07614494, -0.0487077 ], [-0.14481968, 0.01718261]], [[-0.12496066, -0.03316201], [-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], [ 1.46824223e-03, 1.13299932e-01]], [[-6.25922833e-02, 5.92779772e-02], [-7.00509607e-02, -1.16916474e-01]]], [[[ 3.72612593e-01, -5.00891844e-02], [ 6.84052570e-02, 1.62055936e-02]], [[ 1.04144306e-01, -3.02797048e-04], [ 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], [-0.03390634, 0.0846886 ]], [[ 0.00422683, 0.02300115], [ 0.01453714, -0.004754 ]]], [[[-0.16934909, -0.08913728], [-0.09381119, 0.00296741]], [[-0.04462534, -0.00307535], [-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], [-0.05315772, 0.04092106]], [[-0.00481879, -0.01610241], [-0.01834652, 0.00199623]]], [[[-0.03008919, -0.02998243], [-0.02595362, 0.00084209]], [[ 0.0091239 , 0.00128503], [-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], [ 6.42578926e-02, 4.23847337e-02]], [[ 6.42219925e-02, 4.32678887e-02], [ 3.25689125e-02, -1.98552460e-02]]], [[[ 2.27924001e-01, 4.41538054e-02], [ 5.14920982e-02, -9.02627905e-03]], [[ 5.20272668e-02, -9.31532748e-03], [ 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], [-0.05704812, 0.06720346]], [[-0.00654273, 0.06487136], [ 0.05373356, 0.01595238]]], [[[ 0.09792342, -0.04552591], [-0.05909355, -0.00082262]], [[-0.04276741, -0.00501089], [ 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], [-0.01283887, 0.08820492]], [[-0.06050588, -0.07523252], [-0.12308569, -0.01043254]]], [[[ 0.07539 , -0.06473929], [-0.13481269, 0.0078915 ]], [[ 0.0945894 , 0.0010021 ], [-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], [ 0.02152594, 0.13076893]], [[-0.09521551, -0.19652606], [-0.09009905, -0.02177763]]], [[[ 0.05659805, -0.06624183], [-0.09490991, 0.01300829]], [[ 0.08427465, -0.00392442], [-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], [-0.04332614, 0.08074506]], [[ 0.05001854, 0.08070859], [ 0.09133093, -0.01064354]]], [[[-0.01830879, -0.01766884], [-0.02020803, 0.00140848]], [[-0.02581011, -0.00155754], [-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], [ 0.12605647, 0.11776853]], [[ 0.2263666 , 0.0724592 ], [ 0.20418151, 0.0102925 ]]], [[[-0.08681568, 0.22807538], [ 0.17257492, -0.07139721]], [[ 0.14458967, -0.02049547], [ 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], [-0.04275579, 0.03566463]], [[-0.27570935, 0.12017413], [ 0.05314472, -0.00208731]]], [[[-0.03326614, -0.24323047], [-0.04511189, -0.02972174]], [[-0.16049439, -0.05525349], [ 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], [-0.0305392 , 0.02744323]], [[-0.02673389, -0.03488713], [-0.01232233, 0.00710475]]], [[[-0.1550539 , -0.12998383], [-0.01039592, 0.00385054]], [[ 0.01410698, 0.00758785], [-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], [ 0.04850352, -0.03579337]], [[-0.01143884, 0.06979568], [ 0.0133986 , -0.00130487]]], [[[-0.02477123, -0.1012939 ], [-0.01809136, -0.00118078]], [[ 0.07779708, 0.04198349], [ 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], [-0.24144433, 0.0550542 ]], [[-0.09580583, 0.09783885], [ 0.1168373 , 0.00876711]]], [[[-0.03374765, 0.09803845], [ 0.07033706, 0.01501386]], [[ 0.06047096, 0.05780974], [-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], [-0.1229705 , -0.08719113]], [[ 0.03338103, -0.01697554], [-0.1298826 , -0.0804201 ]]], [[[ 0.26023008, -0.03091223], [-0.02710116, -0.00391968]], [[-0.08050711, 0.00835121], [-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 ], [ 0.18428689, -0.06833295]], [[-0.01883604, -0.05316203], [-0.03876437, -0.0287145 ]]], [[[-0.05024137, 0.02415698], [ 0.02042069, -0.00257696]], [[ 0.05898774, 0.05665989], [ 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], [ 0.24042269, 0.16561542]], [[-0.10541152, 0.09975846], [ 0.13142661, 0.00389571]]], [[[ 0.01316863, -0.07536625], [-0.1093703 , -0.01960546]], [[-0.12290333, 0.03026757], [ 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], [-0.17345302, -0.14821452]], [[ 0.0403607 , -0.1546106 ], [-0.15841081, 0.02035491]]], [[[-0.03757483, -0.07034373], [-0.07813398, -0.0049065 ]], [[-0.08873887, 0.02498146], [ 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], [ 0.05002385, -0.16206884]], [[-0.2414601 , -0.17534055], [-0.19465214, -0.02973147]]], [[[ 0.14152137, -0.22779164], [-0.15482889, 0.05241892]], [[-0.21119227, -0.01602613], [-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], [ 4.50772950e-02, 5.60748847e-02]], [[-7.38237488e-02, 1.30279261e-01], [ 3.76725912e-02, -2.79544705e-04]]], [[[ 2.64921170e-03, 1.01564832e-01], [ 2.92961054e-02, 4.72262182e-03]], [[ 9.85820494e-02, -2.25444564e-02], [-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 ], [ 0.10982246, 0.13497337]], [[-0.07478816, 0.0240455 ], [ 0.01838571, 0.00696315]]], [[[ 0.06082317, -0.03979921], [-0.0619948 , -0.04778425]], [[-0.02797569, 0.00564098], [-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], [-0.20130782, 0.05385215]], [[-0.07147813, 0.097765 ], [ 0.10173515, 0.02887353]]], [[[-0.19634546, 0.06407479], [ 0.1510261 , 0.01022673]], [[ 0.10808912, 0.03742267], [-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], [ 0.10881984, 0.05736085]], [[ 0.03129782, 0.20042315], [ 0.04539841, -0.01479428]]], [[[ 0.15835144, 0.23380681], [ 0.08280304, -0.00622158]], [[ 0.13947341, -0.12731282], [ 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], [-0.06230251, -0.02479038]], [[-0.02039554, -0.05486705], [ 0.04941599, -0.00385298]]], [[[ 0.1347755 , 0.07804456], [-0.07407909, 0.00124331]], [[-0.16195061, 0.01837665], [-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], [ 0.12569879, 0.03761397]], [[ 0.06843451, 0.02168376], [ 0.12093485, 0.01475215]]], [[[ 0.22046639, -0.03101022], [-0.13096777, 0.00709204]], [[-0.07911895, 0.00453658], [ 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], [ 0.07051809, 0.12046919]], [[-0.1605783 , 0.08041335], [ 0.13325813, -0.01523627]]], [[[ 0.0584533 , 0.06882948], [ 0.08135598, 0.02187251]], [[ 0.06505049, -0.00512656], [-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], [ 0.02094679, 0.09743521]], [[ 0.13219649, -0.12858849], [-0.0910938 , 0.00304005]]], [[[ 0.02041941, 0.1726717 ], [ 0.0916196 , 0.02658126]], [[-0.17258775, 0.01047082], [ 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], [ 0.10011781, 0.09561831]], [[-0.14078477, 0.11618118], [ 0.01918695, 0.00293226]]], [[[-0.04196996, 0.12227326], [ 0.02915589, 0.01573023]], [[ 0.14517801, -0.06767997], [-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], [ 0.12890593, 0.09751741]], [[-0.08493561, -0.03946369], [-0.03300069, -0.00181023]]], [[[-0.03678784, 0.18434226], [ 0.09692919, -0.0573427 ]], [[-0.03474614, 0.01262492], [ 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 ], [-0.20832781, 0.25133553]], [[-0.12527301, 0.1231205 ], [ 0.16045363, -0.03438561]]], [[[-0.10548788, -0.19294504], [-0.20827294, -0.08306504]], [[-0.09318933, -0.03027735], [-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], [ 0.15826783, 0.10861878]], [[-0.36129785, 0.15213524], [ 0.15579536, 0.03397372]]], [[[-0.19072153, 0.10155954], [ 0.12040359, 0.03320355]], [[ 0.33623134, -0.05688994], [ 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], [ 0.09692126, 0.0374012 ]], [[ 0.04249562, -0.03118068], [-0.05552238, -0.01023311]]], [[[ 0.17083945, -0.05434597], [-0.05599687, -0.00447446]], [[ 0.08802764, -0.01337431], [ 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], [ 0.15340105, 0.19494906]], [[ 0.0781593 , -0.08466473], [-0.15532952, -0.0273484 ]]], [[[-0.0755034 , 0.07909483], [ 0.14315479, 0.02437494]], [[-0.05789665, 0.00840272], [-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], [ 0.0844369 , 0.03516463]], [[ 0.17404611, 0.04730931], [ 0.303247 , 0.03158615]]], [[[-0.26222717, 0.07653167], [ 0.1472724 , -0.01647035]], [[ 0.17879517, -0.01305106], [ 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], [-0.14966935, -0.1221432 ]], [[-0.0906352 , -0.10585569], [-0.1979514 , -0.08769842]]], [[[ 0.10885222, -0.04751576], [-0.0492667 , 0.00815774]], [[-0.06127139, 0.01451961], [ 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], [ 0.18050348, 0.10934369]], [[-0.15430265, 0.04516107], [ 0.0571187 , 0.00025098]]], [[[ 0.00043731, -0.01168632], [-0.02550259, -0.01023139]], [[-0.02829428, 0.00548443], [ 0.00434225, -0.00242943]]]])...
Now we can call 2D specific methods. For this PBC contraction for example, the two following methods (docstrings: HOTRG and CTMRG) are supported:
tn.contract_hotrg(max_bond=8)
np.float64(3.931679435391318e-38)
tn.contract_ctmrg(max_bond=16)
np.float64(3.931773203487969e-38)