Parametric programs
Qadence base Parameter
type is a subtype of sympy.Symbol
. There are three kinds of parameter subtypes used:
Fixed Parameter : A constant with a fixed, non-trainable value (e.g. \(\dfrac{\pi}{2}\) ).
Variational Parameter : A trainable parameter which can be be optimized.
Feature Parameter : A non-trainable parameter which can be used to encode classical data into a quantum state.
Fixed Parameters
To pass a fixed parameter to a gate (or any parametrizable block), one can simply use either Python numeric types or wrapped in
a torch.Tensor
.
from torch import pi
from qadence import RX , run
# Let's use a torch type.
block = RX ( 0 , pi )
wf = run ( block )
# Let's pass a simple float.
block = RX ( 0 , 1. )
wf = run ( block )
w f = tens or( [[ 6.1232e-17+0. j , 0.0000e+00-1. j ]] )
w f = tens or( [[ 0.8776+0.0000 j , 0.0000-0.4794 j ]] )
Variational Parameters
To parametrize a block by an angle theta
, either a Python string
or an instance of VariationalParameter
can be passed instead of a numeric type to the gate constructor:
from qadence import RX , run , VariationalParameter
block = RX ( 0 , "theta" )
# This is equivalent to:
block = RX ( 0 , VariationalParameter ( "theta" ))
wf = run ( block )
w f = tens or( [[ 0.9868+0.0000 j , 0.0000-0.1621 j ]] )
In the first case in the above example, theta
is automatically inferred as a VariationalParameter
(i.e. trainable). It is initialized to a random value for the purposes of execution. In the context of a QuantumModel
, there is no need to pass a value for theta
to the run
method since it is stored within the underlying model parameter dictionary.
Feature Parameters
FeatureParameter
types (i.e. inputs), always need to be provided with a value or a batch of values as a dictionary:
from torch import tensor
from qadence import RX , run , FeatureParameter
block = RX ( 0 , FeatureParameter ( "phi" ))
wf = run ( block , values = { "phi" : tensor ([ 1. , 2. ])})
w f = tens or( [[ 0.8776+0.0000 j , 0.0000-0.4794 j ],
[ 0.5403+0.0000 j , 0.0000-0.8415 j ]] )
Now, run
returns a batch of states, one for every provided angle which coincides with the value of the particular FeatureParameter
.
Multiparameter Expressions
However, an angle can itself be an expression Parameter
types of any kind.
As such, any sympy expression expr: sympy.Basic
consisting of a combination of free symbols (i.e. sympy
types) and Qadence Parameter
can
be passed to a block, including trigonometric functions.
from torch import tensor
from qadence import RX , Parameter , run , FeatureParameter
from sympy import sin
theta , phi = Parameter ( "theta" ), FeatureParameter ( "phi" )
block = RX ( 0 , sin ( theta + phi ))
# Remember, to run the block, only FeatureParameter values have to be provided:
values = { "phi" : tensor ([ 1.0 , 2.0 ])}
wf = run ( block , values = values )
w f = tens or( [[ 0.8778+0.0000 j , 0.0000-0.4791 j ],
[ 0.9593+0.0000 j , 0.0000-0.2825 j ]] )
Parameters Redundancy
Parameters are uniquely defined by their name and redundancy is allowed in composite blocks to
assign the same value to different blocks.
import torch
from qadence import RX , RY , run , chain , kron
block = chain (
kron ( RX ( 0 , "phi" ), RY ( 1 , "theta" )),
kron ( RX ( 0 , "phi" ), RY ( 1 , "theta" )),
)
wf = run ( block ) # Same random initialization for all instances of phi and theta.
w f = tens or( [[ 0.5086+0.0000 j , 0.6844+0.0000 j , 0.0000-0.3116 j , 0.0000-0.4194 j ]] )
Parametrized Circuits
Now, let's have a look at the construction of a variational ansatz which composes FeatureParameter
and VariationalParameter
types:
import sympy
from qadence import RX , RY , RZ , CNOT , Z , run , chain , kron , FeatureParameter , VariationalParameter
phi = FeatureParameter ( "phi" )
theta = VariationalParameter ( "theta" )
block = chain (
kron (
RX ( 0 , phi / theta ),
RY ( 1 , theta * 2 ),
RZ ( 2 , sympy . cos ( phi )),
),
kron (
RX ( 0 , phi ),
RY ( 1 , theta ),
RZ ( 2 , phi ),
),
kron (
RX ( 0 , phi ),
RY ( 1 , theta ),
RZ ( 2 , phi ),
),
kron (
RX ( 0 , phi + theta ),
RY ( 1 , theta ** 2 ),
RZ ( 2 , sympy . cos ( phi )),
),
chain ( CNOT ( 0 , 1 ), CNOT ( 1 , 2 ))
)
block . tag = "Rotations"
obs = 2 * kron ( * map ( Z , range ( 3 )))
block = chain ( block , obs )
%3
cluster_3c5e75af79104f4495fd58af67fea9c9
[* 2]
cluster_fbeab31c0a7f4653933e3a75d8788f42
Rotations
4c3b1faed7a04006bc41ad274c1d288f
0
cd5dbc03701f40f69d490130f086d207
RX(phi/theta)
4c3b1faed7a04006bc41ad274c1d288f--cd5dbc03701f40f69d490130f086d207
536328e8616b4c5e86f89bafad5ae88c
1
a3e18faa1ac442f3b478231f09dcead0
RX(phi)
cd5dbc03701f40f69d490130f086d207--a3e18faa1ac442f3b478231f09dcead0
3d6c3a9470214f14be484aa8c3088811
RX(phi)
a3e18faa1ac442f3b478231f09dcead0--3d6c3a9470214f14be484aa8c3088811
e8e56acc2e6844a1b49ecf0ca2e7a2aa
RX(phi + theta)
3d6c3a9470214f14be484aa8c3088811--e8e56acc2e6844a1b49ecf0ca2e7a2aa
db76e3f505364aa695a2c09c28e5830e
e8e56acc2e6844a1b49ecf0ca2e7a2aa--db76e3f505364aa695a2c09c28e5830e
5840c0c6d82346f2bf4deea5bad7d741
db76e3f505364aa695a2c09c28e5830e--5840c0c6d82346f2bf4deea5bad7d741
5def77dbbad5447ba74ceffa15f0d16d
Z
5840c0c6d82346f2bf4deea5bad7d741--5def77dbbad5447ba74ceffa15f0d16d
e407cb0a515840d5a1e2404c1dcabf1d
5def77dbbad5447ba74ceffa15f0d16d--e407cb0a515840d5a1e2404c1dcabf1d
e723bb5efb5448b0aba170bb2cbc118f
da641cb82fd342b79eecb07552fea009
RY(2*theta)
536328e8616b4c5e86f89bafad5ae88c--da641cb82fd342b79eecb07552fea009
b6c09429215f4886965d950c50f3bc54
2
8134599c2607424c991f5cc8f7456a13
RY(theta)
da641cb82fd342b79eecb07552fea009--8134599c2607424c991f5cc8f7456a13
3368053f6c0f4037a4fcae01cde0adea
RY(theta)
8134599c2607424c991f5cc8f7456a13--3368053f6c0f4037a4fcae01cde0adea
441bcb76640e4e149f437084878caacb
RY(theta**2)
3368053f6c0f4037a4fcae01cde0adea--441bcb76640e4e149f437084878caacb
39711d1b96574e3ca67f2430e5d89c7f
X
441bcb76640e4e149f437084878caacb--39711d1b96574e3ca67f2430e5d89c7f
39711d1b96574e3ca67f2430e5d89c7f--db76e3f505364aa695a2c09c28e5830e
0bc2b3cbce5c496f8b88f9f37071ae88
39711d1b96574e3ca67f2430e5d89c7f--0bc2b3cbce5c496f8b88f9f37071ae88
6ac1115d7db645a1862eb516922ab2d3
Z
0bc2b3cbce5c496f8b88f9f37071ae88--6ac1115d7db645a1862eb516922ab2d3
6ac1115d7db645a1862eb516922ab2d3--e723bb5efb5448b0aba170bb2cbc118f
5d81a45f5fa54efc95d0c9566b457ae6
d173aca830bb4c999b57fb03275dd4b4
RZ(cos(phi))
b6c09429215f4886965d950c50f3bc54--d173aca830bb4c999b57fb03275dd4b4
8a272059e8204fe99c6d2bfb22fc6e33
RZ(phi)
d173aca830bb4c999b57fb03275dd4b4--8a272059e8204fe99c6d2bfb22fc6e33
f20223985bda44e091e6d04f3d5fcc8f
RZ(phi)
8a272059e8204fe99c6d2bfb22fc6e33--f20223985bda44e091e6d04f3d5fcc8f
2b564444296540ebbf1d4e15c64e596f
RZ(cos(phi))
f20223985bda44e091e6d04f3d5fcc8f--2b564444296540ebbf1d4e15c64e596f
bbfec804cf204f32a1b09ce7ee22b217
2b564444296540ebbf1d4e15c64e596f--bbfec804cf204f32a1b09ce7ee22b217
a60eea8e73e94bb8b8edd8f8c8d949c8
X
bbfec804cf204f32a1b09ce7ee22b217--a60eea8e73e94bb8b8edd8f8c8d949c8
a60eea8e73e94bb8b8edd8f8c8d949c8--0bc2b3cbce5c496f8b88f9f37071ae88
5e78f40098934be5ab981e8aad6033f6
Z
a60eea8e73e94bb8b8edd8f8c8d949c8--5e78f40098934be5ab981e8aad6033f6
5e78f40098934be5ab981e8aad6033f6--5d81a45f5fa54efc95d0c9566b457ae6
Please note the different colors for the parametrization with different types. The default palette assigns light blue for VariationalParameter
, light green for FeatureParameter
and shaded red for observables.
Parametrized QuantumModels
As a quick reminder: FeatureParameter
are used for data input and data encoding into a quantum state.
VariationalParameter
are trainable parameters in a variational ansatz. When used within a QuantumModel
, an abstract quantum circuit is made differentiable with respect to both variational and feature
parameters which are uniquely identified by their name.
from qadence import FeatureParameter , Parameter , VariationalParameter
# Feature parameters are non-trainable parameters.
# Their primary use is input data encoding.
fp = FeatureParameter ( "x" )
assert fp == Parameter ( "x" , trainable = False )
# Variational parameters are trainable parameters.
# Their primary use is for optimization.
vp = VariationalParameter ( "y" )
assert vp == Parameter ( "y" , trainable = True )
Let's construct a parametric quantum circuit.
from qadence import QuantumCircuit , RX , RY , chain , kron
theta = VariationalParameter ( "theta" )
phi = FeatureParameter ( "phi" )
block = chain (
kron ( RX ( 0 , theta ), RY ( 1 , theta )),
kron ( RX ( 0 , phi ), RY ( 1 , phi )),
)
circuit = QuantumCircuit ( 2 , block )
unique_params = circuit . unique_parameters
u n ique_params = [ t he ta , phi ]
In the circuit above, four parameters are defined but only two unique names. Therefore, there will be only one
variational parameter to be optimized.
The QuantumModel
class also provides convenience methods to manipulate parameters.
from qadence import QuantumModel , BackendName , DiffMode
model = QuantumModel ( circuit , backend = BackendName . PYQTORCH , diff_mode = DiffMode . AD )
num_vparams = model . num_vparams
vparams_values = model . vparams
nu m_vparams = 1
vparams_values = OrderedDic t ( [ (' t he ta ' , tens or( [ 0.6171 ] )) ] )
Only provide feature parameter values to the quantum model
In order to run
the variational circuit only feature parameter values have to be provided.
Variational parameters are stored in the model itself. If multiple feature parameters are present,
values must be provided in batches of same length.
import torch
values = { "phi" : torch . rand ( 3 )} # theta does not appear here
wf = model . run ( values )
w f = tens or( [[ 0.5703+0.0000 j , 0.4950+0.0000 j , 0.0000-0.4950 j , 0.0000-0.4297 j ],
[ 0.8421+0.0000 j , 0.3647+0.0000 j , 0.0000-0.3647 j , 0.0000-0.1579 j ],
[ 0.8410+0.0000 j , 0.3656+0.0000 j , 0.0000-0.3656 j , 0.0000-0.1590 j ]],
grad_ fn =<TBackward 0 >)
Standard constructors
The unique parameter identification is relevant when using built-in Qadence block
constructors in the qadence.constructors
module such as feature maps and hardware
efficient ansatze (HEA).
from qadence import QuantumCircuit , hea
n_qubits = 4
depth = 2
hea1 = hea ( n_qubits = n_qubits , depth = depth )
circuit = QuantumCircuit ( n_qubits , hea1 )
num_unique_parameters = circuit . num_unique_parameters
U n ique parame ters wi t h a si n gle HEA : 24
%3
78ccbe4ff072491fa979d887b052bb40
0
f8c997b9ae884fdd9f7f4b778a3f5b8c
RX(theta₀)
78ccbe4ff072491fa979d887b052bb40--f8c997b9ae884fdd9f7f4b778a3f5b8c
7432f4e2a5084693a63b9177d30f6140
1
5d0d9db17d684b9cb5fa4cc1f97529a0
RY(theta₄)
f8c997b9ae884fdd9f7f4b778a3f5b8c--5d0d9db17d684b9cb5fa4cc1f97529a0
782a577918df460ba0d6a02192bbc28f
RX(theta₈)
5d0d9db17d684b9cb5fa4cc1f97529a0--782a577918df460ba0d6a02192bbc28f
36f354060b7e4486976335d00b42c034
782a577918df460ba0d6a02192bbc28f--36f354060b7e4486976335d00b42c034
4b0e194d2da943539f54d5b53ba0a86b
36f354060b7e4486976335d00b42c034--4b0e194d2da943539f54d5b53ba0a86b
81331c25fcf343c3996c677e7bf4a312
RX(theta₁₂)
4b0e194d2da943539f54d5b53ba0a86b--81331c25fcf343c3996c677e7bf4a312
6885b52d997344049a4a917bc11bb682
RY(theta₁₆)
81331c25fcf343c3996c677e7bf4a312--6885b52d997344049a4a917bc11bb682
6d29168f978146b397bbf7b63beed8f2
RX(theta₂₀)
6885b52d997344049a4a917bc11bb682--6d29168f978146b397bbf7b63beed8f2
f6d3c93916b04458894012ffd6b134f1
6d29168f978146b397bbf7b63beed8f2--f6d3c93916b04458894012ffd6b134f1
04f84e21891f423faa7546e09bdec101
f6d3c93916b04458894012ffd6b134f1--04f84e21891f423faa7546e09bdec101
0bc6fea1b7b3480d9ea10d8dcf7d55df
04f84e21891f423faa7546e09bdec101--0bc6fea1b7b3480d9ea10d8dcf7d55df
b44f9fc7baf54fd8a8d42b5f708b06f1
f928b90f29424e0da6ae41d7b3ca56a5
RX(theta₁)
7432f4e2a5084693a63b9177d30f6140--f928b90f29424e0da6ae41d7b3ca56a5
290c553a1e2a4c309dbafcc54639ad25
2
93cee0a3f61b4d048c2e1c131c270621
RY(theta₅)
f928b90f29424e0da6ae41d7b3ca56a5--93cee0a3f61b4d048c2e1c131c270621
85235df40f964184a3ca32172fbc2652
RX(theta₉)
93cee0a3f61b4d048c2e1c131c270621--85235df40f964184a3ca32172fbc2652
6b6c3de2dbc648b2a845d1a30a4a1b1a
X
85235df40f964184a3ca32172fbc2652--6b6c3de2dbc648b2a845d1a30a4a1b1a
6b6c3de2dbc648b2a845d1a30a4a1b1a--36f354060b7e4486976335d00b42c034
34e8174119f241cda85ff646b27ae3f4
6b6c3de2dbc648b2a845d1a30a4a1b1a--34e8174119f241cda85ff646b27ae3f4
d1ca3c88478f47aca8b047958ff57cfe
RX(theta₁₃)
34e8174119f241cda85ff646b27ae3f4--d1ca3c88478f47aca8b047958ff57cfe
636a0fe93e114224a910ef7a50a9ec95
RY(theta₁₇)
d1ca3c88478f47aca8b047958ff57cfe--636a0fe93e114224a910ef7a50a9ec95
68d71b5d36c34d67b3b0039f7b9cac77
RX(theta₂₁)
636a0fe93e114224a910ef7a50a9ec95--68d71b5d36c34d67b3b0039f7b9cac77
fe712e475c804729922e3e8a15228be4
X
68d71b5d36c34d67b3b0039f7b9cac77--fe712e475c804729922e3e8a15228be4
fe712e475c804729922e3e8a15228be4--f6d3c93916b04458894012ffd6b134f1
05530519e5814151835a0d7ad9e204ff
fe712e475c804729922e3e8a15228be4--05530519e5814151835a0d7ad9e204ff
05530519e5814151835a0d7ad9e204ff--b44f9fc7baf54fd8a8d42b5f708b06f1
69c771dfa7864e0bb791cd9dd786582b
ee6fab71d5494fe58219843a6173d1f0
RX(theta₂)
290c553a1e2a4c309dbafcc54639ad25--ee6fab71d5494fe58219843a6173d1f0
650c9f9804594bc3a10729b947e3bbf6
3
31b3ee0e49364abb9306ad313fb568ba
RY(theta₆)
ee6fab71d5494fe58219843a6173d1f0--31b3ee0e49364abb9306ad313fb568ba
1c387c6bfd774cfd97fc445b737eb920
RX(theta₁₀)
31b3ee0e49364abb9306ad313fb568ba--1c387c6bfd774cfd97fc445b737eb920
297e746ed06b41708db7847d6dc93f4e
1c387c6bfd774cfd97fc445b737eb920--297e746ed06b41708db7847d6dc93f4e
f96919dc353041d2b5e1d5d2bc4bfea3
X
297e746ed06b41708db7847d6dc93f4e--f96919dc353041d2b5e1d5d2bc4bfea3
f96919dc353041d2b5e1d5d2bc4bfea3--34e8174119f241cda85ff646b27ae3f4
1e971d49962549b4ada86156979df7ea
RX(theta₁₄)
f96919dc353041d2b5e1d5d2bc4bfea3--1e971d49962549b4ada86156979df7ea
616ed4212f044d12ac820ea250dce051
RY(theta₁₈)
1e971d49962549b4ada86156979df7ea--616ed4212f044d12ac820ea250dce051
d9cf7e2483774f299e30e9db66a341bf
RX(theta₂₂)
616ed4212f044d12ac820ea250dce051--d9cf7e2483774f299e30e9db66a341bf
684bc1b782284773903477de13f58373
d9cf7e2483774f299e30e9db66a341bf--684bc1b782284773903477de13f58373
c5370c3dce5c409fbd7b88473bf353fc
X
684bc1b782284773903477de13f58373--c5370c3dce5c409fbd7b88473bf353fc
c5370c3dce5c409fbd7b88473bf353fc--05530519e5814151835a0d7ad9e204ff
c5370c3dce5c409fbd7b88473bf353fc--69c771dfa7864e0bb791cd9dd786582b
c54398777bf046c1ae1c5b9a2666b7d3
dc3a2631e0d54c06b4f225917cdbfd10
RX(theta₃)
650c9f9804594bc3a10729b947e3bbf6--dc3a2631e0d54c06b4f225917cdbfd10
c4c182f5a71341cfa9e308757dadea8e
RY(theta₇)
dc3a2631e0d54c06b4f225917cdbfd10--c4c182f5a71341cfa9e308757dadea8e
d12b62576afb4da08cd4bba7f093fdf6
RX(theta₁₁)
c4c182f5a71341cfa9e308757dadea8e--d12b62576afb4da08cd4bba7f093fdf6
cd12bda1966a468d9cd7a34c977ab14f
X
d12b62576afb4da08cd4bba7f093fdf6--cd12bda1966a468d9cd7a34c977ab14f
cd12bda1966a468d9cd7a34c977ab14f--297e746ed06b41708db7847d6dc93f4e
df805adbf177446f9b2db00755e5827c
cd12bda1966a468d9cd7a34c977ab14f--df805adbf177446f9b2db00755e5827c
1dbaa73e765d42ffb3af3db94136a8c2
RX(theta₁₅)
df805adbf177446f9b2db00755e5827c--1dbaa73e765d42ffb3af3db94136a8c2
d9d186afaf0b4899b41082e2d7b48997
RY(theta₁₉)
1dbaa73e765d42ffb3af3db94136a8c2--d9d186afaf0b4899b41082e2d7b48997
96087c78fd644f748aa75ac26e9a607a
RX(theta₂₃)
d9d186afaf0b4899b41082e2d7b48997--96087c78fd644f748aa75ac26e9a607a
171e59adf31a4dfca260a70b10fe5fca
X
96087c78fd644f748aa75ac26e9a607a--171e59adf31a4dfca260a70b10fe5fca
171e59adf31a4dfca260a70b10fe5fca--684bc1b782284773903477de13f58373
1edaa45bc5df4db1b54ff75ee359c692
171e59adf31a4dfca260a70b10fe5fca--1edaa45bc5df4db1b54ff75ee359c692
1edaa45bc5df4db1b54ff75ee359c692--c54398777bf046c1ae1c5b9a2666b7d3
A new circuit can be created by adding another identical HEA. As expected, the number of unique parameters
is the same.
hea2 = hea ( n_qubits = n_qubits , depth = depth )
circuit = QuantumCircuit ( n_qubits , hea1 , hea2 )
num_unique_params_two_heas = circuit . num_unique_parameters
U n ique parame ters wi t h t wo s ta cked HEAs : 24
%3
cluster_c1a7faa4f72546cfb204ea55812b98e0
HEA
cluster_f8ed389815a74ea190a459b3ec2c779f
HEA
867e9e0d34484ae295701942ef2c8f75
0
78fadf8e0a3d4ca7b935ef1b2ead3cce
RX(theta₀)
867e9e0d34484ae295701942ef2c8f75--78fadf8e0a3d4ca7b935ef1b2ead3cce
75b00bd9a26e43efa39cfd68c05e01c2
1
f0ae3420bff2417684b40a0df4f3a28e
RY(theta₄)
78fadf8e0a3d4ca7b935ef1b2ead3cce--f0ae3420bff2417684b40a0df4f3a28e
11103260d16e4bfa8b93c89a2de37b85
RX(theta₈)
f0ae3420bff2417684b40a0df4f3a28e--11103260d16e4bfa8b93c89a2de37b85
9ffe669e25824cfba0be2fe3a5ff21d9
11103260d16e4bfa8b93c89a2de37b85--9ffe669e25824cfba0be2fe3a5ff21d9
177198df786644a5bdc79c3a5a3e2160
9ffe669e25824cfba0be2fe3a5ff21d9--177198df786644a5bdc79c3a5a3e2160
1ac9033d930041ae8a718d41edf000a0
RX(theta₁₂)
177198df786644a5bdc79c3a5a3e2160--1ac9033d930041ae8a718d41edf000a0
55c00bad361d4e8fb2d36d075c40760f
RY(theta₁₆)
1ac9033d930041ae8a718d41edf000a0--55c00bad361d4e8fb2d36d075c40760f
862cb538f5f648cabb389680717e8fb2
RX(theta₂₀)
55c00bad361d4e8fb2d36d075c40760f--862cb538f5f648cabb389680717e8fb2
6c9e0bd995204242ad3ce01e61e4cf3d
862cb538f5f648cabb389680717e8fb2--6c9e0bd995204242ad3ce01e61e4cf3d
9d9ff0a61bb941b9bbdfd8e9a71ad2ec
6c9e0bd995204242ad3ce01e61e4cf3d--9d9ff0a61bb941b9bbdfd8e9a71ad2ec
b763578e244d46e0923cc5d1ae52ab96
RX(theta₀)
9d9ff0a61bb941b9bbdfd8e9a71ad2ec--b763578e244d46e0923cc5d1ae52ab96
6fc16c167cac48eebf50f270f57b9b2a
RY(theta₄)
b763578e244d46e0923cc5d1ae52ab96--6fc16c167cac48eebf50f270f57b9b2a
bf4d57c903604c4dbb4c21d67b05eaa5
RX(theta₈)
6fc16c167cac48eebf50f270f57b9b2a--bf4d57c903604c4dbb4c21d67b05eaa5
fef3fa7dd7bd4750a1c577f0cad35f2d
bf4d57c903604c4dbb4c21d67b05eaa5--fef3fa7dd7bd4750a1c577f0cad35f2d
064d860fb42d49b3960a3bc3b4783b26
fef3fa7dd7bd4750a1c577f0cad35f2d--064d860fb42d49b3960a3bc3b4783b26
4e18131924934d479edade30aa000f87
RX(theta₁₂)
064d860fb42d49b3960a3bc3b4783b26--4e18131924934d479edade30aa000f87
f51dbf9b821646e68d66d0a352da1fa5
RY(theta₁₆)
4e18131924934d479edade30aa000f87--f51dbf9b821646e68d66d0a352da1fa5
cbbba78178ce412686736cd94dd00c9b
RX(theta₂₀)
f51dbf9b821646e68d66d0a352da1fa5--cbbba78178ce412686736cd94dd00c9b
b6a32a5260dc4aeca968573b0b12d736
cbbba78178ce412686736cd94dd00c9b--b6a32a5260dc4aeca968573b0b12d736
a42f9bcd30d248f392dfa9c563c6f420
b6a32a5260dc4aeca968573b0b12d736--a42f9bcd30d248f392dfa9c563c6f420
8ad30cd83b4045459484cb6c8eb2dd75
a42f9bcd30d248f392dfa9c563c6f420--8ad30cd83b4045459484cb6c8eb2dd75
49c583a311714c078a4075dbb4f4fc01
8ec93071b4c94ebfbec2a9dd78fdaf0c
RX(theta₁)
75b00bd9a26e43efa39cfd68c05e01c2--8ec93071b4c94ebfbec2a9dd78fdaf0c
87cd731babcd47d19029eff75b6b3d60
2
c823cbc3c0e2447ea6655ee56c86ad00
RY(theta₅)
8ec93071b4c94ebfbec2a9dd78fdaf0c--c823cbc3c0e2447ea6655ee56c86ad00
b64de5dddb0149dd9383a9bd87bf1591
RX(theta₉)
c823cbc3c0e2447ea6655ee56c86ad00--b64de5dddb0149dd9383a9bd87bf1591
a0eeb32cb5904a999c5803a76a939394
X
b64de5dddb0149dd9383a9bd87bf1591--a0eeb32cb5904a999c5803a76a939394
a0eeb32cb5904a999c5803a76a939394--9ffe669e25824cfba0be2fe3a5ff21d9
b109a7073987413dbf8ab60cd4128176
a0eeb32cb5904a999c5803a76a939394--b109a7073987413dbf8ab60cd4128176
1b58a9b8d7a04d879810212aaf6fbde9
RX(theta₁₃)
b109a7073987413dbf8ab60cd4128176--1b58a9b8d7a04d879810212aaf6fbde9
50878e743f52480aa4d50ba4d6529446
RY(theta₁₇)
1b58a9b8d7a04d879810212aaf6fbde9--50878e743f52480aa4d50ba4d6529446
a2ae3461fc894863b8b82a112944cc64
RX(theta₂₁)
50878e743f52480aa4d50ba4d6529446--a2ae3461fc894863b8b82a112944cc64
9e2edd776da142d78484994cb756370f
X
a2ae3461fc894863b8b82a112944cc64--9e2edd776da142d78484994cb756370f
9e2edd776da142d78484994cb756370f--6c9e0bd995204242ad3ce01e61e4cf3d
01385c7c5d664f64bec04066fe20ed37
9e2edd776da142d78484994cb756370f--01385c7c5d664f64bec04066fe20ed37
94b552ceb2e94d39a2a6f01084223258
RX(theta₁)
01385c7c5d664f64bec04066fe20ed37--94b552ceb2e94d39a2a6f01084223258
7f6d0b845e56451a9870da1caac36d6f
RY(theta₅)
94b552ceb2e94d39a2a6f01084223258--7f6d0b845e56451a9870da1caac36d6f
24239b493a394f30ba2a4771c1eb7652
RX(theta₉)
7f6d0b845e56451a9870da1caac36d6f--24239b493a394f30ba2a4771c1eb7652
73b330b092a7433598af2e91c1ae186a
X
24239b493a394f30ba2a4771c1eb7652--73b330b092a7433598af2e91c1ae186a
73b330b092a7433598af2e91c1ae186a--fef3fa7dd7bd4750a1c577f0cad35f2d
bac3a0774f744b3d9a24f1aa6fbb85f0
73b330b092a7433598af2e91c1ae186a--bac3a0774f744b3d9a24f1aa6fbb85f0
5b0283f79c4a4429bb7821be83c861a1
RX(theta₁₃)
bac3a0774f744b3d9a24f1aa6fbb85f0--5b0283f79c4a4429bb7821be83c861a1
9f35f8b4906542fea5d336cdf8b55635
RY(theta₁₇)
5b0283f79c4a4429bb7821be83c861a1--9f35f8b4906542fea5d336cdf8b55635
316faba629974b68b63616c2f1eb954d
RX(theta₂₁)
9f35f8b4906542fea5d336cdf8b55635--316faba629974b68b63616c2f1eb954d
bebe18b985ff433ab9ab18b5f0b594fe
X
316faba629974b68b63616c2f1eb954d--bebe18b985ff433ab9ab18b5f0b594fe
bebe18b985ff433ab9ab18b5f0b594fe--b6a32a5260dc4aeca968573b0b12d736
52f6e7c495a04f64b3ccbc897a6e095c
bebe18b985ff433ab9ab18b5f0b594fe--52f6e7c495a04f64b3ccbc897a6e095c
52f6e7c495a04f64b3ccbc897a6e095c--49c583a311714c078a4075dbb4f4fc01
1fb9357890074fbc81038e932dda074c
23b9f0291ca348dca083c015ef77b2e9
RX(theta₂)
87cd731babcd47d19029eff75b6b3d60--23b9f0291ca348dca083c015ef77b2e9
18d86baf14e749e29a4906c4e6360e80
3
4cc140180f1b4cd6a49b531d9eb2707d
RY(theta₆)
23b9f0291ca348dca083c015ef77b2e9--4cc140180f1b4cd6a49b531d9eb2707d
452a3595d6e743ffb3b8630316ecef1e
RX(theta₁₀)
4cc140180f1b4cd6a49b531d9eb2707d--452a3595d6e743ffb3b8630316ecef1e
5cbdd43c52b347209c90a236587b2175
452a3595d6e743ffb3b8630316ecef1e--5cbdd43c52b347209c90a236587b2175
38c6559eda4a442b965ec9e51e135af0
X
5cbdd43c52b347209c90a236587b2175--38c6559eda4a442b965ec9e51e135af0
38c6559eda4a442b965ec9e51e135af0--b109a7073987413dbf8ab60cd4128176
9e2125a2cf294b6598411be6b6585f26
RX(theta₁₄)
38c6559eda4a442b965ec9e51e135af0--9e2125a2cf294b6598411be6b6585f26
b4afdcdc82c247cb9843b52b50749f6d
RY(theta₁₈)
9e2125a2cf294b6598411be6b6585f26--b4afdcdc82c247cb9843b52b50749f6d
5e126b408e8f4b63a787694cd2710c13
RX(theta₂₂)
b4afdcdc82c247cb9843b52b50749f6d--5e126b408e8f4b63a787694cd2710c13
d341850780464cd88040e53b397c24eb
5e126b408e8f4b63a787694cd2710c13--d341850780464cd88040e53b397c24eb
c77092c2e7b147aab9f325b300dcb49d
X
d341850780464cd88040e53b397c24eb--c77092c2e7b147aab9f325b300dcb49d
c77092c2e7b147aab9f325b300dcb49d--01385c7c5d664f64bec04066fe20ed37
7d7200c2548c4a658781015ad645d3b1
RX(theta₂)
c77092c2e7b147aab9f325b300dcb49d--7d7200c2548c4a658781015ad645d3b1
4854de072ee24dfa9c6820b5e519bb3a
RY(theta₆)
7d7200c2548c4a658781015ad645d3b1--4854de072ee24dfa9c6820b5e519bb3a
ad47fe46d46343e0971083c866392ced
RX(theta₁₀)
4854de072ee24dfa9c6820b5e519bb3a--ad47fe46d46343e0971083c866392ced
2813caf35c964c91852504bc2db82be6
ad47fe46d46343e0971083c866392ced--2813caf35c964c91852504bc2db82be6
075a1bd3a38242f0aa5b6f7a783a6891
X
2813caf35c964c91852504bc2db82be6--075a1bd3a38242f0aa5b6f7a783a6891
075a1bd3a38242f0aa5b6f7a783a6891--bac3a0774f744b3d9a24f1aa6fbb85f0
3487466e766749e6a7845381afc2f7f1
RX(theta₁₄)
075a1bd3a38242f0aa5b6f7a783a6891--3487466e766749e6a7845381afc2f7f1
ad6757ac3a8342a5bb7484792ee9ab77
RY(theta₁₈)
3487466e766749e6a7845381afc2f7f1--ad6757ac3a8342a5bb7484792ee9ab77
84ad92fef686450b8ea05713a5c62d56
RX(theta₂₂)
ad6757ac3a8342a5bb7484792ee9ab77--84ad92fef686450b8ea05713a5c62d56
368a165986ec424784173bd94e444032
84ad92fef686450b8ea05713a5c62d56--368a165986ec424784173bd94e444032
cc9d9a8caff745d6b2c332ef2ff3b448
X
368a165986ec424784173bd94e444032--cc9d9a8caff745d6b2c332ef2ff3b448
cc9d9a8caff745d6b2c332ef2ff3b448--52f6e7c495a04f64b3ccbc897a6e095c
cc9d9a8caff745d6b2c332ef2ff3b448--1fb9357890074fbc81038e932dda074c
aaa812e5b02046e6be28da91b6f43daf
d5f28a921e8749768c2e520bb97a75b6
RX(theta₃)
18d86baf14e749e29a4906c4e6360e80--d5f28a921e8749768c2e520bb97a75b6
aba78a0c3f5940c1b24e96eeb837daf6
RY(theta₇)
d5f28a921e8749768c2e520bb97a75b6--aba78a0c3f5940c1b24e96eeb837daf6
b582b62a7d2a4705be32df9b302740ff
RX(theta₁₁)
aba78a0c3f5940c1b24e96eeb837daf6--b582b62a7d2a4705be32df9b302740ff
f6114daf53154befadb79be8eb465cb5
X
b582b62a7d2a4705be32df9b302740ff--f6114daf53154befadb79be8eb465cb5
f6114daf53154befadb79be8eb465cb5--5cbdd43c52b347209c90a236587b2175
a863de42c98047f18836277fdcc1db39
f6114daf53154befadb79be8eb465cb5--a863de42c98047f18836277fdcc1db39
741c82a7ddbe48daade6f8220c601bc4
RX(theta₁₅)
a863de42c98047f18836277fdcc1db39--741c82a7ddbe48daade6f8220c601bc4
f99f12399a4c421289729f94c9e608de
RY(theta₁₉)
741c82a7ddbe48daade6f8220c601bc4--f99f12399a4c421289729f94c9e608de
0e9abcb4deaa415d81439aff2e78ff36
RX(theta₂₃)
f99f12399a4c421289729f94c9e608de--0e9abcb4deaa415d81439aff2e78ff36
a5a34fb83cbe4449b3aa8ab4b38267df
X
0e9abcb4deaa415d81439aff2e78ff36--a5a34fb83cbe4449b3aa8ab4b38267df
a5a34fb83cbe4449b3aa8ab4b38267df--d341850780464cd88040e53b397c24eb
abc87fa8470343d59dd39937f5cb1355
a5a34fb83cbe4449b3aa8ab4b38267df--abc87fa8470343d59dd39937f5cb1355
ebbfebeca9b54a01b7ac0fc808667574
RX(theta₃)
abc87fa8470343d59dd39937f5cb1355--ebbfebeca9b54a01b7ac0fc808667574
b144b38c29984d3987a722aa5f6b7410
RY(theta₇)
ebbfebeca9b54a01b7ac0fc808667574--b144b38c29984d3987a722aa5f6b7410
9b7cfe5081b4474a82c70602e86c31f5
RX(theta₁₁)
b144b38c29984d3987a722aa5f6b7410--9b7cfe5081b4474a82c70602e86c31f5
5ec51fbb1c7e40dbabd067d95e0b8f6a
X
9b7cfe5081b4474a82c70602e86c31f5--5ec51fbb1c7e40dbabd067d95e0b8f6a
5ec51fbb1c7e40dbabd067d95e0b8f6a--2813caf35c964c91852504bc2db82be6
e441cb737b6e415fbd43ed2238ef67b2
5ec51fbb1c7e40dbabd067d95e0b8f6a--e441cb737b6e415fbd43ed2238ef67b2
b3909253576447c3b3fb33980b16bb46
RX(theta₁₅)
e441cb737b6e415fbd43ed2238ef67b2--b3909253576447c3b3fb33980b16bb46
47c24dc45bd948a2a53bf19011251304
RY(theta₁₉)
b3909253576447c3b3fb33980b16bb46--47c24dc45bd948a2a53bf19011251304
12588b0f08be4d2ea8ea780defdecf8b
RX(theta₂₃)
47c24dc45bd948a2a53bf19011251304--12588b0f08be4d2ea8ea780defdecf8b
12ee81c629e745c8b95fb1d9d302b59f
X
12588b0f08be4d2ea8ea780defdecf8b--12ee81c629e745c8b95fb1d9d302b59f
12ee81c629e745c8b95fb1d9d302b59f--368a165986ec424784173bd94e444032
4b53c0b4e9da43dda5681cc1d40596c5
12ee81c629e745c8b95fb1d9d302b59f--4b53c0b4e9da43dda5681cc1d40596c5
4b53c0b4e9da43dda5681cc1d40596c5--aaa812e5b02046e6be28da91b6f43daf
Avoid non-unique names by prefixing
A parameter prefix for each HEA can be passed as follows:
hea1 = hea ( n_qubits = n_qubits , depth = depth , param_prefix = "p1" )
hea2 = hea ( n_qubits = n_qubits , depth = depth , param_prefix = "p2" )
circuit = QuantumCircuit ( n_qubits , hea1 , hea2 )
n_params_two_heas = circuit . num_unique_parameters
U n ique parame ters wi t h t wo s ta cked HEAs : 48
%3
cluster_28f31e5609844e37936ab6ca5cd3ce74
HEA
cluster_054739ee7ad645dc962ffb578404ec18
HEA
dc4c9fa7da0c4244abc9bba882766432
0
1083afa40a4449959f007a0412ddd1e4
RX(p1₀)
dc4c9fa7da0c4244abc9bba882766432--1083afa40a4449959f007a0412ddd1e4
9425e0c7bd7b4e868d62d2ec43f19868
1
a4a51281418d4f778cb0be4546f99c02
RY(p1₄)
1083afa40a4449959f007a0412ddd1e4--a4a51281418d4f778cb0be4546f99c02
c1dbb765d4e44bfea2cd60cd3835e25d
RX(p1₈)
a4a51281418d4f778cb0be4546f99c02--c1dbb765d4e44bfea2cd60cd3835e25d
da2c335c159b4b27a80cc20d9ecf782a
c1dbb765d4e44bfea2cd60cd3835e25d--da2c335c159b4b27a80cc20d9ecf782a
3fa0b7798f3345729d98acaeae7345d7
da2c335c159b4b27a80cc20d9ecf782a--3fa0b7798f3345729d98acaeae7345d7
4f74e8cee7ca43a694e7d4d6540d5424
RX(p1₁₂)
3fa0b7798f3345729d98acaeae7345d7--4f74e8cee7ca43a694e7d4d6540d5424
4bc72f6d1e48416f88f8ed04b9e1dd0c
RY(p1₁₆)
4f74e8cee7ca43a694e7d4d6540d5424--4bc72f6d1e48416f88f8ed04b9e1dd0c
d0818cd3e7024a2fbbd998b7e75e2e7d
RX(p1₂₀)
4bc72f6d1e48416f88f8ed04b9e1dd0c--d0818cd3e7024a2fbbd998b7e75e2e7d
ba75e27a29a14f68932e4f27688e7c7a
d0818cd3e7024a2fbbd998b7e75e2e7d--ba75e27a29a14f68932e4f27688e7c7a
9b00d7e4af9446978129ea5afe0e2ac5
ba75e27a29a14f68932e4f27688e7c7a--9b00d7e4af9446978129ea5afe0e2ac5
3eddee841fb24f60b4a7a45288104964
RX(p2₀)
9b00d7e4af9446978129ea5afe0e2ac5--3eddee841fb24f60b4a7a45288104964
24bb6701f2684ddbbeb9d9b5d926079a
RY(p2₄)
3eddee841fb24f60b4a7a45288104964--24bb6701f2684ddbbeb9d9b5d926079a
20bf3cb7693b49289b075950a6575103
RX(p2₈)
24bb6701f2684ddbbeb9d9b5d926079a--20bf3cb7693b49289b075950a6575103
81cbc1e00b57438b89220002b263b988
20bf3cb7693b49289b075950a6575103--81cbc1e00b57438b89220002b263b988
bd51e959c35d45eb92955ea2a7398a6d
81cbc1e00b57438b89220002b263b988--bd51e959c35d45eb92955ea2a7398a6d
ea275d375bac4414892d74263b85b329
RX(p2₁₂)
bd51e959c35d45eb92955ea2a7398a6d--ea275d375bac4414892d74263b85b329
e7298177a53d4704b2d1d9a9eac4a228
RY(p2₁₆)
ea275d375bac4414892d74263b85b329--e7298177a53d4704b2d1d9a9eac4a228
2b755f54705b4e10bfc88528346b42b4
RX(p2₂₀)
e7298177a53d4704b2d1d9a9eac4a228--2b755f54705b4e10bfc88528346b42b4
bced6b45374f465390b3bdd193a23714
2b755f54705b4e10bfc88528346b42b4--bced6b45374f465390b3bdd193a23714
0c392da75c564cb289ca09f1be843ecb
bced6b45374f465390b3bdd193a23714--0c392da75c564cb289ca09f1be843ecb
ddb1ac28251c4542884c03aa7b1238a3
0c392da75c564cb289ca09f1be843ecb--ddb1ac28251c4542884c03aa7b1238a3
a01e51abb39c48f2bd194921df858c4e
3f717a2e519a4a9ea833293531cff8ee
RX(p1₁)
9425e0c7bd7b4e868d62d2ec43f19868--3f717a2e519a4a9ea833293531cff8ee
a9c1e1e6a031407f8539da36a282859a
2
d56b9145a34348e083e74cca05608845
RY(p1₅)
3f717a2e519a4a9ea833293531cff8ee--d56b9145a34348e083e74cca05608845
4e7edeace4af42b194c99905f27ae950
RX(p1₉)
d56b9145a34348e083e74cca05608845--4e7edeace4af42b194c99905f27ae950
de9caa4e44d44335846f9ed3d0d8fbdc
X
4e7edeace4af42b194c99905f27ae950--de9caa4e44d44335846f9ed3d0d8fbdc
de9caa4e44d44335846f9ed3d0d8fbdc--da2c335c159b4b27a80cc20d9ecf782a
4c63579cc4254841a39e1d582d99d7c6
de9caa4e44d44335846f9ed3d0d8fbdc--4c63579cc4254841a39e1d582d99d7c6
a5741bcea78c486bbecf3a9760ba2297
RX(p1₁₃)
4c63579cc4254841a39e1d582d99d7c6--a5741bcea78c486bbecf3a9760ba2297
803d0025ffa34a76ab576d278469a9ce
RY(p1₁₇)
a5741bcea78c486bbecf3a9760ba2297--803d0025ffa34a76ab576d278469a9ce
6d78c0f42a9345f992b4132b4a669433
RX(p1₂₁)
803d0025ffa34a76ab576d278469a9ce--6d78c0f42a9345f992b4132b4a669433
44309d13d0a843ab869df202004cf2ff
X
6d78c0f42a9345f992b4132b4a669433--44309d13d0a843ab869df202004cf2ff
44309d13d0a843ab869df202004cf2ff--ba75e27a29a14f68932e4f27688e7c7a
05e78b3f3ce041d4b14b7bed55855ba0
44309d13d0a843ab869df202004cf2ff--05e78b3f3ce041d4b14b7bed55855ba0
ccd9ff295ae24b47a53cd2180f6ad3fb
RX(p2₁)
05e78b3f3ce041d4b14b7bed55855ba0--ccd9ff295ae24b47a53cd2180f6ad3fb
0ddc5927723b43d0a017b5b59c2d0dc1
RY(p2₅)
ccd9ff295ae24b47a53cd2180f6ad3fb--0ddc5927723b43d0a017b5b59c2d0dc1
926b4496bdfc48c09a65982d7630b925
RX(p2₉)
0ddc5927723b43d0a017b5b59c2d0dc1--926b4496bdfc48c09a65982d7630b925
ae6f985fa7624750a0832e41b7592ba0
X
926b4496bdfc48c09a65982d7630b925--ae6f985fa7624750a0832e41b7592ba0
ae6f985fa7624750a0832e41b7592ba0--81cbc1e00b57438b89220002b263b988
d25e4a004e2d469896f082ab814d5f1b
ae6f985fa7624750a0832e41b7592ba0--d25e4a004e2d469896f082ab814d5f1b
bcbca67f2c31408ea0d62f81824a51fa
RX(p2₁₃)
d25e4a004e2d469896f082ab814d5f1b--bcbca67f2c31408ea0d62f81824a51fa
1171efcfbe0944aca6703d1586fe7bcf
RY(p2₁₇)
bcbca67f2c31408ea0d62f81824a51fa--1171efcfbe0944aca6703d1586fe7bcf
6d7eed4cece34dd2a27f8ab4319f143f
RX(p2₂₁)
1171efcfbe0944aca6703d1586fe7bcf--6d7eed4cece34dd2a27f8ab4319f143f
5f4ccc8e19204e50a39bad0c745db7fa
X
6d7eed4cece34dd2a27f8ab4319f143f--5f4ccc8e19204e50a39bad0c745db7fa
5f4ccc8e19204e50a39bad0c745db7fa--bced6b45374f465390b3bdd193a23714
585a362e6fb44965932b6604a3ad34c4
5f4ccc8e19204e50a39bad0c745db7fa--585a362e6fb44965932b6604a3ad34c4
585a362e6fb44965932b6604a3ad34c4--a01e51abb39c48f2bd194921df858c4e
344bc19e28c7470682ce8add79139a2d
68fd42cc4b504c2a8b96a2d1c17ae90c
RX(p1₂)
a9c1e1e6a031407f8539da36a282859a--68fd42cc4b504c2a8b96a2d1c17ae90c
9009f27c35714aa39cd27bab6c7fd0f1
3
a4f008af8027457f8f5dbcd448f38122
RY(p1₆)
68fd42cc4b504c2a8b96a2d1c17ae90c--a4f008af8027457f8f5dbcd448f38122
188af2ca8ee14181a0420b0f550ff36f
RX(p1₁₀)
a4f008af8027457f8f5dbcd448f38122--188af2ca8ee14181a0420b0f550ff36f
eb72661b670e415881a7fa99f2e6a567
188af2ca8ee14181a0420b0f550ff36f--eb72661b670e415881a7fa99f2e6a567
4b76a2a3c6c548a7bfb0bfff92b25ec3
X
eb72661b670e415881a7fa99f2e6a567--4b76a2a3c6c548a7bfb0bfff92b25ec3
4b76a2a3c6c548a7bfb0bfff92b25ec3--4c63579cc4254841a39e1d582d99d7c6
e480f9e5d22e440a88f554a56210347f
RX(p1₁₄)
4b76a2a3c6c548a7bfb0bfff92b25ec3--e480f9e5d22e440a88f554a56210347f
9a568d21f0e74f4489e04733f123f26b
RY(p1₁₈)
e480f9e5d22e440a88f554a56210347f--9a568d21f0e74f4489e04733f123f26b
0d823681473a47638967f74b2281a167
RX(p1₂₂)
9a568d21f0e74f4489e04733f123f26b--0d823681473a47638967f74b2281a167
6d0fb181377e469892e2bd40008903c2
0d823681473a47638967f74b2281a167--6d0fb181377e469892e2bd40008903c2
ccde59b54887429280669bc05369bb21
X
6d0fb181377e469892e2bd40008903c2--ccde59b54887429280669bc05369bb21
ccde59b54887429280669bc05369bb21--05e78b3f3ce041d4b14b7bed55855ba0
8b485b3a1be34d95865f8cb70de75194
RX(p2₂)
ccde59b54887429280669bc05369bb21--8b485b3a1be34d95865f8cb70de75194
ee102f91b9564476b8aea00fbbba0581
RY(p2₆)
8b485b3a1be34d95865f8cb70de75194--ee102f91b9564476b8aea00fbbba0581
2cfc3c70170441d297e25ae567330e2d
RX(p2₁₀)
ee102f91b9564476b8aea00fbbba0581--2cfc3c70170441d297e25ae567330e2d
a7fb9fb0bfd9428cb640209146dd0db3
2cfc3c70170441d297e25ae567330e2d--a7fb9fb0bfd9428cb640209146dd0db3
0e98f758202d4d3494902d919c4c86d0
X
a7fb9fb0bfd9428cb640209146dd0db3--0e98f758202d4d3494902d919c4c86d0
0e98f758202d4d3494902d919c4c86d0--d25e4a004e2d469896f082ab814d5f1b
2678325a5b4c44d8b6420ed50d7b9dce
RX(p2₁₄)
0e98f758202d4d3494902d919c4c86d0--2678325a5b4c44d8b6420ed50d7b9dce
dbe0769cc2f94062a1d22cfb155557cb
RY(p2₁₈)
2678325a5b4c44d8b6420ed50d7b9dce--dbe0769cc2f94062a1d22cfb155557cb
a22ec04d2fad4a44a0f3f3ac244dea4c
RX(p2₂₂)
dbe0769cc2f94062a1d22cfb155557cb--a22ec04d2fad4a44a0f3f3ac244dea4c
c1207884ded44249874c801df4baaa16
a22ec04d2fad4a44a0f3f3ac244dea4c--c1207884ded44249874c801df4baaa16
ba9ee60d96164f2b952d233cf33d827a
X
c1207884ded44249874c801df4baaa16--ba9ee60d96164f2b952d233cf33d827a
ba9ee60d96164f2b952d233cf33d827a--585a362e6fb44965932b6604a3ad34c4
ba9ee60d96164f2b952d233cf33d827a--344bc19e28c7470682ce8add79139a2d
92ece065b9454acea027484a54392d98
35007b8f49dd45aa95289bfdbf9c296c
RX(p1₃)
9009f27c35714aa39cd27bab6c7fd0f1--35007b8f49dd45aa95289bfdbf9c296c
78c757730d3446d5be7720af140c7b5e
RY(p1₇)
35007b8f49dd45aa95289bfdbf9c296c--78c757730d3446d5be7720af140c7b5e
bc8b907581504cfa9bddd850271bce18
RX(p1₁₁)
78c757730d3446d5be7720af140c7b5e--bc8b907581504cfa9bddd850271bce18
1559714596c643bd899df09e9e437926
X
bc8b907581504cfa9bddd850271bce18--1559714596c643bd899df09e9e437926
1559714596c643bd899df09e9e437926--eb72661b670e415881a7fa99f2e6a567
bb017b3669094ceaa9fa817d03616d15
1559714596c643bd899df09e9e437926--bb017b3669094ceaa9fa817d03616d15
ba200b87cf6445b2935307a0d574e97a
RX(p1₁₅)
bb017b3669094ceaa9fa817d03616d15--ba200b87cf6445b2935307a0d574e97a
f34e1d04d6a64bfaa95881b31ce994e7
RY(p1₁₉)
ba200b87cf6445b2935307a0d574e97a--f34e1d04d6a64bfaa95881b31ce994e7
069e79b384674cf3ab646a16ef423ec9
RX(p1₂₃)
f34e1d04d6a64bfaa95881b31ce994e7--069e79b384674cf3ab646a16ef423ec9
94c0536499d94b42933acbc2b524c8f9
X
069e79b384674cf3ab646a16ef423ec9--94c0536499d94b42933acbc2b524c8f9
94c0536499d94b42933acbc2b524c8f9--6d0fb181377e469892e2bd40008903c2
cf63ac783e8b46c0a82eda7829b3d20c
94c0536499d94b42933acbc2b524c8f9--cf63ac783e8b46c0a82eda7829b3d20c
09b363e6da1e440caee6182f87cf84a5
RX(p2₃)
cf63ac783e8b46c0a82eda7829b3d20c--09b363e6da1e440caee6182f87cf84a5
2b1ab8d000c646de989dfd042c903802
RY(p2₇)
09b363e6da1e440caee6182f87cf84a5--2b1ab8d000c646de989dfd042c903802
fb1155e5cd88451a81cf2e2ec2fae07c
RX(p2₁₁)
2b1ab8d000c646de989dfd042c903802--fb1155e5cd88451a81cf2e2ec2fae07c
e5e7e498e85745dab67f9378ac8be531
X
fb1155e5cd88451a81cf2e2ec2fae07c--e5e7e498e85745dab67f9378ac8be531
e5e7e498e85745dab67f9378ac8be531--a7fb9fb0bfd9428cb640209146dd0db3
d5fd5d6f270745a5bfeb25469452a1f4
e5e7e498e85745dab67f9378ac8be531--d5fd5d6f270745a5bfeb25469452a1f4
554e0fc13be646499b6302525b8d57c4
RX(p2₁₅)
d5fd5d6f270745a5bfeb25469452a1f4--554e0fc13be646499b6302525b8d57c4
71a0da834768451e9afaa439e9878f62
RY(p2₁₉)
554e0fc13be646499b6302525b8d57c4--71a0da834768451e9afaa439e9878f62
1bd3fcc8b1534dfcb7481960afe850d3
RX(p2₂₃)
71a0da834768451e9afaa439e9878f62--1bd3fcc8b1534dfcb7481960afe850d3
f7eaf4c4ae0144bc844c83d74a1e3bc5
X
1bd3fcc8b1534dfcb7481960afe850d3--f7eaf4c4ae0144bc844c83d74a1e3bc5
f7eaf4c4ae0144bc844c83d74a1e3bc5--c1207884ded44249874c801df4baaa16
94df4382f3064e5da2b530700b6dccaa
f7eaf4c4ae0144bc844c83d74a1e3bc5--94df4382f3064e5da2b530700b6dccaa
94df4382f3064e5da2b530700b6dccaa--92ece065b9454acea027484a54392d98
The hea
function will be further explored in the QML Constructors tutorial .
Parametric observables
In Qadence, one can define quantum observables with classical optimizable parameters to
improve the convergence of QML calculations. This is particularly useful for differentiable quantum circuits.
from qadence import VariationalParameter , Z , add , tag
s = VariationalParameter ( "s" )
observable = add ( s * Z ( i ) for i in range ( n_qubits ))
Now, a quantum model can be created with the parametric observable.
The observable variational parameters are included among the model ones.
from qadence import QuantumModel , QuantumCircuit
circuit = QuantumCircuit ( n_qubits , hea ( n_qubits , depth ))
model = QuantumModel ( circuit , observable = observable )
Varia t io nal parame ters = OrderedDic t ( [ ('s' , tens or( [ 0.9406 ] )) , (' t he ta _ 0 ' , tens or( [ 0.7951 ] )) , (' t he ta _ 1 ' , tens or( [ 0.3345 ] )) , (' t he ta _ 10 ' , tens or( [ 0.8927 ] )) , (' t he ta _ 11 ' , tens or( [ 0.3210 ] )) , (' t he ta _ 12 ' , tens or( [ 0.3358 ] )) , (' t he ta _ 13 ' , tens or( [ 0.6445 ] )) , (' t he ta _ 14 ' , tens or( [ 0.1183 ] )) , (' t he ta _ 15 ' , tens or( [ 0.8274 ] )) , (' t he ta _ 16 ' , tens or( [ 0.6881 ] )) , (' t he ta _ 17 ' , tens or( [ 0.5928 ] )) , (' t he ta _ 18 ' , tens or( [ 0.2551 ] )) , (' t he ta _ 19 ' , tens or( [ 0.3500 ] )) , (' t he ta _ 2 ' , tens or( [ 0.3125 ] )) , (' t he ta _ 20 ' , tens or( [ 0.5327 ] )) , (' t he ta _ 21 ' , tens or( [ 0.0981 ] )) , (' t he ta _ 22 ' , tens or( [ 0.1385 ] )) , (' t he ta _ 23 ' , tens or( [ 0.6408 ] )) , (' t he ta _ 3 ' , tens or( [ 0.4979 ] )) , (' t he ta _ 4 ' , tens or( [ 0.4264 ] )) , (' t he ta _ 5 ' , tens or( [ 0.5154 ] )) , (' t he ta _ 6 ' , tens or( [ 0.6589 ] )) , (' t he ta _ 7 ' , tens or( [ 0.1994 ] )) , (' t he ta _ 8 ' , tens or( [ 0.9758 ] )) , (' t he ta _ 9 ' , tens or( [ 0.9689 ] )) ] )
One optimization step (forward and backward pass) can be performed using built-in torch
functionalities. Variational parameters
can be checked to have been updated accordingly:
import torch
mse_loss = torch . nn . MSELoss ()
optimizer = torch . optim . Adam ( model . parameters ())
# Compute forward & backward pass
optimizer . zero_grad ()
loss = mse_loss ( model . expectation ({}), torch . zeros ( 1 ))
loss . backward ()
# Update the parameters and check the parameters.
optimizer . step ()
Varia t io nal parame ters = OrderedDic t ( [ ('s' , tens or( [ 0.9396 ] )) , (' t he ta _ 0 ' , tens or( [ 0.7941 ] )) , (' t he ta _ 1 ' , tens or( [ 0.3335 ] )) , (' t he ta _ 10 ' , tens or( [ 0.8937 ] )) , (' t he ta _ 11 ' , tens or( [ 0.3200 ] )) , (' t he ta _ 12 ' , tens or( [ 0.3348 ] )) , (' t he ta _ 13 ' , tens or( [ 0.6435 ] )) , (' t he ta _ 14 ' , tens or( [ 0.1193 ] )) , (' t he ta _ 15 ' , tens or( [ 0.8264 ] )) , (' t he ta _ 16 ' , tens or( [ 0.6891 ] )) , (' t he ta _ 17 ' , tens or( [ 0.5918 ] )) , (' t he ta _ 18 ' , tens or( [ 0.2561 ] )) , (' t he ta _ 19 ' , tens or( [ 0.3510 ] )) , (' t he ta _ 2 ' , tens or( [ 0.3135 ] )) , (' t he ta _ 20 ' , tens or( [ 0.5317 ] )) , (' t he ta _ 21 ' , tens or( [ 0.0971 ] )) , (' t he ta _ 22 ' , tens or( [ 0.1395 ] )) , (' t he ta _ 23 ' , tens or( [ 0.6398 ] )) , (' t he ta _ 3 ' , tens or( [ 0.4969 ] )) , (' t he ta _ 4 ' , tens or( [ 0.4254 ] )) , (' t he ta _ 5 ' , tens or( [ 0.5144 ] )) , (' t he ta _ 6 ' , tens or( [ 0.6579 ] )) , (' t he ta _ 7 ' , tens or( [ 0.2004 ] )) , (' t he ta _ 8 ' , tens or( [ 0.9748 ] )) , (' t he ta _ 9 ' , tens or( [ 0.9679 ] )) ] )
Non-unitary circuits
Qadence allows to compose with non-unitary blocks.
Here is an example of a non-unitary block as a sum of Pauli operators with complex coefficients.
Currently, only the PyQTorch
backend fully supports execution with non-unitary circuits.
from qadence import QuantumModel , QuantumCircuit , Z , X
c1 = 2.0
c2 = 2.0 + 2.0 j
block = c1 * Z ( 0 ) + c2 * X ( 1 ) + c1 * c2 * ( Z ( 2 ) + X ( 3 ))
circuit = QuantumCircuit ( 4 , block )
model = QuantumModel ( circuit ) # BackendName.PYQTORCH and DiffMode.AD by default.
w f = tens or( [[ 6.+4. j , 4.+4. j , 0.+0. j , 0.+0. j , 2.+2. j , 0.+0. j , 0.+0. j , 0.+0. j , 0.+0. j , 0.+0. j ,
0.+0. j , 0.+0. j , 0.+0. j , 0.+0. j , 0.+0. j , 0.+0. j ]] )