Skip to content
This is the code "The Neural Qubit", the quantum machine learning research paper & video by Siraj Raval
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information. Add files via upload Sep 4, 2019 Add files via upload Sep 4, 2019 Add files via upload Sep 4, 2019



This is the related code for the research paper & Youtube video by Siraj Raval titled "The Neural Qubit". This model is a hybrid classical-quantum classifier, with a number of input classical layers that control the parameters of an input layer in a two-mode continous-variable quantum neural network. The model is trained so that it outputs a photon in one mode for a genuine credit card transaction, and outputs a photon in the other mode for a fraudulent transaction. The classifier has an area under the ROC curve of 0.953, compared to the optimal value of 1. This is on a simulated quantum environment and classical algorithms can outperform it. I intuit that on a physical quantum computer, the ROC could outperform classical algorithms, but more research is needed to confirm that. XanaduAI had a great proof of concept in this direction, I built off of their variational circuit code by modifying the fock basis truncation, adding an extra photonic quantum layer, and increasing the intial gate parameter seed. Next, i want to try to re-do this code but on a real quantum computer, using D-Wave's quantum API

Full paper here


  • Tensorflow 1.3
  • Strawberry Fields
  • numpy


Download the Strawberry Fields library. This code uses the Strawberry Fields Tensorflow backend. Right now, Strawberry Fields on supports Tensorflow 1.3. And Tensorflow 1.3 only supports versions of Python less than 3.7. So make sure you have those two, and the code will run fine. More specific installation details are on the Strawberry fields README page.


Step 1 - Acquire data

Download the Credit Card Fraud Detection dataset from Kaggle. Extract the creditcard.csv file & place it in this folder.

Step 2 - Data preprocessing

Run the data processor script to split the data into training & testing sets


Step 3 - Train the model & monitor progress

Run the training loop using the fraud detection script. This script can take several hours to complete on a typical PC. It's quite computationally expensive to simulate quantum dynamics on a classical computer. This is why we need quantum computers.


Since the model is periodically saved during training, you can monitor progress by launching TensorBoard in terminal. simulation_label is the name used to refer to a particular run of the script (this is specified within the file itself; the default is 1).

tensorboard --logdir=outputs/tensorboard/simulation_label

Step 4 - Test the model

First, edit to point to the simulation label and checkpoint of the model which is to be tested. These are specified under the variables simulation_label and ckpt_val in

Next, test the model by running the testing script


The output of testing is a confusion table, which can be found as a numpy array in outputs/confusion/simulation_label. The confusion table is given for multiple threshold probabilities for a transaction to be considered as genuine.

Step 5 - Visualize the results

The performance of the trained model can be investigated with:


which outputs the receiver operating characteristic (ROC) curve and confusion matrix for the optimal threshold probability.


XanaduAI! Keep pushing neural network theory into the thrilling world of quantum information processing. Also D-Wave, for believing in me. Dr. Matthew Fisher thank you for your work on quantum cogniton as well. Max Tegmark, thank you for helping me learn about the arguments against quantum cognition. And Guillame Verdon, thank you for being my Quantum advisor & friend at Google X.

You can’t perform that action at this time.