IBM量子量实际设备上运行。但是,我遇到以下错误:
AttributeError: 'ParameterExpression' object has no attribute 'name'
函数呼叫内部发生错误,特别是在cost_func_estimator中执行`估算器()时。
相关代码是:
minimize
from scipy.optimize import minimize
from qiskit_ibm_runtime import Estimator, Session
objective_func_vals = []
with Session(backend=backend) as session:
estimator = Estimator(mode=session)
estimator.options.default_shots = 1000
estimator.options.dynamical_decoupling.enable = True
estimator.options.dynamical_decoupling.sequence_type = "XY4"
estimator.options.twirling.enable_gates = True
estimator.options.twirling.num_randomizations = "auto"
result = minimize(
cost_func_estimator,
init_params,
args=(candidate_circuit, qubitOp, estimator),
method="COBYLA",
tol=1e-2,
callback=callback,
)
save_progress(result.x, objective_func_vals, name_saved_file)
print(result)
在
cost_func_estimator function
中被调用,并在估算器中运行工作:
minimize
I期望
def cost_func_estimator(params, ansatz, hamiltonian, estimator):
isa_hamiltonian = hamiltonian.apply_layout(ansatz.layout)
pub = (ansatz, isa_hamiltonian, params)
job = estimator.run([pub]) # The error occurs here
results = job.result()[0]
cost = results.data.evs
return cost
使用Qiskit Runtime's
scipy.optimize.minimize
在IBMQuantum RealDevice.中优化我的量子电路的参数。 我尝试了:
Estimator
尽管有这些尝试,但错误仍然存在。我希望
- Ensuring `init_params` contains only numerical values, not `ParameterExpression`.
- Using `bind_parameters()` to assign values before optimization.
- Updating `qiskit` and `qiskit-ibm-runtime` to the latest version.
没有问题执行,但是它会失败。
我怎么能解决这个问题?
它是QPY序列化的错误。
estimator.run()
和
AttributeError: 'ParameterExpression' object has no attribute 'name'
有修复。