This dataset contains data from The power and limitations of learning quantum dynamics incoherently by Jerbi S., Gibbs J., Rudolph M. S., et al. It includes initial states, a Hamiltonian to evolve these states, and the resulting classical shadow data measured from the circuits. These can be used to train a variational quantum circuit that simulates the dynamics of the Hamiltonian, as done in the paper.
Description of the dataset
If we had several known input states, applied an unknown quantum operator to them, and sampled measurements from the final states, could we reproduce the unknown operator? How hard would it be?
These questions are addressed in detail by Jerbi et al. They demonstrate one way to reproduce the unknown operator is to train a variational quantum circuit that learns to produce the same output.
This dataset provides data used by the authors to demonstrate this method. For this demonstration, two training states were drawn from the Haar random distribution as initial states. A variational quantum circuit was applied to these initial states and its parameters were optimized with respect to a cost function (see equation 5). After optimization, the output of the variational circuit approximated the output of a target Trotterized transverse-field Ising Hamiltonian.
This dataset provides the information required to reproduce the training in the paper. It includes:
Additional details
ibmq_kolkata
.0
corresponds to Pauli X, 1
corresponds to Pauli Y, and 2
corresponds to Pauli Z.Example usage
To create a circuit that reproduces the system measured in the paper:
[ds] = qml.data.load("learning-dynamics-incoherently")
@qml.qnode(qml.device('default.qubit'))
def circuit(training_circuit):
# apply circuit to get \psi, the state sampled from a Haar random distribution
for operation in ds.training_circuits[0]:
qml.apply(operation)
# apply first-order, 1-step, Trotterized hamiltonian evolution for time=0.1
qml.TrotterProduct(ds.hamiltonian, time=0.1, n=1,order=1)
return qml.expval(qml.PauliZ(wires=0))
circuit(0) # output: tensor(-0.46754745, requires_grad=True)
To obtain estimated expectation values using the shadow measurements in this dataset:
bits = ds.shadow_meas[0]
recipes = ds.shadow_bases[0]
cs = qml.ClassicalShadow(bits, recipes)
cs.expval(qml.PauliZ(wires=0)) # output: array(-0.26416043)
Sofienne Jerbi, Joe Gibbs, Manuel S. Rudolph, Matthias C. Caro, Patrick J. Coles, Hsin-Yuan Huang, Zoe Holmes
version 0.1 : initial public release
Manuel Rudolph
Researching Quantum Algorithms with a focus on Quantum Machine Learning and Classical Simulation Methods