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

Realizza il programma quantistico di un esperimento standard di apprendimento in presenza di rumore.

L'esperimento è configurato per apprendere un modello di Pauli-Lindblad a 2 locali per ciascun livello definito in instructions tramite il protocollo di apprendimento “vanilla”, con percorsi generati tramite EvenDepthVanillaPaths e sequenze di istruzioni generate tramite VanillaInstructionSequences, nonché un modello di rumore SPAM con preparazione perfetta e un modello di rumore di misurazione a 1 locale.

Ogni istruzione corrisponde a una porta logica del modello. Un riquadro che contiene un'annotazione di iniezione di rumore assume il riferimento di tale annotazione come nome del gate, mentre qualsiasi altro riquadro viene denominato automaticamente. Il modello addestrato restituisce i risultati in base a quei nomi, quindi contrassegna le caselle che devono essere identificate nel risultato.

Se viene fornita una casella "tutte le misurazioni" ( instructions ovvero una casella che misura ogni qubit presente in tutte le istruzioni fornite), questa verrà considerata come il livello di misurazione. Se non viene specificato alcun livello di questo tipo, ne verrà creato uno predefinito con il nome "M".

Esempio:

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

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

Gli argomenti creg_prefix, local_clifford_ref_prefix, e pass_manager vengono tutti passati direttamente a ExecutorCircuitGenerator.

Parametri

  • backend – Il backend che fornisce le impostazioni di compilazione: l’insieme di porte, la mappa di accoppiamento e il numero di qubit in base ai quali vengono costruiti i circuiti generati.
  • istruzioni – Le istruzioni per imparare a riconoscere il rumore. Ogni istruzione deve contenere un’operazione BoxOp e deve essere autoinversa, ad eccezione di una casella che misura tutti i qubit rilevanti.
  • num_randomizations – Il numero di randomizzazioni da utilizzare per ogni circuito di apprendimento.
  • shots_per_randomization – Il numero di colpi da utilizzare per ogni randomizzazione.
  • fragment_depths – Le profondità dei frammenti da utilizzare, ovvero il numero di ripetizioni del frammento ripetibile di ciascun percorso.
  • creg_prefix – Il prefisso assegnato a tutti i nomi creg utilizzati nelle misurazioni degli esperimenti di apprendimento. Il valore predefinito è "meas".
  • local_clifford_ref_prefix – Il prefisso assegnato a tutti i riferimenti ai parametri Clifford locali nei circuiti modello. Il valore predefinito è "c".
  • pass_manager – Un gestore di passaggi opzionale da applicare a ogni circuito modello generato.

Risultati

Il programma da inviare, il cui risultato process_learning_result() viene utilizzato.

Aumenti

ValueError – Se istruzioni è vuoto, se un’istruzione qualsiasi non contiene un BoxOp, se o num_randomizzazioni numero_di_campioni_per_randomizzazione è minore di uno, se una voce qualsiasi di profondità_dei_frammenti è negativa, se vi è più di un’istruzione di misurazione, se un’istruzione di misurazione contiene anche altre operazioni o non misura tutti i qubit su cui istruzioni agisce, se non backend.target supporta un’operazione di una delle caselle, oppure se un registro classico aggiunto da non pass_manager viene misurato esattamente una volta.

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.