[Python] Qiskit: AttributeError: 'ParameterExpression' object has no attribute 'name' when...

Discussão em 'Python' iniciado por Stack, Março 7, 2025.

  1. Stack

    Stack Membro Participativo

    I am trying to optimize a quantum circuit using scipy.optimize.minimize and Qiskit Runtime's Estimator, running on an IBM Quantum real device. However, I am encountering the following error:

    AttributeError: 'ParameterExpression' object has no attribute 'name'


    The error occurs inside the minimize function call, specifically when `estimator.run() is executed in cost_func_estimator.

    Here is the relevant code:

    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)


    The cost_func_estimator function is called within minimize and runs a job in the estimator:

    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


    I expected scipy.optimize.minimize to optimize the parameters of my quantum circuit using Qiskit Runtime’s Estimator on an IBM Quantum real device.

    I tried:

    - 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.


    Despite these attempts, the error persists. I expected estimator.run() to execute without issues, but it fails with AttributeError: 'ParameterExpression' object has no attribute 'name'.

    How can I resolve this issue?

    Continue reading...

Compartilhe esta Página