Advanced Computing Platform for Theoretical Physics
Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Pengfei Zhou
GI based TN
Commits
6ab9c7a1
Commit
6ab9c7a1
authored
Aug 20, 2020
by
Pengfei Zhou
Browse files
grad
parent
ad71979c
Changes
1
Hide whitespace changes
Inline
Side-by-side
lnz.py
View file @
6ab9c7a1
...
...
@@ -34,7 +34,7 @@ def out_product(tensor,order):
def
get_symmetric_tensor
(
order
,
bond
):
rank_number
=
order
*
bond
weights
=
np
.
random
.
rand
(
rank_number
)
basis_vector
=
np
.
random
.
rand
(
rank_number
,
bond
,
1
)
basis_vector
=
np
.
random
.
rand
n
(
rank_number
,
bond
,
1
)
symmetirc_tensor
=
weights
[
0
]
*
out_product
(
basis_vector
[
0
],
order
)
for
i
in
range
(
1
,
rank_number
):
symmetirc_tensor
+=
weights
[
i
]
*
out_product
(
basis_vector
[
i
],
order
)
...
...
@@ -97,7 +97,7 @@ if __name__ == '__main__':
graph
=
nx
.
complete_graph
(
args
.
n
)
edges
=
list
(
graph
.
edges
)
elif
args
.
graph
==
"read_from_file"
:
args
.
n
,
edges
=
convert
(
'Generated_graphs.2
0
.0
3
.g6'
,
args
.
which
)
args
.
n
,
edges
=
convert
(
'Generated_graphs.
4
2.0
5
.g6'
,
args
.
which
)
print
(
args
.
n
)
args
.
graph
=
'rrg'
#print(edges)
...
...
@@ -117,22 +117,26 @@ if __name__ == '__main__':
G
.
add_nodes_from
(
np
.
arange
(
args
.
n
))
G
.
add_edges_from
(
edges
)
if
args
.
wl
:
time_1
=
time
.
time
()
n2
,
edges2
=
convert
(
'Generated_graphs.20.03.g6'
,
args
.
which
+
1
)
G1
=
nx
.
Graph
()
G1
.
add_nodes_from
(
np
.
arange
(
n2
))
G1
.
add_edges_from
(
edges2
)
from
wlkernel.weisfeiler_lehman
import
is_possibly_isomorphic
time_1
=
time
.
time
()
print
(
is_possibly_isomorphic
(
G
,
G1
))
print
(
"time: {:.2g} sec"
.
format
(
time
.
time
()
-
time_1
))
if
args
.
nx_iso
:
time_1
=
time
.
time
()
n2
,
edges2
=
convert
(
'Generated_graphs.2
0
.0
3
.g6'
,
args
.
which
+
1
)
if
args
.
graph
==
'read_from_file'
:
n2
,
edges2
=
convert
(
'Generated_graphs.
4
2.0
5
.g6'
,
args
.
which
+
20
)
G1
=
nx
.
Graph
()
G1
.
add_nodes_from
(
np
.
arange
(
n2
))
G1
.
add_edges_from
(
edges2
)
print
(
nx
.
is_isomorphic
(
G
,
G1
))
print
(
"time: {:.2g} sec"
.
format
(
time
.
time
()
-
time_1
))
else
:
G1
=
nx
.
random_regular_graph
(
args
.
k
,
args
.
n
)
time_1
=
time
.
time
()
print
(
nx
.
is_isomorphic
(
G
,
G1
))
print
(
"time: {:.2g} sec"
.
format
(
time
.
time
()
-
time_1
))
G_backup
=
G
.
copy
()
t0
=
time
.
time
()
...
...
@@ -143,27 +147,35 @@ if __name__ == '__main__':
max_degree
=
max
(
np
.
array
(
G
.
degree
)[:,
1
])
np
.
random
.
seed
(
args
.
seed1
)
torch
.
manual_seed
(
args
.
seed1
)
tensor1
=
[]
#tensor1=[]
tensor1
=
torch
.
nn
.
ParameterList
([])
tensor2
=
torch
.
randn
(
args
.
bond
,
args
.
bond
,
dtype
=
torch
.
float64
,
device
=
device
)
tensor2
=
torch
.
triu
(
tensor2
)
+
torch
.
triu
(
tensor2
,
diagonal
=
1
).
t
()
y
=
torch
.
exp
(
tensor2
)
eig
,
v
=
torch
.
symeig
(
y
)
print
(
eig
)
print
(
v
)
print
(
tensor2
)
for
i
in
range
(
1
,
max_degree
+
1
):
tensor1
.
append
(
torch
.
from_numpy
(
get_symmetric_tensor
(
i
,
args
.
bond
)))
tensor1
.
append
(
torch
.
nn
.
Parameter
(
torch
.
from_numpy
(
get_symmetric_tensor
(
i
,
args
.
bond
)))
)
print
(
tensor1
)
'''
if args.raw:
args.node = "raw"
'''
np
.
savetxt
(
'edges_{}.txt'
.
format
(
args
.
which
),
edges
)
tn
=
Tensor_Network
(
args
.
n
,
edges
,
args
.
choice
,
args
.
bond
,
tensor1
,
tensor2
,
beta
,
seed
=
args
.
seed2
,
maxdim
=
args
.
maxdim
,
verbose
=
args
.
verbose
,
Dmax
=
args
.
Dmax
,
chi
=
args
.
chi
,
node_type
=
args
.
node
)
# tn.tensors[0].tensor.norm().backward()
t0
=
time
.
time
()
lnZ_tn
=
tn
.
contraction
()
(
lnZ_tn
/
beta
).
backward
()
(
lnZ_tn
).
backward
()
lnZ_tn
=
lnZ_tn
print
(
"lnZ_tn = {:.15g}, time: {:.2g} Sec. maxdim_inter={:d}"
.
format
(
lnZ_tn
.
item
(),
time
.
time
()
-
t0
,
int
(
tn
.
maxdim_intermediate
)))
print
(
"beta.grad={:.15g}"
.
format
(
beta
.
grad
.
item
()))
print
(
tensor1
)
print
(
tensor1
[
2
].
grad
)
if
args
.
output
:
with
open
(
'{}_n={}_seed1_{}_beta_{}.txt'
.
format
(
args
.
graph
,
args
.
n
,
args
.
seed1
,
args
.
beta
),
'a'
)
as
fp
:
fp
.
write
(
'{} {:.15g} {:.15g}
\n
'
.
format
(
args
.
which
,
lnZ_tn
.
item
(),
beta
.
grad
.
item
()))
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment