Skip to content

Results are limited to the current section: Qadence

Product news

Backends

Backends allow execution of Qadence abstract quantum circuits. They could be chosen from a variety of simulators, emulators and hardware and can enable circuit differentiability (external). The primary way to interact and configure a backend is via the high-level API QuantumModel.

PyQTorch (external): An efficient, large-scale simulator designed for quantum machine learning, seamlessly integrated with the popular PyTorch (external) deep learning framework for automatic differentiability. It also offers analog computing for time-(in)dependent pulses. See PyQTorchBackend.

Pulser (external): A Python library for pulse-level/analog control of neutral atom devices. Execution via QuTiP (external). See PulserBackend.

More: Proprietary Qadence extensions provide more high-performance backends based on tensor networks or differentiation engines. For more enquiries, please contact: info@pasqal.com.

The DifferentiableBackend class enables different differentiation modes for the given backend. This can be chosen from two types:

  • Automatic differentiation (AD): available for PyTorch based backends (PyQTorch).
  • Parameter Shift Rules (PSR): available for all backends. See this section for more information on differentiability and PSR.

In practice, only a diff_mode should be provided in the QuantumModel. Please note that diff_mode defaults to None:

import sympy
import torch
from qadence import Parameter, RX, RZ, Z, CNOT, QuantumCircuit, QuantumModel, chain, BackendName, DiffMode
x = Parameter("x", trainable=False)
y = Parameter("y", trainable=False)
fm = chain(
RX(0, 3 * x),
RX(0, x),
RZ(1, sympy.exp(y)),
RX(0, 3.14),
RZ(1, "theta")
)
ansatz = CNOT(0, 1)
block = chain(fm, ansatz)
circuit = QuantumCircuit(2, block)
observable = Z(0)
# DiffMode.GPSR is available for any backend.
# DiffMode.AD is only available for natively differentiable backends.
model = QuantumModel(circuit, observable, backend=BackendName.PYQTORCH, diff_mode=DiffMode.GPSR)
# Get some values for the feature parameters.
values = {"x": (x := torch.tensor([0.5], requires_grad=True)), "y": torch.tensor([0.1])}
# Compute expectation.
exp = model.expectation(values)
# Differentiate the expectation wrt x.
dexp_dx = torch.autograd.grad(exp, x, torch.ones_like(exp))
<span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="err">dexp_dx</span><span class="w"> </span><span class="err">=</span><span class="w"> </span><span class="err">(</span><span class="kc">tens</span><span class="err">or(</span><span class="p">[</span><span class="mf">3.6398</span><span class="p">]</span><span class="err">)</span><span class="p">,</span><span class="err">)</span>
</code>

Every backend in Qadence inherits from the abstract Backend class: Backend and implement the following methods:

  • run: propagate the initial state according to the quantum circuit and return the final wavefunction object.
  • sample: sample from a circuit.
  • expectation: computes the expectation of a circuit given an observable.
  • convert: convert the abstract QuantumCircuit object to its backend-native representation including a backend specific parameter embedding function.

Backends are purely functional objects which take as input the values for the circuit parameters and return the desired output from a call to a method. In order to use a backend directly, embedded parameters must be supplied as they are returned by the backend specific embedding function.

Here is a simple demonstration of the use of the PyQTorch backend to execute a circuit in non-differentiable mode:

from qadence import QuantumCircuit, FeatureParameter, RX, RZ, CNOT, hea, chain
# Construct a feature map.
x = FeatureParameter("x")
z = FeatureParameter("y")
fm = chain(RX(0, 3 * x), RZ(1, z), CNOT(0, 1))
# Construct a circuit with an hardware-efficient ansatz.
circuit = QuantumCircuit(3, fm, hea(3,1))

The abstract QuantumCircuit can now be converted to its native representation via the PyQTorch backend.

