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)