/QuantGenMdl

Primary LanguageJupyter Notebook

QuantGenMdl

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.

Citation

@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}
}

Prerequisite

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.

File Structure

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.