uniqc.torch_adapter.quantum_layer module

QuantumLayer: PyTorch nn.Module for quantum circuits.

This module provides a PyTorch-compatible layer that wraps a parametric quantum circuit, enabling gradient-based optimization via the parameter-shift rule.

class uniqc.torch_adapter.quantum_layer.QuantumLayer(circuit, expectation_fn, n_outputs=1, init_params=None, shift=1.5707963267948966)[source]

Bases: Module

PyTorch layer wrapping a parametric quantum circuit.

Supports automatic differentiation via the parameter-shift rule for gradient-based optimization.

Parameters:
  • circuit – Parametric Circuit or template with _parameters

  • expectation_fn – Function computing expectation from a bound circuit

  • n_outputs – Number of output values (default: 1)

  • init_params – Initial parameter values (optional)

  • shift – Shift value for parameter-shift rule (default: π/2)

Example

>>> @circuit_def(name="vqe", qregs={"q": 2}, params=["theta"])
... def vqe_circuit(circ, q, theta):
...     circ.ry(q[0], theta[0])
...     circ.cnot(q[0], q[1])
...     return circ
>>>
>>> qlayer = QuantumLayer(
...     circuit=vqe_circuit.build_standalone(),
...     expectation_fn=lambda c: simulate_and_measure(c)
... )
>>> optimizer = torch.optim.Adam(qlayer.parameters(), lr=0.01)
extra_repr()[source]

Return the extra representation of the module.

To print customized extra information, you should re-implement this method in your own modules. Both single-line and multi-line strings are acceptable.

forward(x=None)[source]

Execute the quantum circuit and return expectation values.

Parameters:

x – Optional input tensor (for data encoding circuits)

Returns:

Tensor of expectation values