quantum-perceptron / gradio_app.py
ashutosh1919's picture
Changed distibution plot
2b9363f
import gradio as gr
import matplotlib
import matplotlib.pyplot as plt
from quantum_perceptron import Perceptron
matplotlib.pyplot.switch_backend('Agg')
def run_perceptron(
num_qubits: int,
input_value: int,
weight_value: int,
num_iters: int
):
p = Perceptron(num_qubits, weight_value, input_value)
counts = p.measure_circuit(num_iters)
counts.setdefault('0', 0)
counts.setdefault('1', 0)
prob_1 = counts['1'] / num_iters
freq_hist = plt.figure()
plt.bar(counts.keys(), counts.values(), width=0.5)
for i, v in enumerate(list(counts.values())):
plt.text(i, v+10, v)
plt.xlabel('Measured State')
plt.ylabel('Frequency of Measured State')
freq_hist.subplots_adjust(top=0.2)
freq_hist.tight_layout()
return prob_1, freq_hist
app_inputs = [
gr.Slider(1, 9, value=2, step=1, label="Number of Qubits"),
gr.Number(value=12, label="Input Value", precision=0),
gr.Number(value=13, label="Weight Value", precision=0),
gr.Number(value=1000,
label="Number of Measurement Iterations",
precision=0),
]
app_outputs = [
gr.Number(precision=2, label="Probability of Firing Perceptron"),
gr.Plot(label="Distribution of Measurement Frequencies")
]
demo = gr.Interface(
fn=run_perceptron,
inputs=app_inputs,
outputs=app_outputs,
title="Simulate Quantum Perceptron",
)
demo.launch()