Examples#
Creating a QNN circuit#
from qailab.circuit import build_circuit, RotationalEncoder, CXEntangler, RealAmplitudesBlock
input_encoder = RotationalEncoder('x','input')
quantum_circuit = build_circuit(
3,
[
input_encoder,
CXEntangler(),
RealAmplitudesBlock('weight'),
input_encoder, #You can put the same block twice in different parts of the circuit. It will encode the same parameters
CXEntangler(),
RealAmplitudesBlock('weight')
],
measure_qubits=[0,1]
)
Making a hybrid neural network#
import torch.nn as nn
from qailab.torch import QLayer
qlayer = QLayer(
quantum_circuit,
shots = 2048
)
sequential_net = nn.Sequential(
nn.Linear(4,qlayer.in_features),
nn.ReLU()
qlayer,
nn.Linear(qlayer.out_features,4),
nn.Softmax()
)
Training a QModel instance#
model = QModel(
module=sequential_net,
loss=nn.CrossEntropyLoss(),
optimizer_type='adam',
learning_rate=0.001,
batch_size=4,
validation_fraction=0.1,
epochs=10
)
model.fit(X,y)