Skip to content

Commit

Permalink
Merge pull request #195 from Zhaoyilunnn/master
Browse files Browse the repository at this point in the history
close #192, close #194
  • Loading branch information
ScQ-Cloud committed Sep 10, 2024
2 parents 0819a81 + dff492d commit ded1ffb
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 1 deletion.
3 changes: 2 additions & 1 deletion quafu/algorithms/gradients/param_shift.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ def __call__(self, obs: Hamiltonian, params: List[float]):
estimator (Estimator): estimator to calculate expectation values
params (List[float]): params to optimize
"""
if self._est._backend != "sim":
return self.grad(obs, params)
return self.new_grad(obs, params)

def _gen_param_shift_vals(self, params):
Expand All @@ -46,7 +48,6 @@ def _gen_param_shift_vals(self, params):
minus_params = params - offsets * np.pi / 2
return plus_params.tolist() + minus_params.tolist()

# TODO: delete after 0.4.1
def grad(self, obs: Hamiltonian, params: List[float]):
"""grad.
Expand Down
13 changes: 13 additions & 0 deletions quafu/circuits/quantum_circuit.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ def __init__(self, qnum: int, cnum: Optional[int] = None, name="", *args, **kwar
self._parameter_grads = {}
self._variables = []
self._has_wrap = False
self._def_para_name = "theta_inner" # default parameter name prefix
self._para_id = 0 # current parameter index

@property
def parameterized_gates(self):
Expand Down Expand Up @@ -299,6 +301,17 @@ def update_params(self, paras_list: List[Any]):
for gate, paras in zip(self.parameterized_gates, paras_list):
gate.update_params(paras)

def angles2parameters(self):
"""Transform all float value params to `Parameter`"""
for g in self.gates:
if all(isinstance(x, float) for x in g.paras):
for i in range(len(g.paras)):
g.paras[i] = Parameter(
f"{self._def_para_name}_{self._para_id}", value=g.paras[i]
)
self._para_id += 1
self.get_parameter_grads()

def layered_circuit(self) -> np.ndarray:
"""
Make layered circuit from the gate sequence self.gates.
Expand Down

0 comments on commit ded1ffb

Please sign in to comment.