-
Notifications
You must be signed in to change notification settings - Fork 81
/
Copy pathvqnhe_h6.py
60 lines (50 loc) · 1.53 KB
/
vqnhe_h6.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import cirq
import numpy as np
import scipy
import sympy as sy
import networkx as nx
import tensorflow_quantum as tfq
import tensorflow as tf
from functools import partial
from functools import lru_cache
import tensornetwork as tn
from itertools import product
import json
import sys
sys.path.insert(0, "../")
import tensorcircuit as tc
from tensorcircuit.applications.layers import *
from tensorcircuit.applications.van import *
from tensorcircuit.applications.graphdata import *
from tensorcircuit.applications.dqas import *
from tensorcircuit.applications.vags import *
from tensorcircuit.applications.vqes import *
tc.set_backend("tensorflow")
tc.set_dtype("complex128")
h6h = np.load("/PATH") # reported in 0.99 A
vqeinstance = VQNHE(
10,
h6h.tolist(),
{"width": 16, "stddev": 0.001, "choose": "complex-rbm"}, # model parameter
{"filled_qubit": [0, 1, 3, 4, 5, 6, 8, 9], "epochs": 2}, # circuit parameter
shortcut=True, # enable shortcut for full Hamiltonian matrix evaluation
)
# 1110011100
def learn_q():
return JointSchedule(200, 0.01, 800, 0.002, 800)
def learn_c():
# return 0.
lr = np.random.choice([0.004, 0.006, 0.008, 0.1])
return JointSchedule(200, 0.0006, 10000, lr, 5000)
rs = vqeinstance.multi_training(
tries=10,
maxiter=15000, # 10000
threshold=0.5e-8,
learn_q=learn_q,
learn_c=learn_c,
onlyq=0,
debug=200,
checkpoints=[(900, -3.18), (2600, -3.19), (4500, -3.2)],
)
# -3.1659 # -3.1664 # complex 3.18 # exact:-3.237746566460727 # RBM -3.2139 (-3.2097)
print(rs)