EstimatorV2
class EstimatorV2(mode=None, options=None)
ベース: BasePrimitiveV2[EstimatorOptions], Estimator、 BaseEstimatorV2
Qiskit Runtime Estimator プリミティブサービスと対話するためのクラス。
Qiskit Runtime 量子回路や量子観測量の期待値を推定するサービス。
この run() を使用すると、回路、観測値、パラメータをEstimatorプリミティブに送信することができます。
構築後、PUB(Primitive Unified Bloc)のリストを用いて run() メソッドを呼び出すことで使用される。 それぞれの PUB には4つの値が含まれており、それらを組み合わせることで、エスティメータが完了する計算単位が定義される:
- 単一
QuantumCircuitその最終状態を と定義する、 - どの期待値を推定するかを指定する1つまたは複数の観測値(
Pauli、SparsePauliOp、strを含む、任意のObservablesArrayLikeとして指定される)( ) - 回路をバインドするコレクションパラメータ値セット、 。
- 期待値の推定精度の目標値(オプション)。
以下は推定値の使用例である。
from qiskit.circuit.library import real_amplitudes
from qiskit.quantum_info import SparsePauliOp
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit_ibm_runtime import QiskitRuntimeService, EstimatorV2 as Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
psi = real_amplitudes(num_qubits=2, reps=2)
hamiltonian = SparsePauliOp.from_list([("II", 1), ("IZ", 2), ("XI", 3)])
theta = [0, 1, 1, 2, 3, 5]
pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
isa_psi = pm.run(psi)
isa_observables = hamiltonian.apply_layout(isa_psi.layout)
estimator = Estimator(mode=backend)
# calculate [ <psi(theta)|hamiltonian|psi(theta)> ]
job = estimator.run([(isa_psi, isa_observables, [theta])])
pub_result = job.result()[0]
print(f"Expectation values: {pub_result.data.evs}")パラメーター
-
mode (BackendV2 |Session |Batch | str | None) –
プリミティブクエリの実行モード。 これは以下のいずれかです。
詳細については
Execution modes、 Qiskit Runtime のドキュメントを参照してください。 -
options (dict | EstimatorOptions | None) – 推定器のオプションについては、詳細な説明を
EstimatorOptions参照してください。
属性
mode
このプリミティブが使用する実行モードを返します。
戻り値
このプリミティブが使用するモード。実行モードが使用されない場合は、 None 。
options
返品方法。
version
デフォルト値: 2
方法
backend
run
run(pubs, *, precision=None)
エスティメーターのプリミティブにリクエストを送信します。
パラメーター
(circuit, observables, parameter_values)pubs (Iterable[EstimatorPub | tuple[QuantumCircuit, str | Pauli |SparsePauliOp |SparseObservable | Mapping[str |Pauli, float] | _Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | complex | bytes | _NestedSequence[bool | int | float | complex | str | bytes]] | tuple[QuantumCircuit, str | Pauli |SparsePauliOp |SparseObservable | Mapping[str |Pauli, float] | _Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | complex | bytes | _NestedSequence[bool | int | float | complex | str | bytes], Mapping[Parameter | str | tuple[Parameter | str, ...], _Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes]]] | tuple[QuantumCircuit, str | Pauli |SparsePauliOp |SparseObservable | Mapping[str |Pauli, float] | _Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | complex | bytes | _NestedSequence[bool | int | float | complex | str | bytes], Mapping[Parameter | str | tuple[Parameter | str, ...], _Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes]], Real]]) – タプル(circuit, observables)や などの、pub のような(プリミティブ統一ブロック)オブジェクトの反復可能オブジェクト。- precision (float | None) – 独自の精度を指定しない各ランEstimator Pubの期待値推定値の目標精度。 None の場合、推定値のデフォルト精度が使用されます。
戻り値
提出された仕事
レイズ
ValueError - 精度値が厳密に0より大きくない場合。
戻りの型