from qadence import backend_factory
# Use only PyQtorch in non-differentiable mode:
backend = backend_factory("pyqtorch")
# The `Converted` object
# (contains a `ConvertedCircuit` with the original and native representation)
conv = backend.convert(circuit)
<span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="err">co</span><span class="kc">n</span><span class="err">v.circui</span><span class="kc">t</span><span class="err">.origi</span><span class="kc">nal</span><span class="w"> </span><span class="err">=</span><span class="w"> </span><span class="err">Chai</span><span class="kc">n</span><span class="err">Block(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="err">)</span>
<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="err">├──</span><span class="w"> </span><span class="err">Chai</span><span class="kc">n</span><span class="err">Block(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="err">)</span>
<a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="err"></span><span class="w"> </span><span class="err">├──</span><span class="w"> </span><span class="err">RX(</span><span class="mi">0</span><span class="err">)</span><span class="w"> </span><span class="p">[</span><span class="err">params</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="err">'</span><span class="mi">3</span><span class="err">*x'</span><span class="p">]]</span>
<a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="err"></span><span class="w"> </span><span class="err">├──</span><span class="w"> </span><span class="err">RZ(</span><span class="mi">1</span><span class="err">)</span><span class="w"> </span><span class="p">[</span><span class="err">params</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="err">'y'</span><span class="p">]]</span>
<a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a><span class="err"></span><span class="w"> </span><span class="err">└──</span><span class="w"> </span><span class="err">CNOT(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="err">)</span>
<a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a><span class="err">└──</span><span class="w"> </span><span class="err">Chai</span><span class="kc">n</span><span class="err">Block(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="err">)</span><span class="w"> </span><span class="p">[</span><span class="kc">ta</span><span class="err">g</span><span class="p">:</span><span class="w"> </span><span class="err">HEA</span><span class="p">]</span>
<a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a><span class="w"> </span><span class="err">├──</span><span class="w"> </span><span class="err">Chai</span><span class="kc">n</span><span class="err">Block(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="err">)</span>
<a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a><span class="w"> </span><span class="err"></span><span class="w"> </span><span class="err">├──</span><span class="w"> </span><span class="err">Kro</span><span class="kc">n</span><span class="err">Block(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="err">)</span>
<a id="__codelineno-1-9" name="__codelineno-1-9" href="#__codelineno-1-9"></a><span class="w"> </span><span class="err"></span><span class="w"> </span><span class="err"></span><span class="w"> </span><span class="err">├──</span><span class="w"> </span><span class="err">RX(</span><span class="mi">0</span><span class="err">)</span><span class="w"> </span><span class="p">[</span><span class="err">params</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="err">'</span><span class="kc">t</span><span class="err">he</span><span class="kc">ta</span><span class="err">_</span><span class="mi">0</span><span class="err">'</span><span class="p">]]</span>
<a id="__codelineno-1-10" name="__codelineno-1-10" href="#__codelineno-1-10"></a><span class="w"> </span><span class="err"></span><span class="w"> </span><span class="err"></span><span class="w"> </span><span class="err">├──</span><span class="w"> </span><span class="err">RX(</span><span class="mi">1</span><span class="err">)</span><span class="w"> </span><span class="p">[</span><span class="err">params</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="err">'</span><span class="kc">t</span><span class="err">he</span><span class="kc">ta</span><span class="err">_</span><span class="mi">1</span><span class="err">'</span><span class="p">]]</span>
<a id="__codelineno-1-11" name="__codelineno-1-11" href="#__codelineno-1-11"></a><span class="w"> </span><span class="err"></span><span class="w"> </span><span class="err"></span><span class="w"> </span><span class="err">└──</span><span class="w"> </span><span class="err">RX(</span><span class="mi">2</span><span class="err">)</span><span class="w"> </span><span class="p">[</span><span class="err">params</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="err">'</span><span class="kc">t</span><span class="err">he</span><span class="kc">ta</span><span class="err">_</span><span class="mi">2</span><span class="err">'</span><span class="p">]]</span>
<a id="__codelineno-1-12" name="__codelineno-1-12" href="#__codelineno-1-12"></a><span class="w"> </span><span class="err"></span><span class="w"> </span><span class="err">├──</span><span class="w"> </span><span class="err">Kro</span><span class="kc">n</span><span class="err">Block(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="err">)</span>
<a id="__codelineno-1-13" name="__codelineno-1-13" href="#__codelineno-1-13"></a><span class="w"> </span><span class="err"></span><span class="w"> </span><span class="err"></span><span class="w"> </span><span class="err">├──</span><span class="w"> </span><span class="err">RY(</span><span class="mi">0</span><span class="err">)</span><span class="w"> </span><span class="p">[</span><span class="err">params</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="err">'</span><span class="kc">t</span><span class="err">he</span><span class="kc">ta</span><span class="err">_</span><span class="mi">3</span><span class="err">'</span><span class="p">]]</span>
<a id="__codelineno-1-14" name="__codelineno-1-14" href="#__codelineno-1-14"></a><span class="w"> </span><span class="err"></span><span class="w"> </span><span class="err"></span><span class="w"> </span><span class="err">├──</span><span class="w"> </span><span class="err">RY(</span><span class="mi">1</span><span class="err">)</span><span class="w"> </span><span class="p">[</span><span class="err">params</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="err">'</span><span class="kc">t</span><span class="err">he</span><span class="kc">ta</span><span class="err">_</span><span class="mi">4</span><span class="err">'</span><span class="p">]]</span>
<a id="__codelineno-1-15" name="__codelineno-1-15" href="#__codelineno-1-15"></a><span class="w"> </span><span class="err"></span><span class="w"> </span><span class="err"></span><span class="w"> </span><span class="err">└──</span><span class="w"> </span><span class="err">RY(</span><span class="mi">2</span><span class="err">)</span><span class="w"> </span><span class="p">[</span><span class="err">params</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="err">'</span><span class="kc">t</span><span class="err">he</span><span class="kc">ta</span><span class="err">_</span><span class="mi">5</span><span class="err">'</span><span class="p">]]</span>
<a id="__codelineno-1-16" name="__codelineno-1-16" href="#__codelineno-1-16"></a><span class="w"> </span><span class="err"></span><span class="w"> </span><span class="err">└──</span><span class="w"> </span><span class="err">Kro</span><span class="kc">n</span><span class="err">Block(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="err">)</span>
<a id="__codelineno-1-17" name="__codelineno-1-17" href="#__codelineno-1-17"></a><span class="w"> </span><span class="err"></span><span class="w"> </span><span class="err">├──</span><span class="w"> </span><span class="err">RX(</span><span class="mi">0</span><span class="err">)</span><span class="w"> </span><span class="p">[</span><span class="err">params</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="err">'</span><span class="kc">t</span><span class="err">he</span><span class="kc">ta</span><span class="err">_</span><span class="mi">6</span><span class="err">'</span><span class="p">]]</span>
<a id="__codelineno-1-18" name="__codelineno-1-18" href="#__codelineno-1-18"></a><span class="w"> </span><span class="err"></span><span class="w"> </span><span class="err">├──</span><span class="w"> </span><span class="err">RX(</span><span class="mi">1</span><span class="err">)</span><span class="w"> </span><span class="p">[</span><span class="err">params</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="err">'</span><span class="kc">t</span><span class="err">he</span><span class="kc">ta</span><span class="err">_</span><span class="mi">7</span><span class="err">'</span><span class="p">]]</span>
<a id="__codelineno-1-19" name="__codelineno-1-19" href="#__codelineno-1-19"></a><span class="w"> </span><span class="err"></span><span class="w"> </span><span class="err">└──</span><span class="w"> </span><span class="err">RX(</span><span class="mi">2</span><span class="err">)</span><span class="w"> </span><span class="p">[</span><span class="err">params</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="err">'</span><span class="kc">t</span><span class="err">he</span><span class="kc">ta</span><span class="err">_</span><span class="mi">8</span><span class="err">'</span><span class="p">]]</span>
<a id="__codelineno-1-20" name="__codelineno-1-20" href="#__codelineno-1-20"></a><span class="w"> </span><span class="err">└──</span><span class="w"> </span><span class="err">Chai</span><span class="kc">n</span><span class="err">Block(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="err">)</span>
<a id="__codelineno-1-21" name="__codelineno-1-21" href="#__codelineno-1-21"></a><span class="w"> </span><span class="err">├──</span><span class="w"> </span><span class="err">Kro</span><span class="kc">n</span><span class="err">Block(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="err">)</span>
<a id="__codelineno-1-22" name="__codelineno-1-22" href="#__codelineno-1-22"></a><span class="w"> </span><span class="err"></span><span class="w"> </span><span class="err">└──</span><span class="w"> </span><span class="err">CNOT(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="err">)</span>
<a id="__codelineno-1-23" name="__codelineno-1-23" href="#__codelineno-1-23"></a><span class="w"> </span><span class="err">└──</span><span class="w"> </span><span class="err">Kro</span><span class="kc">n</span><span class="err">Block(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="err">)</span>
<a id="__codelineno-1-24" name="__codelineno-1-24" href="#__codelineno-1-24"></a><span class="w"> </span><span class="err">└──</span><span class="w"> </span><span class="err">CNOT(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="err">)</span>
<a id="__codelineno-1-25" name="__codelineno-1-25" href="#__codelineno-1-25"></a><span class="err">co</span><span class="kc">n</span><span class="err">v.circui</span><span class="kc">t</span><span class="err">.</span><span class="kc">nat</span><span class="err">ive</span><span class="w"> </span><span class="err">=</span><span class="w"> </span><span class="err">Qua</span><span class="kc">ntu</span><span class="err">mCircui</span><span class="kc">t</span><span class="err">(</span>
<a id="__codelineno-1-26" name="__codelineno-1-26" href="#__codelineno-1-26"></a><span class="w"> </span><span class="err">(opera</span><span class="kc">t</span><span class="err">io</span><span class="kc">ns</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">ModuleLis</span><span class="kc">t</span><span class="err">(</span>
<a id="__codelineno-1-27" name="__codelineno-1-27" href="#__codelineno-1-27"></a><span class="w"> </span><span class="err">(</span><span class="mi">0</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">Seque</span><span class="kc">n</span><span class="err">ce(</span>
<a id="__codelineno-1-28" name="__codelineno-1-28" href="#__codelineno-1-28"></a><span class="w"> </span><span class="err">(opera</span><span class="kc">t</span><span class="err">io</span><span class="kc">ns</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">ModuleLis</span><span class="kc">t</span><span class="err">(</span>
<a id="__codelineno-1-29" name="__codelineno-1-29" href="#__codelineno-1-29"></a><span class="w"> </span><span class="err">(</span><span class="mi">0</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">Seque</span><span class="kc">n</span><span class="err">ce(</span>
<a id="__codelineno-1-30" name="__codelineno-1-30" href="#__codelineno-1-30"></a><span class="w"> </span><span class="err">(opera</span><span class="kc">t</span><span class="err">io</span><span class="kc">ns</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">ModuleLis</span><span class="kc">t</span><span class="err">(</span>
<a id="__codelineno-1-31" name="__codelineno-1-31" href="#__codelineno-1-31"></a><span class="w"> </span><span class="err">(</span><span class="mi">0</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">RX(</span><span class="kc">tar</span><span class="err">ge</span><span class="kc">t</span><span class="p">:</span><span class="w"> </span><span class="err">(</span><span class="mi">0</span><span class="p">,</span><span class="err">)</span><span class="p">,</span><span class="w"> </span><span class="err">param</span><span class="p">:</span><span class="w"> </span><span class="err">a</span><span class="mi">25217</span><span class="kc">f</span><span class="err">b</span><span class="mi">-3556-49</span><span class="err">b</span><span class="mi">8-</span><span class="err">a</span><span class="mi">44</span><span class="err">d</span><span class="mi">-</span><span class="err">c</span><span class="mi">92752</span><span class="err">daa</span><span class="mi">906</span><span class="err">)</span>
<a id="__codelineno-1-32" name="__codelineno-1-32" href="#__codelineno-1-32"></a><span class="w"> </span><span class="err">(</span><span class="mi">1</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">RZ(</span><span class="kc">tar</span><span class="err">ge</span><span class="kc">t</span><span class="p">:</span><span class="w"> </span><span class="err">(</span><span class="mi">1</span><span class="p">,</span><span class="err">)</span><span class="p">,</span><span class="w"> </span><span class="err">param</span><span class="p">:</span><span class="w"> </span><span class="mi">19</span><span class="err">cc</span><span class="mi">9211-</span><span class="err">cb</span><span class="mf">2e-4</span><span class="err">de</span><span class="mi">7-99</span><span class="err">d</span><span class="mi">6-</span><span class="err">c</span><span class="mi">31</span><span class="kc">f</span><span class="err">d</span><span class="mf">18e</span><span class="err">c</span><span class="mi">2</span><span class="err">c</span><span class="mi">9</span><span class="err">)</span>
<a id="__codelineno-1-33" name="__codelineno-1-33" href="#__codelineno-1-33"></a><span class="w"> </span><span class="err">(</span><span class="mi">2</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">CNOT(co</span><span class="kc">ntr</span><span class="err">ol</span><span class="p">:</span><span class="w"> </span><span class="err">(</span><span class="mi">0</span><span class="p">,</span><span class="err">)</span><span class="p">,</span><span class="w"> </span><span class="kc">tar</span><span class="err">ge</span><span class="kc">t</span><span class="p">:</span><span class="w"> </span><span class="err">(</span><span class="mi">1</span><span class="p">,</span><span class="err">))</span>
<a id="__codelineno-1-34" name="__codelineno-1-34" href="#__codelineno-1-34"></a><span class="w"> </span><span class="err">)</span>
<a id="__codelineno-1-35" name="__codelineno-1-35" href="#__codelineno-1-35"></a><span class="w"> </span><span class="err">)</span>
<a id="__codelineno-1-36" name="__codelineno-1-36" href="#__codelineno-1-36"></a><span class="w"> </span><span class="err">(</span><span class="mi">1</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">Seque</span><span class="kc">n</span><span class="err">ce(</span>
<a id="__codelineno-1-37" name="__codelineno-1-37" href="#__codelineno-1-37"></a><span class="w"> </span><span class="err">(opera</span><span class="kc">t</span><span class="err">io</span><span class="kc">ns</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">ModuleLis</span><span class="kc">t</span><span class="err">(</span>
<a id="__codelineno-1-38" name="__codelineno-1-38" href="#__codelineno-1-38"></a><span class="w"> </span><span class="err">(</span><span class="mi">0</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">Seque</span><span class="kc">n</span><span class="err">ce(</span>
<a id="__codelineno-1-39" name="__codelineno-1-39" href="#__codelineno-1-39"></a><span class="w"> </span><span class="err">(opera</span><span class="kc">t</span><span class="err">io</span><span class="kc">ns</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">ModuleLis</span><span class="kc">t</span><span class="err">(</span>
<a id="__codelineno-1-40" name="__codelineno-1-40" href="#__codelineno-1-40"></a><span class="w"> </span><span class="err">(</span><span class="mi">0</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">Merge(</span>
<a id="__codelineno-1-41" name="__codelineno-1-41" href="#__codelineno-1-41"></a><span class="w"> </span><span class="err">(opera</span><span class="kc">t</span><span class="err">io</span><span class="kc">ns</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">ModuleLis</span><span class="kc">t</span><span class="err">(</span>
<a id="__codelineno-1-42" name="__codelineno-1-42" href="#__codelineno-1-42"></a><span class="w"> </span><span class="err">(</span><span class="mi">0</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">RX(</span><span class="kc">tar</span><span class="err">ge</span><span class="kc">t</span><span class="p">:</span><span class="w"> </span><span class="err">(</span><span class="mi">0</span><span class="p">,</span><span class="err">)</span><span class="p">,</span><span class="w"> </span><span class="err">param</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="err">c</span><span class="mi">782915-786</span><span class="err">b</span><span class="mf">-4e</span><span class="err">be</span><span class="mi">-</span><span class="err">b</span><span class="mi">9</span><span class="err">dd</span><span class="mi">-</span><span class="err">c</span><span class="mi">08</span><span class="kc">fa</span><span class="mi">2</span><span class="kc">fa</span><span class="mf">687e</span><span class="err">)</span>
<a id="__codelineno-1-43" name="__codelineno-1-43" href="#__codelineno-1-43"></a><span class="w"> </span><span class="err">(</span><span class="mi">1</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">RY(</span><span class="kc">tar</span><span class="err">ge</span><span class="kc">t</span><span class="p">:</span><span class="w"> </span><span class="err">(</span><span class="mi">0</span><span class="p">,</span><span class="err">)</span><span class="p">,</span><span class="w"> </span><span class="err">param</span><span class="p">:</span><span class="w"> </span><span class="mf">548e</span><span class="kc">f</span><span class="mi">485-8</span><span class="err">c</span><span class="mi">00-4858-</span><span class="err">bce</span><span class="mi">2-78</span><span class="err">d</span><span class="mi">6850</span><span class="kc">f</span><span class="err">ccce)</span>
<a id="__codelineno-1-44" name="__codelineno-1-44" href="#__codelineno-1-44"></a><span class="w"> </span><span class="err">(</span><span class="mi">2</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">RX(</span><span class="kc">tar</span><span class="err">ge</span><span class="kc">t</span><span class="p">:</span><span class="w"> </span><span class="err">(</span><span class="mi">0</span><span class="p">,</span><span class="err">)</span><span class="p">,</span><span class="w"> </span><span class="err">param</span><span class="p">:</span><span class="w"> </span><span class="mi">944</span><span class="err">b</span><span class="mi">50</span><span class="kc">f</span><span class="mi">0-3</span><span class="err">d</span><span class="kc">f</span><span class="mi">6-4349-</span><span class="err">b</span><span class="kc">f</span><span class="mi">82-</span><span class="kc">fe</span><span class="mi">9</span><span class="err">aeb</span><span class="mi">93</span><span class="err">a</span><span class="mi">945</span><span class="err">)</span>
<a id="__codelineno-1-45" name="__codelineno-1-45" href="#__codelineno-1-45"></a><span class="w"> </span><span class="err">)</span>
<a id="__codelineno-1-46" name="__codelineno-1-46" href="#__codelineno-1-46"></a><span class="w"> </span><span class="err">)</span>
<a id="__codelineno-1-47" name="__codelineno-1-47" href="#__codelineno-1-47"></a><span class="w"> </span><span class="err">(</span><span class="mi">1</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">Merge(</span>
<a id="__codelineno-1-48" name="__codelineno-1-48" href="#__codelineno-1-48"></a><span class="w"> </span><span class="err">(opera</span><span class="kc">t</span><span class="err">io</span><span class="kc">ns</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">ModuleLis</span><span class="kc">t</span><span class="err">(</span>
<a id="__codelineno-1-49" name="__codelineno-1-49" href="#__codelineno-1-49"></a><span class="w"> </span><span class="err">(</span><span class="mi">0</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">RX(</span><span class="kc">tar</span><span class="err">ge</span><span class="kc">t</span><span class="p">:</span><span class="w"> </span><span class="err">(</span><span class="mi">1</span><span class="p">,</span><span class="err">)</span><span class="p">,</span><span class="w"> </span><span class="err">param</span><span class="p">:</span><span class="w"> </span><span class="mi">44</span><span class="err">ccea</span><span class="mi">8</span><span class="kc">f</span><span class="mi">-</span><span class="err">a</span><span class="mi">203-4</span><span class="err">c</span><span class="mf">28-8992-5837337e3e02</span><span class="err">)</span>
<a id="__codelineno-1-50" name="__codelineno-1-50" href="#__codelineno-1-50"></a><span class="w"> </span><span class="err">(</span><span class="mi">1</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">RY(</span><span class="kc">tar</span><span class="err">ge</span><span class="kc">t</span><span class="p">:</span><span class="w"> </span><span class="err">(</span><span class="mi">1</span><span class="p">,</span><span class="err">)</span><span class="p">,</span><span class="w"> </span><span class="err">param</span><span class="p">:</span><span class="w"> </span><span class="mi">851</span><span class="kc">fe</span><span class="mi">64</span><span class="err">a</span><span class="mi">-9</span><span class="err">b</span><span class="mi">70-439</span><span class="err">b</span><span class="mi">-9</span><span class="err">a</span><span class="mi">66-</span><span class="err">de</span><span class="mi">437</span><span class="err">d</span><span class="mi">1</span><span class="err">b</span><span class="mi">282</span><span class="err">c)</span>
<a id="__codelineno-1-51" name="__codelineno-1-51" href="#__codelineno-1-51"></a><span class="w"> </span><span class="err">(</span><span class="mi">2</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">RX(</span><span class="kc">tar</span><span class="err">ge</span><span class="kc">t</span><span class="p">:</span><span class="w"> </span><span class="err">(</span><span class="mi">1</span><span class="p">,</span><span class="err">)</span><span class="p">,</span><span class="w"> </span><span class="err">param</span><span class="p">:</span><span class="w"> </span><span class="err">d</span><span class="mi">98</span><span class="err">ad</span><span class="mi">82</span><span class="err">c</span><span class="mi">-</span><span class="err">cae</span><span class="mi">3-43</span><span class="err">d</span><span class="mi">7-8</span><span class="err">c</span><span class="mi">19-077</span><span class="err">aa</span><span class="mf">45e025</span><span class="kc">f</span><span class="err">)</span>
<a id="__codelineno-1-52" name="__codelineno-1-52" href="#__codelineno-1-52"></a><span class="w"> </span><span class="err">)</span>
<a id="__codelineno-1-53" name="__codelineno-1-53" href="#__codelineno-1-53"></a><span class="w"> </span><span class="err">)</span>
<a id="__codelineno-1-54" name="__codelineno-1-54" href="#__codelineno-1-54"></a><span class="w"> </span><span class="err">(</span><span class="mi">2</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">Merge(</span>
<a id="__codelineno-1-55" name="__codelineno-1-55" href="#__codelineno-1-55"></a><span class="w"> </span><span class="err">(opera</span><span class="kc">t</span><span class="err">io</span><span class="kc">ns</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">ModuleLis</span><span class="kc">t</span><span class="err">(</span>
<a id="__codelineno-1-56" name="__codelineno-1-56" href="#__codelineno-1-56"></a><span class="w"> </span><span class="err">(</span><span class="mi">0</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">RX(</span><span class="kc">tar</span><span class="err">ge</span><span class="kc">t</span><span class="p">:</span><span class="w"> </span><span class="err">(</span><span class="mi">2</span><span class="p">,</span><span class="err">)</span><span class="p">,</span><span class="w"> </span><span class="err">param</span><span class="p">:</span><span class="w"> </span><span class="mi">5</span><span class="err">c</span><span class="mi">2</span><span class="err">c</span><span class="mi">42</span><span class="kc">f</span><span class="err">c</span><span class="mi">-9064-4</span><span class="kc">f</span><span class="err">b</span><span class="mi">5-857</span><span class="err">b</span><span class="mi">-3</span><span class="err">cbba</span><span class="mi">3</span><span class="err">c</span><span class="mi">12806</span><span class="err">)</span>
<a id="__codelineno-1-57" name="__codelineno-1-57" href="#__codelineno-1-57"></a><span class="w"> </span><span class="err">(</span><span class="mi">1</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">RY(</span><span class="kc">tar</span><span class="err">ge</span><span class="kc">t</span><span class="p">:</span><span class="w"> </span><span class="err">(</span><span class="mi">2</span><span class="p">,</span><span class="err">)</span><span class="p">,</span><span class="w"> </span><span class="err">param</span><span class="p">:</span><span class="w"> </span><span class="mi">36</span><span class="err">d</span><span class="mi">4</span><span class="err">c</span><span class="mi">1</span><span class="err">a</span><span class="mi">8-</span><span class="err">bec</span><span class="mi">0-4</span><span class="err">b</span><span class="mi">59-</span><span class="err">baeb</span><span class="mf">-e18</span><span class="err">ac</span><span class="mi">7</span><span class="err">d</span><span class="mi">991</span><span class="err">b</span><span class="mi">3</span><span class="err">)</span>
<a id="__codelineno-1-58" name="__codelineno-1-58" href="#__codelineno-1-58"></a><span class="w"> </span><span class="err">(</span><span class="mi">2</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">RX(</span><span class="kc">tar</span><span class="err">ge</span><span class="kc">t</span><span class="p">:</span><span class="w"> </span><span class="err">(</span><span class="mi">2</span><span class="p">,</span><span class="err">)</span><span class="p">,</span><span class="w"> </span><span class="err">param</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="err">d</span><span class="mi">785898-5201-4213-</span><span class="err">a</span><span class="mi">883-</span><span class="kc">f</span><span class="mi">25</span><span class="err">d</span><span class="mi">587</span><span class="kc">f</span><span class="err">cc</span><span class="mi">8</span><span class="err">d)</span>
<a id="__codelineno-1-59" name="__codelineno-1-59" href="#__codelineno-1-59"></a><span class="w"> </span><span class="err">)</span>
<a id="__codelineno-1-60" name="__codelineno-1-60" href="#__codelineno-1-60"></a><span class="w"> </span><span class="err">)</span>
<a id="__codelineno-1-61" name="__codelineno-1-61" href="#__codelineno-1-61"></a><span class="w"> </span><span class="err">)</span>
<a id="__codelineno-1-62" name="__codelineno-1-62" href="#__codelineno-1-62"></a><span class="w"> </span><span class="err">)</span>
<a id="__codelineno-1-63" name="__codelineno-1-63" href="#__codelineno-1-63"></a><span class="w"> </span><span class="err">(</span><span class="mi">1</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">Seque</span><span class="kc">n</span><span class="err">ce(</span>
<a id="__codelineno-1-64" name="__codelineno-1-64" href="#__codelineno-1-64"></a><span class="w"> </span><span class="err">(opera</span><span class="kc">t</span><span class="err">io</span><span class="kc">ns</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">ModuleLis</span><span class="kc">t</span><span class="err">(</span>
<a id="__codelineno-1-65" name="__codelineno-1-65" href="#__codelineno-1-65"></a><span class="w"> </span><span class="err">(</span><span class="mi">0</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">Seque</span><span class="kc">n</span><span class="err">ce(</span>
<a id="__codelineno-1-66" name="__codelineno-1-66" href="#__codelineno-1-66"></a><span class="w"> </span><span class="err">(opera</span><span class="kc">t</span><span class="err">io</span><span class="kc">ns</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">ModuleLis</span><span class="kc">t</span><span class="err">(</span>
<a id="__codelineno-1-67" name="__codelineno-1-67" href="#__codelineno-1-67"></a><span class="w"> </span><span class="err">(</span><span class="mi">0</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">CNOT(co</span><span class="kc">ntr</span><span class="err">ol</span><span class="p">:</span><span class="w"> </span><span class="err">(</span><span class="mi">0</span><span class="p">,</span><span class="err">)</span><span class="p">,</span><span class="w"> </span><span class="kc">tar</span><span class="err">ge</span><span class="kc">t</span><span class="p">:</span><span class="w"> </span><span class="err">(</span><span class="mi">1</span><span class="p">,</span><span class="err">))</span>
<a id="__codelineno-1-68" name="__codelineno-1-68" href="#__codelineno-1-68"></a><span class="w"> </span><span class="err">)</span>
<a id="__codelineno-1-69" name="__codelineno-1-69" href="#__codelineno-1-69"></a><span class="w"> </span><span class="err">)</span>
<a id="__codelineno-1-70" name="__codelineno-1-70" href="#__codelineno-1-70"></a><span class="w"> </span><span class="err">(</span><span class="mi">1</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">Seque</span><span class="kc">n</span><span class="err">ce(</span>
<a id="__codelineno-1-71" name="__codelineno-1-71" href="#__codelineno-1-71"></a><span class="w"> </span><span class="err">(opera</span><span class="kc">t</span><span class="err">io</span><span class="kc">ns</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">ModuleLis</span><span class="kc">t</span><span class="err">(</span>
<a id="__codelineno-1-72" name="__codelineno-1-72" href="#__codelineno-1-72"></a><span class="w"> </span><span class="err">(</span><span class="mi">0</span><span class="err">)</span><span class="p">:</span><span class="w"> </span><span class="err">CNOT(co</span><span class="kc">ntr</span><span class="err">ol</span><span class="p">:</span><span class="w"> </span><span class="err">(</span><span class="mi">1</span><span class="p">,</span><span class="err">)</span><span class="p">,</span><span class="w"> </span><span class="kc">tar</span><span class="err">ge</span><span class="kc">t</span><span class="p">:</span><span class="w"> </span><span class="err">(</span><span class="mi">2</span><span class="p">,</span><span class="err">))</span>
<a id="__codelineno-1-73" name="__codelineno-1-73" href="#__codelineno-1-73"></a><span class="w"> </span><span class="err">)</span>
<a id="__codelineno-1-74" name="__codelineno-1-74" href="#__codelineno-1-74"></a><span class="w"> </span><span class="err">)</span>
<a id="__codelineno-1-75" name="__codelineno-1-75" href="#__codelineno-1-75"></a><span class="w"> </span><span class="err">)</span>
<a id="__codelineno-1-76" name="__codelineno-1-76" href="#__codelineno-1-76"></a><span class="w"> </span><span class="err">)</span>
<a id="__codelineno-1-77" name="__codelineno-1-77" href="#__codelineno-1-77"></a><span class="w"> </span><span class="err">)</span>
<a id="__codelineno-1-78" name="__codelineno-1-78" href="#__codelineno-1-78"></a><span class="w"> </span><span class="err">)</span>
<a id="__codelineno-1-79" name="__codelineno-1-79" href="#__codelineno-1-79"></a><span class="w"> </span><span class="err">)</span>
<a id="__codelineno-1-80" name="__codelineno-1-80" href="#__codelineno-1-80"></a><span class="w"> </span><span class="err">)</span>
<a id="__codelineno-1-81" name="__codelineno-1-81" href="#__codelineno-1-81"></a><span class="w"> </span><span class="err">)</span>
<a id="__codelineno-1-82" name="__codelineno-1-82" href="#__codelineno-1-82"></a><span class="err">)</span>
</code>

Additionally, Converted contains all fixed and variational parameters, as well as an embedding function which accepts feature parameters to construct a dictionary of circuit native parameters. These are needed as each backend uses a different representation of the circuit parameters:

import torch
# Contains fixed parameters and variational (from the HEA)
conv.params
inputs = {"x": torch.tensor([1., 1.]), "y":torch.tensor([2., 2.])}
# get all circuit parameters (including feature params)
embedded = conv.embedding_fn(conv.params, inputs)
<span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="err">co</span><span class="kc">n</span><span class="err">v.params</span><span class="w"> </span><span class="err">=</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="w"> </span><span class="kc">t</span><span class="err">he</span><span class="kc">ta</span><span class="err">_</span><span class="mi">6</span><span class="p">:</span><span class="w"> </span><span class="kc">tens</span><span class="err">or(</span><span class="p">[</span><span class="mf">0.1990</span><span class="p">],</span><span class="w"> </span><span class="err">requires_grad=True)</span>
<a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="w"> </span><span class="kc">t</span><span class="err">he</span><span class="kc">ta</span><span class="err">_</span><span class="mi">5</span><span class="p">:</span><span class="w"> </span><span class="kc">tens</span><span class="err">or(</span><span class="p">[</span><span class="mf">0.5638</span><span class="p">],</span><span class="w"> </span><span class="err">requires_grad=True)</span>
<a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="w"> </span><span class="kc">t</span><span class="err">he</span><span class="kc">ta</span><span class="err">_</span><span class="mi">0</span><span class="p">:</span><span class="w"> </span><span class="kc">tens</span><span class="err">or(</span><span class="p">[</span><span class="mf">0.3975</span><span class="p">],</span><span class="w"> </span><span class="err">requires_grad=True)</span>
<a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a><span class="w"> </span><span class="kc">t</span><span class="err">he</span><span class="kc">ta</span><span class="err">_</span><span class="mi">7</span><span class="p">:</span><span class="w"> </span><span class="kc">tens</span><span class="err">or(</span><span class="p">[</span><span class="mf">0.0192</span><span class="p">],</span><span class="w"> </span><span class="err">requires_grad=True)</span>
<a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a><span class="w"> </span><span class="kc">t</span><span class="err">he</span><span class="kc">ta</span><span class="err">_</span><span class="mi">2</span><span class="p">:</span><span class="w"> </span><span class="kc">tens</span><span class="err">or(</span><span class="p">[</span><span class="mf">0.0217</span><span class="p">],</span><span class="w"> </span><span class="err">requires_grad=True)</span>
<a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a><span class="w"> </span><span class="kc">t</span><span class="err">he</span><span class="kc">ta</span><span class="err">_</span><span class="mi">4</span><span class="p">:</span><span class="w"> </span><span class="kc">tens</span><span class="err">or(</span><span class="p">[</span><span class="mf">0.0650</span><span class="p">],</span><span class="w"> </span><span class="err">requires_grad=True)</span>
<a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a><span class="w"> </span><span class="kc">t</span><span class="err">he</span><span class="kc">ta</span><span class="err">_</span><span class="mi">8</span><span class="p">:</span><span class="w"> </span><span class="kc">tens</span><span class="err">or(</span><span class="p">[</span><span class="mf">0.2804</span><span class="p">],</span><span class="w"> </span><span class="err">requires_grad=True)</span>
<a id="__codelineno-1-9" name="__codelineno-1-9" href="#__codelineno-1-9"></a><span class="w"> </span><span class="kc">t</span><span class="err">he</span><span class="kc">ta</span><span class="err">_</span><span class="mi">3</span><span class="p">:</span><span class="w"> </span><span class="kc">tens</span><span class="err">or(</span><span class="p">[</span><span class="mf">0.9994</span><span class="p">],</span><span class="w"> </span><span class="err">requires_grad=True)</span>
<a id="__codelineno-1-10" name="__codelineno-1-10" href="#__codelineno-1-10"></a><span class="w"> </span><span class="kc">t</span><span class="err">he</span><span class="kc">ta</span><span class="err">_</span><span class="mi">1</span><span class="p">:</span><span class="w"> </span><span class="kc">tens</span><span class="err">or(</span><span class="p">[</span><span class="mf">0.4961</span><span class="p">],</span><span class="w"> </span><span class="err">requires_grad=True)</span>
<a id="__codelineno-1-11" name="__codelineno-1-11" href="#__codelineno-1-11"></a><span class="p">}</span>
<a id="__codelineno-1-12" name="__codelineno-1-12" href="#__codelineno-1-12"></a><span class="err">embedded</span><span class="w"> </span><span class="err">=</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-1-13" name="__codelineno-1-13" href="#__codelineno-1-13"></a><span class="w"> </span><span class="err">a</span><span class="mi">25217</span><span class="kc">f</span><span class="err">b</span><span class="mi">-3556-49</span><span class="err">b</span><span class="mi">8-</span><span class="err">a</span><span class="mi">44</span><span class="err">d</span><span class="mi">-</span><span class="err">c</span><span class="mi">92752</span><span class="err">daa</span><span class="mi">906</span><span class="p">:</span><span class="w"> </span><span class="kc">tens</span><span class="err">or(</span><span class="p">[</span><span class="mf">3.</span><span class="p">,</span><span class="w"> </span><span class="mf">3.</span><span class="p">],</span><span class="w"> </span><span class="err">grad_</span><span class="kc">fn</span><span class="err">=<ViewBackward</span><span class="mi">0</span><span class="err">>)</span>
<a id="__codelineno-1-14" name="__codelineno-1-14" href="#__codelineno-1-14"></a><span class="w"> </span><span class="mi">19</span><span class="err">cc</span><span class="mi">9211-</span><span class="err">cb</span><span class="mf">2e-4</span><span class="err">de</span><span class="mi">7-99</span><span class="err">d</span><span class="mi">6-</span><span class="err">c</span><span class="mi">31</span><span class="kc">f</span><span class="err">d</span><span class="mf">18e</span><span class="err">c</span><span class="mi">2</span><span class="err">c</span><span class="mi">9</span><span class="p">:</span><span class="w"> </span><span class="kc">tens</span><span class="err">or(</span><span class="p">[</span><span class="mf">2.</span><span class="p">,</span><span class="w"> </span><span class="mf">2.</span><span class="p">]</span><span class="err">)</span>
<a id="__codelineno-1-15" name="__codelineno-1-15" href="#__codelineno-1-15"></a><span class="w"> </span><span class="mi">2</span><span class="err">c</span><span class="mi">782915-786</span><span class="err">b</span><span class="mf">-4e</span><span class="err">be</span><span class="mi">-</span><span class="err">b</span><span class="mi">9</span><span class="err">dd</span><span class="mi">-</span><span class="err">c</span><span class="mi">08</span><span class="kc">fa</span><span class="mi">2</span><span class="kc">fa</span><span class="mf">687e</span><span class="p">:</span><span class="w"> </span><span class="kc">tens</span><span class="err">or(</span><span class="p">[</span><span class="mf">0.3975</span><span class="p">],</span><span class="w"> </span><span class="err">grad_</span><span class="kc">fn</span><span class="err">=<ViewBackward</span><span class="mi">0</span><span class="err">>)</span>
<a id="__codelineno-1-16" name="__codelineno-1-16" href="#__codelineno-1-16"></a><span class="w"> </span><span class="mf">548e</span><span class="kc">f</span><span class="mi">485-8</span><span class="err">c</span><span class="mi">00-4858-</span><span class="err">bce</span><span class="mi">2-78</span><span class="err">d</span><span class="mi">6850</span><span class="kc">f</span><span class="err">ccce</span><span class="p">:</span><span class="w"> </span><span class="kc">tens</span><span class="err">or(</span><span class="p">[</span><span class="mf">0.9994</span><span class="p">],</span><span class="w"> </span><span class="err">grad_</span><span class="kc">fn</span><span class="err">=<ViewBackward</span><span class="mi">0</span><span class="err">>)</span>
<a id="__codelineno-1-17" name="__codelineno-1-17" href="#__codelineno-1-17"></a><span class="w"> </span><span class="mi">944</span><span class="err">b</span><span class="mi">50</span><span class="kc">f</span><span class="mi">0-3</span><span class="err">d</span><span class="kc">f</span><span class="mi">6-4349-</span><span class="err">b</span><span class="kc">f</span><span class="mi">82-</span><span class="kc">fe</span><span class="mi">9</span><span class="err">aeb</span><span class="mi">93</span><span class="err">a</span><span class="mi">945</span><span class="p">:</span><span class="w"> </span><span class="kc">tens</span><span class="err">or(</span><span class="p">[</span><span class="mf">0.1990</span><span class="p">],</span><span class="w"> </span><span class="err">grad_</span><span class="kc">fn</span><span class="err">=<ViewBackward</span><span class="mi">0</span><span class="err">>)</span>
<a id="__codelineno-1-18" name="__codelineno-1-18" href="#__codelineno-1-18"></a><span class="w"> </span><span class="mi">44</span><span class="err">ccea</span><span class="mi">8</span><span class="kc">f</span><span class="mi">-</span><span class="err">a</span><span class="mi">203-4</span><span class="err">c</span><span class="mf">28-8992-5837337e3e02</span><span class="p">:</span><span class="w"> </span><span class="kc">tens</span><span class="err">or(</span><span class="p">[</span><span class="mf">0.4961</span><span class="p">],</span><span class="w"> </span><span class="err">grad_</span><span class="kc">fn</span><span class="err">=<ViewBackward</span><span class="mi">0</span><span class="err">>)</span>
<a id="__codelineno-1-19" name="__codelineno-1-19" href="#__codelineno-1-19"></a><span class="w"> </span><span class="mi">851</span><span class="kc">fe</span><span class="mi">64</span><span class="err">a</span><span class="mi">-9</span><span class="err">b</span><span class="mi">70-439</span><span class="err">b</span><span class="mi">-9</span><span class="err">a</span><span class="mi">66-</span><span class="err">de</span><span class="mi">437</span><span class="err">d</span><span class="mi">1</span><span class="err">b</span><span class="mi">282</span><span class="err">c</span><span class="p">:</span><span class="w"> </span><span class="kc">tens</span><span class="err">or(</span><span class="p">[</span><span class="mf">0.0650</span><span class="p">],</span><span class="w"> </span><span class="err">grad_</span><span class="kc">fn</span><span class="err">=<ViewBackward</span><span class="mi">0</span><span class="err">>)</span>
<a id="__codelineno-1-20" name="__codelineno-1-20" href="#__codelineno-1-20"></a><span class="w"> </span><span class="err">d</span><span class="mi">98</span><span class="err">ad</span><span class="mi">82</span><span class="err">c</span><span class="mi">-</span><span class="err">cae</span><span class="mi">3-43</span><span class="err">d</span><span class="mi">7-8</span><span class="err">c</span><span class="mi">19-077</span><span class="err">aa</span><span class="mf">45e025</span><span class="kc">f</span><span class="p">:</span><span class="w"> </span><span class="kc">tens</span><span class="err">or(</span><span class="p">[</span><span class="mf">0.0192</span><span class="p">],</span><span class="w"> </span><span class="err">grad_</span><span class="kc">fn</span><span class="err">=<ViewBackward</span><span class="mi">0</span><span class="err">>)</span>
<a id="__codelineno-1-21" name="__codelineno-1-21" href="#__codelineno-1-21"></a><span class="w"> </span><span class="mi">5</span><span class="err">c</span><span class="mi">2</span><span class="err">c</span><span class="mi">42</span><span class="kc">f</span><span class="err">c</span><span class="mi">-9064-4</span><span class="kc">f</span><span class="err">b</span><span class="mi">5-857</span><span class="err">b</span><span class="mi">-3</span><span class="err">cbba</span><span class="mi">3</span><span class="err">c</span><span class="mi">12806</span><span class="p">:</span><span class="w"> </span><span class="kc">tens</span><span class="err">or(</span><span class="p">[</span><span class="mf">0.0217</span><span class="p">],</span><span class="w"> </span><span class="err">grad_</span><span class="kc">fn</span><span class="err">=<ViewBackward</span><span class="mi">0</span><span class="err">>)</span>
<a id="__codelineno-1-22" name="__codelineno-1-22" href="#__codelineno-1-22"></a><span class="w"> </span><span class="mi">36</span><span class="err">d</span><span class="mi">4</span><span class="err">c</span><span class="mi">1</span><span class="err">a</span><span class="mi">8-</span><span class="err">bec</span><span class="mi">0-4</span><span class="err">b</span><span class="mi">59-</span><span class="err">baeb</span><span class="mf">-e18</span><span class="err">ac</span><span class="mi">7</span><span class="err">d</span><span class="mi">991</span><span class="err">b</span><span class="mi">3</span><span class="p">:</span><span class="w"> </span><span class="kc">tens</span><span class="err">or(</span><span class="p">[</span><span class="mf">0.5638</span><span class="p">],</span><span class="w"> </span><span class="err">grad_</span><span class="kc">fn</span><span class="err">=<ViewBackward</span><span class="mi">0</span><span class="err">>)</span>
<a id="__codelineno-1-23" name="__codelineno-1-23" href="#__codelineno-1-23"></a><span class="w"> </span><span class="mi">0</span><span class="err">d</span><span class="mi">785898-5201-4213-</span><span class="err">a</span><span class="mi">883-</span><span class="kc">f</span><span class="mi">25</span><span class="err">d</span><span class="mi">587</span><span class="kc">f</span><span class="err">cc</span><span class="mi">8</span><span class="err">d</span><span class="p">:</span><span class="w"> </span><span class="kc">tens</span><span class="err">or(</span><span class="p">[</span><span class="mf">0.2804</span><span class="p">],</span><span class="w"> </span><span class="err">grad_</span><span class="kc">fn</span><span class="err">=<ViewBackward</span><span class="mi">0</span><span class="err">>)</span>
<a id="__codelineno-1-24" name="__codelineno-1-24" href="#__codelineno-1-24"></a><span class="p">}</span>
</code>

With the embedded parameters, QuantumModel methods are accessible:

output = backend.run(conv.circuit, embedded)
print(f"{output = }")
<span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="err">ou</span><span class="kc">t</span><span class="err">pu</span><span class="kc">t</span><span class="w"> </span><span class="err">=</span><span class="w"> </span><span class="kc">tens</span><span class="err">or(</span><span class="p">[[</span><span class="w"> </span><span class="mf">0.1345-0.1265</span><span class="err">j</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0219-0.0564</span><span class="err">j</span><span class="p">,</span><span class="w"> </span><span class="mf">0.1319+0.0874</span><span class="err">j</span><span class="p">,</span><span class="w"> </span><span class="mf">0.2485+0.4139</span><span class="err">j</span><span class="p">,</span>
<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="w"> </span><span class="mf">-0.6961-0.3491</span><span class="err">j</span><span class="p">,</span><span class="w"> </span><span class="mf">-0.2552-0.0051</span><span class="err">j</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0017+0.0561</span><span class="err">j</span><span class="p">,</span><span class="w"> </span><span class="mf">-0.0691+0.1566</span><span class="err">j</span><span class="p">],</span>
<a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="mf">0.1345-0.1265</span><span class="err">j</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0219-0.0564</span><span class="err">j</span><span class="p">,</span><span class="w"> </span><span class="mf">0.1319+0.0874</span><span class="err">j</span><span class="p">,</span><span class="w"> </span><span class="mf">0.2485+0.4139</span><span class="err">j</span><span class="p">,</span>
<a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="w"> </span><span class="mf">-0.6961-0.3491</span><span class="err">j</span><span class="p">,</span><span class="w"> </span><span class="mf">-0.2552-0.0051</span><span class="err">j</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0017+0.0561</span><span class="err">j</span><span class="p">,</span><span class="w"> </span><span class="mf">-0.0691+0.1566</span><span class="err">j</span><span class="p">]],</span>
<a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a><span class="w"> </span><span class="err">grad_</span><span class="kc">fn</span><span class="err">=<TBackward</span><span class="mi">0</span><span class="err">>)</span>
</code>

If there is a requirement to work with a specific backend, it is possible to access directly the native circuit. For example, should one wish to use PyQtorch noise features directly instead of using the NoiseHandler interface from Qadence:

from pyqtorch.noise import Depolarizing
inputs = {"x": torch.rand(1), "y":torch.rand(1)}
embedded = conv.embedding_fn(conv.params, inputs)
# Define a noise channel on qubit 0
noise = Depolarizing(0, error_probability=0.1)
# Add noise to circuit
conv.circuit.native.operations.append(noise)

When running With noise, one can see that the output is a density matrix:

density_result = backend.run(conv.circuit, embedded)
print(density_result.shape)
<span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="kc">t</span><span class="err">orch.Size(</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">8</span><span class="p">,</span><span class="w"> </span><span class="mi">8</span><span class="p">]</span><span class="err">)</span>
</code>