Qreservoir is a lightweight python package built on top of qulacs to simulate quantum extreme learning and quantum reservoir computing models.
Qreservoir is licensed under the MIT license.
Documentation and API: https://owenagnel.github.io/qreservoir.
pip install qreservoir
Uninstall Qreservoir:
pip uninstall qreservoir
Fast simulation of quantum extreme learning machine and quantum reservoir computing.
from qulacs import Observable
from sklearn.linear_model import LinearRegression
from qreservoir.datasets import Complex_Fourrier
from qreservoir.encoders import ExpEncoder
from qreservoir.models import QELModel
from qreservoir.reservoirs import RotationReservoir
dataset = Complex_Fourrier(complexity=1, size=1000, noise=0.0)
encoder = ExpEncoder(1, 1, 3) # 1 feature, 1 layer, 1 qubit per feature
reservoir = RotationReservoir(encoder, 0, 10) # 0 ancilla qubits, 10 depth
observables = [Observable(3) for _ in range(9)] # create observable set
for i, ob in enumerate(observables[:3]):
ob.add_operator(1.0, f"X {i}")
for i, ob in enumerate(observables[3:6]):
ob.add_operator(1.0, f"Z {i}")
for i, ob in enumerate(observables[6:]):
ob.add_operator(1.0, f"Y {i}")
model = QELModel(reservoir, observables, LinearRegression()) # observable is a qulacs Observable object
X, _, y, _ = dataset.get_train_test()
model.fit(X, y)
print(model.score(X, y))Please cite the original qulacs arXiv paper: Qulacs: a fast and versatile quantum circuit simulator for research purpose
-
Model creation currently a bit clunky. Models should take encoders and reservoirs as two seperate arguments and size of inputs should be determined dynamically when fit/score are called. This is made more difficult by the fact we wish to extract variance and concentration data from the models. Ideally we want
RCModelandQELModelto implement scikit-learn'sBaseEstimatorinterface. -
Additional tests should be written for datasets and new reservoirs/encoders
-
Improve package structure by using python specific object oriented features.