Skip to main content
IBM Quantum Platform

qiskit_noise_learning.protocols.prepare_learning_program

qiskit_noise_learning.protocols.prepare_learning_program(backend: BackendV2, instructions: Sequence[CircuitInstruction], num_randomizations: int = 32, shots_per_randomization: int = 128, fragment_depths: Sequence[int] = (0, 1, 2, 4, 16, 32), creg_prefix: str = 'meas', local_clifford_ref_prefix: str = 'c', pass_manager: PassManager | None = None) → QuantumProgram

GitHub

標準的なノイズ学習実験の量子プログラムを作成する。

この実験では、で定義された各層について、「バニラ」学習プロトコルを用いて instructions 2局所パウリ・リンドブラッドモデルを学習するように設定されており、パスはによって生成され、命令シーケンスはによって生成される EvenDepthVanillaPaths ほか VanillaInstructionSequences、完全準備を伴うSPAMノイズモデルおよび1局所測定ノイズモデルも含まれている。

各命令が、モデルの1つのゲートとなります。 ノイズ注入アノテーションを含むボックスは、そのアノテーションのリファレンスをゲート名として採用し、それ以外のボックスには自動的に名前が付けられます。 学習済みのモデルは、それらの名前をキーとして結果を返すため、結果で識別されるボックスにアノテーションを付けてください。

もし、すべての測定ボックスが指定された場合( instructions すなわち、指定されたすべての命令に登場するすべての量子ビットを測定するボックス)、それは測定層として扱われます。 そのようなレイヤーが指定されていない場合、名前が. となるデフォルトのレイヤーが作成されます "M"。

例:

circuit = QuantumCircuit(backend.num_qubits)
with circuit.box([Twirl(), InjectNoise("layer")]):
    circuit.cz(17, 27)

program = prepare_learning_program(backend, [circuit[0]])
注

引数 creg_prefix, local_clifford_ref_prefix, および pass_manager はすべて、直接 に渡されます ExecutorCircuitGenerator。

パラメーター

  • バックエンド – コンパイル対象(生成された回路が構築されるゲートセット、カップリングマップ、および量子ビット数)を提供するバックエンド。
  • 説明 – その音を覚えるための説明。 各命令には演算 BoxOp が含まれており、すべての関連する量子ビットを測定するボックスを除き、自己逆演算でなければならない。
  • num_randomizations – 学習回路ごとに使用するランダム化の回数。
  • shots_per_randomization – ランダム化ごとに使用するショット数。
  • fragment_depths – 使用するフラグメントの深さ。つまり、各パスの繰り返し可能なフラグメントが何回繰り返されるかを示す数値です。
  • creg_prefix – 学習実験の測定で使用されるすべてのcreg名に割り当てられる接頭辞。 デフォルトは "meas". です。
  • local_clifford_ref_prefix – テンプレート回路内のすべてのローカル・クリフォードパラメータ参照に割り当てられるプレフィックス。 デフォルトは "c". です。
  • pass_manager – 生成されるすべてのテンプレート回路に適用する、オプションのパスマネージャー。

戻り値

結果を消費 process_learning_result() する、提出するプログラム。

昇給

ValueError – instructions が空の場合、いずれかの命令に `` が含まれていない場合 BoxOp、 num_randomizations または shots_per_randomization が 1 未満の場合、 *fragment_depths* のいずれかのエントリが負の場合、測定を行う命令が 2 つ以上ある場合、 測定命令に他の演算が含まれている場合、またはその命令が操作するすべての量子ビットを測定していない場合、instructions がボックス内のいずれかの演算をサポートしていない backend.target 場合、または pass_manager によって追加された古典レジスタが正確に 1 回だけ測定対象に含まれていない場合。

このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。