This repository contains the official Python implementation of Generative Quantum Machine Learning via Denoising Diffusion Probabilistic Models, an article by Bingzhi Zhang, Peng Xu, Xiaohui Chen, and Quntao Zhuang.
@misc{zhang2023generative,
title={Generative quantum machine learning via denoising diffusion probabilistic models},
author={Bingzhi Zhang and Peng Xu and Xiaohui Chen and Quntao Zhuang},
year={2023},
eprint={2310.05866},
archivePrefix={arXiv},
primaryClass={quant-ph}
}
The simulation of quantum circuit is performed via the TensorCircuit package. We explored with the PyTorch, TensorFlow, and JAX backends during development. As a result, all three are required in order to run all the notebooks presented in this repository. Use of GPU is not required, but highly recommended.
Additionally, the packages POT and OTT are required for the computation of Wasserstein distance, opt_einsum
is used for speeding up certain evaluation, and Optax is needed for optimization with the JAX backend.
Notebooks in this repository can be used to reproduce the experiment presented in the paper. Their file names are self-explanatory:
Notebook | Generation Task | Backend |
---|---|---|
QDDPM_circle |
Circular States | TensorFlow |
QDDPM_cluster |
Clustered State | PyTorch |
QDDPM_noise |
Correlated Noise | TensorFlow |
QDDPM_phase |
Many-body Phase | JAX |
In addition to these, the two files QDT_training.ipynb
and QGAN_training.ipynb
show the training process of our benchmark models (Quantum Direct Transport and Quantum GAN, respectfully), and both utilize the JAX backend.
Lastly, code in bloch_visualize.ipynb
were used to generate the Bloch sphere visualizations used in the paper.