Mein Ziel ist es, ein Rauschmodell zu erstellen, dessen Fehler proportional zu denen eines gefälschten Backends sind. Zum Beispiel ein Backend, bei dem jede Fehlerstärke 10 % der Stärke in FakeManila beträgt.
Ich habe mit
ein Rauschmodell aus dem gefälschten Backend extrahiert
Code: Select all
from qiskit.providers.fake_provider import FakeManila
from qiskit.providers.aer.noise import NoiseModel
manila_backend = FakeManila()
nm_1 = NoiseModel.from_backend(manila_backend)
Für ein bestimmtes Gatter und ein bestimmtes Qubit (hier „x“ und 2) kann ich den lokalen Quantenfehler mit
extrahieren
Code: Select all
error1 = nm_1._local_quantum_errors['x'][(2,)]
extracted_dict = error1.to_dict()
Dann kann ich die Wahrscheinlichkeiten im Diktat manipulieren und die Änderungen auf das Rauschmodell anwenden mit
Code: Select all
new_error = error1.from_dict(extracted_dict)
nm_1._local_quantum_errors['x'][(2,)] = new_error
Dies funktioniert gut mit allen einzelnen Qubits und allen Qubits für dieses bestimmte Backend. Für „cx“-Gatter gilt jedoch das entsprechende Verfahren (ohne auch nur die Wahrscheinlichkeiten zu ändern):
Code: Select all
error2 = nm_1._local_quantum_errors['cx'][(3, 4)]
extracted_dict = error2.to_dict()
new_error = error2.from_dict(extracted_dict)
nm_1._local_quantum_errors['cx'][(3, 4)] = new_error
ergibt einen NoiseError: „Fehlergate für Anweisung nicht erkannt“. Wie kann ich das umgehen?