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.9933+0.0000 j , 0.0000-0.1157 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.8981+0.0000 j , 0.0000-0.4398 j ],
[ 0.9974+0.0000 j , 0.0000-0.0723 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.8605+0.0000 j , 0.1212+0.0000 j , 0.0000-0.4900 j , 0.0000-0.0690 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 )
cluster_25bd1d4c36e340e29e1b75ce633715b1
[* 2]
cluster_92ef12b7c3314ba39503c6fbf3e65ad3
Rotations
d155f230ae394aa78de1d75bd0ad4651
0
0113e028fdca4538a82ed763d7381ef9
RX(phi/theta)
d155f230ae394aa78de1d75bd0ad4651--0113e028fdca4538a82ed763d7381ef9
dced762661414f2688c65fcef969ea3e
1
7a96d3943ebc4bb597afb384c13d022f
RX(phi)
0113e028fdca4538a82ed763d7381ef9--7a96d3943ebc4bb597afb384c13d022f
677c55893d5c4d4ea845c87733ffbbe7
RX(phi)
7a96d3943ebc4bb597afb384c13d022f--677c55893d5c4d4ea845c87733ffbbe7
f2b830439f734093a0466de2e49b91ae
RX(phi + theta)
677c55893d5c4d4ea845c87733ffbbe7--f2b830439f734093a0466de2e49b91ae
05ad9672ab734a55b971b80ccc412f02
f2b830439f734093a0466de2e49b91ae--05ad9672ab734a55b971b80ccc412f02
06885695c69f4fadbbfcdc54e4141ed7
05ad9672ab734a55b971b80ccc412f02--06885695c69f4fadbbfcdc54e4141ed7
cb7f7ff2de284c8fbe2d4c7f61f3aa24
Z
06885695c69f4fadbbfcdc54e4141ed7--cb7f7ff2de284c8fbe2d4c7f61f3aa24
ed6598b2b0324482b29590e19a8ff18e
cb7f7ff2de284c8fbe2d4c7f61f3aa24--ed6598b2b0324482b29590e19a8ff18e
7858aa494078404fa6de9a941010fb49
d61b58713ab74befbf47fa80d191734c
RY(2*theta)
dced762661414f2688c65fcef969ea3e--d61b58713ab74befbf47fa80d191734c
fc4abb6bfc4b418a816cf06f42d4a46d
2
8287f2b128664d25b30937c2ccce05a4
RY(theta)
d61b58713ab74befbf47fa80d191734c--8287f2b128664d25b30937c2ccce05a4
6420a69db31b447280a028f532b16e86
RY(theta)
8287f2b128664d25b30937c2ccce05a4--6420a69db31b447280a028f532b16e86
92ff7140453c47738b2761df200e9e56
RY(theta**2)
6420a69db31b447280a028f532b16e86--92ff7140453c47738b2761df200e9e56
774d9cd12fff4401992803822063eb56
X
92ff7140453c47738b2761df200e9e56--774d9cd12fff4401992803822063eb56
774d9cd12fff4401992803822063eb56--05ad9672ab734a55b971b80ccc412f02
f6eb2d3368524a1e83011232b5535896
774d9cd12fff4401992803822063eb56--f6eb2d3368524a1e83011232b5535896
4eb7ca18e85f4a4ead20899a43a510df
Z
f6eb2d3368524a1e83011232b5535896--4eb7ca18e85f4a4ead20899a43a510df
4eb7ca18e85f4a4ead20899a43a510df--7858aa494078404fa6de9a941010fb49
3275b637f0e84a6e86429e06463975a4
d783d199f6624a7b9e4cba827dba4e6f
RZ(cos(phi))
fc4abb6bfc4b418a816cf06f42d4a46d--d783d199f6624a7b9e4cba827dba4e6f
d0378fe145e04362ae1325d1be12f54a
RZ(phi)
d783d199f6624a7b9e4cba827dba4e6f--d0378fe145e04362ae1325d1be12f54a
300b925b72d941069a858c4450617775
RZ(phi)
d0378fe145e04362ae1325d1be12f54a--300b925b72d941069a858c4450617775
d3c65ff86ff04754a651907a06692d6a
RZ(cos(phi))
300b925b72d941069a858c4450617775--d3c65ff86ff04754a651907a06692d6a
d0b097971b604ee496532969cebf396c
d3c65ff86ff04754a651907a06692d6a--d0b097971b604ee496532969cebf396c
b945bdbcdf62491fb0b2225c0724aca2
X
d0b097971b604ee496532969cebf396c--b945bdbcdf62491fb0b2225c0724aca2
b945bdbcdf62491fb0b2225c0724aca2--f6eb2d3368524a1e83011232b5535896
7cc6ad3b678342e68720fbee9a579b1b
Z
b945bdbcdf62491fb0b2225c0724aca2--7cc6ad3b678342e68720fbee9a579b1b
7cc6ad3b678342e68720fbee9a579b1b--3275b637f0e84a6e86429e06463975a4
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.0053 ] )) ] )
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.9741+0.0000 j , 0.1588+0.0000 j , 0.0000-0.1588 j , 0.0000-0.0259 j ],
[ 0.8288+0.0000 j , 0.3767+0.0000 j , 0.0000-0.3767 j , 0.0000-0.1712 j ],
[ 0.9161+0.0000 j , 0.2772+0.0000 j , 0.0000-0.2772 j , 0.0000-0.0839 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
7d79c9b93d7d404a9daf8dc84245af85
0
22a0609602244c2bafa3a98153d9a886
RX(theta₀)
7d79c9b93d7d404a9daf8dc84245af85--22a0609602244c2bafa3a98153d9a886
dcba6d9a96744cf3a5410a05a4b6a924
1
c2bc96a5e0404a78b4431155a8258ba6
RY(theta₄)
22a0609602244c2bafa3a98153d9a886--c2bc96a5e0404a78b4431155a8258ba6
c1389282acb44ab9943d5debb5b97d03
RX(theta₈)
c2bc96a5e0404a78b4431155a8258ba6--c1389282acb44ab9943d5debb5b97d03
c81eba7caaa541d6932ab380fb056e93
c1389282acb44ab9943d5debb5b97d03--c81eba7caaa541d6932ab380fb056e93
485a5ee87b724047a5d5db892bda6163
c81eba7caaa541d6932ab380fb056e93--485a5ee87b724047a5d5db892bda6163
c2316d6409a84beaa17dd23f8e5635a4
RX(theta₁₂)
485a5ee87b724047a5d5db892bda6163--c2316d6409a84beaa17dd23f8e5635a4
b1f0ebe60ba642c0849e6ac1ce7f8998
RY(theta₁₆)
c2316d6409a84beaa17dd23f8e5635a4--b1f0ebe60ba642c0849e6ac1ce7f8998
667eb665f5894c258953b70f78135cd4
RX(theta₂₀)
b1f0ebe60ba642c0849e6ac1ce7f8998--667eb665f5894c258953b70f78135cd4
1ae0d39a51ed443d838b912fdbce4dba
667eb665f5894c258953b70f78135cd4--1ae0d39a51ed443d838b912fdbce4dba
9ed5361365a44bf0b8078f253ee5728c
1ae0d39a51ed443d838b912fdbce4dba--9ed5361365a44bf0b8078f253ee5728c
d80f8ad22fae4022a6002e8f9b20d2fd
9ed5361365a44bf0b8078f253ee5728c--d80f8ad22fae4022a6002e8f9b20d2fd
931281d576b44407aab377d6c1968add
6e920bcd6f5243edb5bc349ee47d7936
RX(theta₁)
dcba6d9a96744cf3a5410a05a4b6a924--6e920bcd6f5243edb5bc349ee47d7936
bdac247370644483be6e4b2d60925292
2
953afd795e524bf699fdfffd00a3a53b
RY(theta₅)
6e920bcd6f5243edb5bc349ee47d7936--953afd795e524bf699fdfffd00a3a53b
9b997193d4664217b9e523d588460f2c
RX(theta₉)
953afd795e524bf699fdfffd00a3a53b--9b997193d4664217b9e523d588460f2c
499153adcbaf4c99a4ae7323dad56090
X
9b997193d4664217b9e523d588460f2c--499153adcbaf4c99a4ae7323dad56090
499153adcbaf4c99a4ae7323dad56090--c81eba7caaa541d6932ab380fb056e93
c65284dfbf5d492a9b6eec25b0e172ed
499153adcbaf4c99a4ae7323dad56090--c65284dfbf5d492a9b6eec25b0e172ed
88acd53489c549c19b044b9572e0e802
RX(theta₁₃)
c65284dfbf5d492a9b6eec25b0e172ed--88acd53489c549c19b044b9572e0e802
0ecbb6715cd2484a8a20a039b1b492bd
RY(theta₁₇)
88acd53489c549c19b044b9572e0e802--0ecbb6715cd2484a8a20a039b1b492bd
07bb1d83f91645ce96ebe97ebbf64432
RX(theta₂₁)
0ecbb6715cd2484a8a20a039b1b492bd--07bb1d83f91645ce96ebe97ebbf64432
7b7875292b4b454691ee50672888c4f4
X
07bb1d83f91645ce96ebe97ebbf64432--7b7875292b4b454691ee50672888c4f4
7b7875292b4b454691ee50672888c4f4--1ae0d39a51ed443d838b912fdbce4dba
6a524ad5601144d0983a3a9ed0e69d60
7b7875292b4b454691ee50672888c4f4--6a524ad5601144d0983a3a9ed0e69d60
6a524ad5601144d0983a3a9ed0e69d60--931281d576b44407aab377d6c1968add
e9668c077e754ba1965b732ae39d3e79
932acdff15a247de8e68cd2e91e8c5cd
RX(theta₂)
bdac247370644483be6e4b2d60925292--932acdff15a247de8e68cd2e91e8c5cd
602a4de734684274a35fd46db7807e40
3
015bdfcedd5c4f01bb9c6614c51502bc
RY(theta₆)
932acdff15a247de8e68cd2e91e8c5cd--015bdfcedd5c4f01bb9c6614c51502bc
5a52d0dbc9f044bf9d6809248d865b53
RX(theta₁₀)
015bdfcedd5c4f01bb9c6614c51502bc--5a52d0dbc9f044bf9d6809248d865b53
5752590129ac43f4a662bb719481287e
5a52d0dbc9f044bf9d6809248d865b53--5752590129ac43f4a662bb719481287e
3ec2600b525d48aaa11229f2db1f45d2
X
5752590129ac43f4a662bb719481287e--3ec2600b525d48aaa11229f2db1f45d2
3ec2600b525d48aaa11229f2db1f45d2--c65284dfbf5d492a9b6eec25b0e172ed
daf259a9a552448b99431e66ebd29144
RX(theta₁₄)
3ec2600b525d48aaa11229f2db1f45d2--daf259a9a552448b99431e66ebd29144
9f04bcd33593485794d946f444838b1f
RY(theta₁₈)
daf259a9a552448b99431e66ebd29144--9f04bcd33593485794d946f444838b1f
24af917f6fd148c2bf569cd283629bf8
RX(theta₂₂)
9f04bcd33593485794d946f444838b1f--24af917f6fd148c2bf569cd283629bf8
040f74bd0cac422ca969d4ea8d26e29a
24af917f6fd148c2bf569cd283629bf8--040f74bd0cac422ca969d4ea8d26e29a
55e3dc17d5974974a1afd021187647f9
X
040f74bd0cac422ca969d4ea8d26e29a--55e3dc17d5974974a1afd021187647f9
55e3dc17d5974974a1afd021187647f9--6a524ad5601144d0983a3a9ed0e69d60
55e3dc17d5974974a1afd021187647f9--e9668c077e754ba1965b732ae39d3e79
3319f15cdaa54d86829428a8430b1bcc
5daf1ccd1437465791d7a2210f4efe10
RX(theta₃)
602a4de734684274a35fd46db7807e40--5daf1ccd1437465791d7a2210f4efe10
af3abc3e554a4e08b7b7f596f928a09f
RY(theta₇)
5daf1ccd1437465791d7a2210f4efe10--af3abc3e554a4e08b7b7f596f928a09f
a640ce7bc98a4b81beb5284b987a88f0
RX(theta₁₁)
af3abc3e554a4e08b7b7f596f928a09f--a640ce7bc98a4b81beb5284b987a88f0
77d2067af05441b88836a0d46aa4e318
X
a640ce7bc98a4b81beb5284b987a88f0--77d2067af05441b88836a0d46aa4e318
77d2067af05441b88836a0d46aa4e318--5752590129ac43f4a662bb719481287e
1eb36673496c46fd8c1a8b4df7b8066a
77d2067af05441b88836a0d46aa4e318--1eb36673496c46fd8c1a8b4df7b8066a
4e35c136a06d4377a01480c9dff4b48c
RX(theta₁₅)
1eb36673496c46fd8c1a8b4df7b8066a--4e35c136a06d4377a01480c9dff4b48c
71e4704f1cce4dcaa6a3186f2d3d0362
RY(theta₁₉)
4e35c136a06d4377a01480c9dff4b48c--71e4704f1cce4dcaa6a3186f2d3d0362
8d535361aa034419a69ba44584eec789
RX(theta₂₃)
71e4704f1cce4dcaa6a3186f2d3d0362--8d535361aa034419a69ba44584eec789
e2a9f9f288124dfc8522b00873f2f877
X
8d535361aa034419a69ba44584eec789--e2a9f9f288124dfc8522b00873f2f877
e2a9f9f288124dfc8522b00873f2f877--040f74bd0cac422ca969d4ea8d26e29a
771571c332be43ef9d1d3ff17e0a8816
e2a9f9f288124dfc8522b00873f2f877--771571c332be43ef9d1d3ff17e0a8816
771571c332be43ef9d1d3ff17e0a8816--3319f15cdaa54d86829428a8430b1bcc
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
cluster_4fc893fd704743eab92a2d066bd9e682
HEA
cluster_ce767151ff6245adbe431ee597ea165d
HEA
458f02583de04453a2ccdb0d378452be
0
2d2507987e784b30b1cffc5b4c883232
RX(theta₀)
458f02583de04453a2ccdb0d378452be--2d2507987e784b30b1cffc5b4c883232
2b96305c32a6466286a5f74368347825
1
a675650959a54a2193e2c601adeb79cd
RY(theta₄)
2d2507987e784b30b1cffc5b4c883232--a675650959a54a2193e2c601adeb79cd
8b571f3baf1b4873bb9cba736b8474ad
RX(theta₈)
a675650959a54a2193e2c601adeb79cd--8b571f3baf1b4873bb9cba736b8474ad
90ff5ff135b14327830e301f1f2f1aa3
8b571f3baf1b4873bb9cba736b8474ad--90ff5ff135b14327830e301f1f2f1aa3
196cf51f5d1946308223ce3bf3536ef6
90ff5ff135b14327830e301f1f2f1aa3--196cf51f5d1946308223ce3bf3536ef6
4c340d44741349d39c06482d480fb8bf
RX(theta₁₂)
196cf51f5d1946308223ce3bf3536ef6--4c340d44741349d39c06482d480fb8bf
5392eb8363bd41b298cd3843bb64df76
RY(theta₁₆)
4c340d44741349d39c06482d480fb8bf--5392eb8363bd41b298cd3843bb64df76
f14e115e7e154a2b8ce9c69fac5d63f7
RX(theta₂₀)
5392eb8363bd41b298cd3843bb64df76--f14e115e7e154a2b8ce9c69fac5d63f7
2d50da6c803648ac8e5a87c780fe48ce
f14e115e7e154a2b8ce9c69fac5d63f7--2d50da6c803648ac8e5a87c780fe48ce
e830295e86dc43d18fe9f7ec8a3b5835
2d50da6c803648ac8e5a87c780fe48ce--e830295e86dc43d18fe9f7ec8a3b5835
eae88a6b8e29416198c24805ffbe8ce6
RX(theta₀)
e830295e86dc43d18fe9f7ec8a3b5835--eae88a6b8e29416198c24805ffbe8ce6
24b13eabd89d46fdb08b453b30ca30ec
RY(theta₄)
eae88a6b8e29416198c24805ffbe8ce6--24b13eabd89d46fdb08b453b30ca30ec
f59fd3c40593422c92f1b06179848f6a
RX(theta₈)
24b13eabd89d46fdb08b453b30ca30ec--f59fd3c40593422c92f1b06179848f6a
67bbc9e40de041dea6262c3d1f7bf00a
f59fd3c40593422c92f1b06179848f6a--67bbc9e40de041dea6262c3d1f7bf00a
e2a5e86905224f468f62a9672eb2556d
67bbc9e40de041dea6262c3d1f7bf00a--e2a5e86905224f468f62a9672eb2556d
2e7957573f13488394fda8e1c90b94f6
RX(theta₁₂)
e2a5e86905224f468f62a9672eb2556d--2e7957573f13488394fda8e1c90b94f6
11692fdf8d2f4566b255770bb2b6c6dd
RY(theta₁₆)
2e7957573f13488394fda8e1c90b94f6--11692fdf8d2f4566b255770bb2b6c6dd
3746329ca8b344828e09f77d5d55c8a3
RX(theta₂₀)
11692fdf8d2f4566b255770bb2b6c6dd--3746329ca8b344828e09f77d5d55c8a3
7fab2a18f0aa455689344feb6a790259
3746329ca8b344828e09f77d5d55c8a3--7fab2a18f0aa455689344feb6a790259
ce99524f014642cf95cf36a11423e034
7fab2a18f0aa455689344feb6a790259--ce99524f014642cf95cf36a11423e034
b91d42d0f9ac4a04aff10b86d64022cd
ce99524f014642cf95cf36a11423e034--b91d42d0f9ac4a04aff10b86d64022cd
9883b66612ba4fcc8c4441ff5cf6821d
1bcaaf0085b343bbaa0a355adab0b6ca
RX(theta₁)
2b96305c32a6466286a5f74368347825--1bcaaf0085b343bbaa0a355adab0b6ca
333f5e2dc57849e6b908c4f5e35120d0
2
fc2b320cda8448779c937e99a811da12
RY(theta₅)
1bcaaf0085b343bbaa0a355adab0b6ca--fc2b320cda8448779c937e99a811da12
8213c186b83846c8ac8b767e4ef226aa
RX(theta₉)
fc2b320cda8448779c937e99a811da12--8213c186b83846c8ac8b767e4ef226aa
4ea6bca103184eeeab470278879b0d0e
X
8213c186b83846c8ac8b767e4ef226aa--4ea6bca103184eeeab470278879b0d0e
4ea6bca103184eeeab470278879b0d0e--90ff5ff135b14327830e301f1f2f1aa3
2e8ff725f38044648bbf0c6024175fc3
4ea6bca103184eeeab470278879b0d0e--2e8ff725f38044648bbf0c6024175fc3
8a25bb7382834d1b89dd5a4b9cbf358e
RX(theta₁₃)
2e8ff725f38044648bbf0c6024175fc3--8a25bb7382834d1b89dd5a4b9cbf358e
7688e3d6edb043e7b9ff9da86dea0829
RY(theta₁₇)
8a25bb7382834d1b89dd5a4b9cbf358e--7688e3d6edb043e7b9ff9da86dea0829
425ed1d74db140319ef1e046033be089
RX(theta₂₁)
7688e3d6edb043e7b9ff9da86dea0829--425ed1d74db140319ef1e046033be089
9a97480d1c344152945ba058d7aaca86
X
425ed1d74db140319ef1e046033be089--9a97480d1c344152945ba058d7aaca86
9a97480d1c344152945ba058d7aaca86--2d50da6c803648ac8e5a87c780fe48ce
6c0bf16889cd46d5bdfa8ce0fecd69f8
9a97480d1c344152945ba058d7aaca86--6c0bf16889cd46d5bdfa8ce0fecd69f8
28495d6eb6d64b3c916bd67e91207008
RX(theta₁)
6c0bf16889cd46d5bdfa8ce0fecd69f8--28495d6eb6d64b3c916bd67e91207008
2e3d140f098d4c9b984b1790bd84cb52
RY(theta₅)
28495d6eb6d64b3c916bd67e91207008--2e3d140f098d4c9b984b1790bd84cb52
4d05f2119523409c98821e2075bf5b83
RX(theta₉)
2e3d140f098d4c9b984b1790bd84cb52--4d05f2119523409c98821e2075bf5b83
5c20aa05028349b393b4f483e6f7645b
X
4d05f2119523409c98821e2075bf5b83--5c20aa05028349b393b4f483e6f7645b
5c20aa05028349b393b4f483e6f7645b--67bbc9e40de041dea6262c3d1f7bf00a
a945bde31df24de39a0ccf5ffb8a98e0
5c20aa05028349b393b4f483e6f7645b--a945bde31df24de39a0ccf5ffb8a98e0
568c9b7645034d7fa9c43666822e1ac2
RX(theta₁₃)
a945bde31df24de39a0ccf5ffb8a98e0--568c9b7645034d7fa9c43666822e1ac2
99b8b6eea1e2432f867081ba478c873a
RY(theta₁₇)
568c9b7645034d7fa9c43666822e1ac2--99b8b6eea1e2432f867081ba478c873a
033b36491dc744b697c1328873b7f13c
RX(theta₂₁)
99b8b6eea1e2432f867081ba478c873a--033b36491dc744b697c1328873b7f13c
43b242ebfb094a9eb1b234302b804fe4
X
033b36491dc744b697c1328873b7f13c--43b242ebfb094a9eb1b234302b804fe4
43b242ebfb094a9eb1b234302b804fe4--7fab2a18f0aa455689344feb6a790259
1aa948ef0470419ba6baf077b8f269c0
43b242ebfb094a9eb1b234302b804fe4--1aa948ef0470419ba6baf077b8f269c0
1aa948ef0470419ba6baf077b8f269c0--9883b66612ba4fcc8c4441ff5cf6821d
8b94e483bfc844b8b14925a7c5163763
45ebca45398443f8a3e6294971a1f831
RX(theta₂)
333f5e2dc57849e6b908c4f5e35120d0--45ebca45398443f8a3e6294971a1f831
9c6e11fb9e6d4b6299738254d7115f4e
3
bbed973a448245f6abdaa2817f65d2ea
RY(theta₆)
45ebca45398443f8a3e6294971a1f831--bbed973a448245f6abdaa2817f65d2ea
351daf3f1631464ca7b62ac31cf28252
RX(theta₁₀)
bbed973a448245f6abdaa2817f65d2ea--351daf3f1631464ca7b62ac31cf28252
d43315ab53084ec9973ba38f11f16fe7
351daf3f1631464ca7b62ac31cf28252--d43315ab53084ec9973ba38f11f16fe7
60a18ec75ea44de68a6214ac44a650e9
X
d43315ab53084ec9973ba38f11f16fe7--60a18ec75ea44de68a6214ac44a650e9
60a18ec75ea44de68a6214ac44a650e9--2e8ff725f38044648bbf0c6024175fc3
edffb138e55943869351f8d780f7e57c
RX(theta₁₄)
60a18ec75ea44de68a6214ac44a650e9--edffb138e55943869351f8d780f7e57c
231f531073b2416e81e6259097328377
RY(theta₁₈)
edffb138e55943869351f8d780f7e57c--231f531073b2416e81e6259097328377
82b14d95906245c3a4e80b774af3aabf
RX(theta₂₂)
231f531073b2416e81e6259097328377--82b14d95906245c3a4e80b774af3aabf
fc6d6ec61dc54914b30d902878c00a8c
82b14d95906245c3a4e80b774af3aabf--fc6d6ec61dc54914b30d902878c00a8c
02570a2964694b5cadf7131212adf135
X
fc6d6ec61dc54914b30d902878c00a8c--02570a2964694b5cadf7131212adf135
02570a2964694b5cadf7131212adf135--6c0bf16889cd46d5bdfa8ce0fecd69f8
35b57368ce0c4360be8a3fd0705428eb
RX(theta₂)
02570a2964694b5cadf7131212adf135--35b57368ce0c4360be8a3fd0705428eb
b1736ae3cc1748f3abf168a6ef780978
RY(theta₆)
35b57368ce0c4360be8a3fd0705428eb--b1736ae3cc1748f3abf168a6ef780978
d235ae1dc57f4a52a5b935ee002235e9
RX(theta₁₀)
b1736ae3cc1748f3abf168a6ef780978--d235ae1dc57f4a52a5b935ee002235e9
a482f23ad9b945cdbc1d66b1c14e8a4e
d235ae1dc57f4a52a5b935ee002235e9--a482f23ad9b945cdbc1d66b1c14e8a4e
54679484a0c44f3f8d2df55d437e657b
X
a482f23ad9b945cdbc1d66b1c14e8a4e--54679484a0c44f3f8d2df55d437e657b
54679484a0c44f3f8d2df55d437e657b--a945bde31df24de39a0ccf5ffb8a98e0
b6e7359a2b0949158b0a4d16e4ec1092
RX(theta₁₄)
54679484a0c44f3f8d2df55d437e657b--b6e7359a2b0949158b0a4d16e4ec1092
2174aad388434fec8159504799e854c1
RY(theta₁₈)
b6e7359a2b0949158b0a4d16e4ec1092--2174aad388434fec8159504799e854c1
8d6ff181de70409eaffb2b12942c88b6
RX(theta₂₂)
2174aad388434fec8159504799e854c1--8d6ff181de70409eaffb2b12942c88b6
6218cd6c5a384f0cae2de2587725ae70
8d6ff181de70409eaffb2b12942c88b6--6218cd6c5a384f0cae2de2587725ae70
304aa69823af44f4aa25bc08628d9a1b
X
6218cd6c5a384f0cae2de2587725ae70--304aa69823af44f4aa25bc08628d9a1b
304aa69823af44f4aa25bc08628d9a1b--1aa948ef0470419ba6baf077b8f269c0
304aa69823af44f4aa25bc08628d9a1b--8b94e483bfc844b8b14925a7c5163763
a492c3c085814bd69717407009da601a
468bc7fd24864add860d8afc736eed1d
RX(theta₃)
9c6e11fb9e6d4b6299738254d7115f4e--468bc7fd24864add860d8afc736eed1d
718036b21bd84a2e9752dbf5a68e568e
RY(theta₇)
468bc7fd24864add860d8afc736eed1d--718036b21bd84a2e9752dbf5a68e568e
7c74f58d21254179939b64980d5a811a
RX(theta₁₁)
718036b21bd84a2e9752dbf5a68e568e--7c74f58d21254179939b64980d5a811a
165c65f3fa6b4bb386c68fd9a5035ae5
X
7c74f58d21254179939b64980d5a811a--165c65f3fa6b4bb386c68fd9a5035ae5
165c65f3fa6b4bb386c68fd9a5035ae5--d43315ab53084ec9973ba38f11f16fe7
f0bf6c4995494a7199e794d31834742b
165c65f3fa6b4bb386c68fd9a5035ae5--f0bf6c4995494a7199e794d31834742b
e788e72c06364140a2146fc976a0b4bb
RX(theta₁₅)
f0bf6c4995494a7199e794d31834742b--e788e72c06364140a2146fc976a0b4bb
de51e61205be4ca194dd1ce81687b6d2
RY(theta₁₉)
e788e72c06364140a2146fc976a0b4bb--de51e61205be4ca194dd1ce81687b6d2
f0871531c1054e3fbb13dc83561c90bc
RX(theta₂₃)
de51e61205be4ca194dd1ce81687b6d2--f0871531c1054e3fbb13dc83561c90bc
0283459606ba4c64b41968798a6735df
X
f0871531c1054e3fbb13dc83561c90bc--0283459606ba4c64b41968798a6735df
0283459606ba4c64b41968798a6735df--fc6d6ec61dc54914b30d902878c00a8c
92444c4fb42f443c8fc80aa5ea3d1b5c
0283459606ba4c64b41968798a6735df--92444c4fb42f443c8fc80aa5ea3d1b5c
263086ebd2aa428391e52ddd141d4a29
RX(theta₃)
92444c4fb42f443c8fc80aa5ea3d1b5c--263086ebd2aa428391e52ddd141d4a29
6d669583cd5646de9cfb20f6d2a3e9da
RY(theta₇)
263086ebd2aa428391e52ddd141d4a29--6d669583cd5646de9cfb20f6d2a3e9da
0012c9047f4c4486b933c88d290d6a6d
RX(theta₁₁)
6d669583cd5646de9cfb20f6d2a3e9da--0012c9047f4c4486b933c88d290d6a6d
ab55974b3aef40cca526f3824356b8f8
X
0012c9047f4c4486b933c88d290d6a6d--ab55974b3aef40cca526f3824356b8f8
ab55974b3aef40cca526f3824356b8f8--a482f23ad9b945cdbc1d66b1c14e8a4e
462c6db0f9464898824f93121d097322
ab55974b3aef40cca526f3824356b8f8--462c6db0f9464898824f93121d097322
705579b5307a471aab741ecf3af58623
RX(theta₁₅)
462c6db0f9464898824f93121d097322--705579b5307a471aab741ecf3af58623
875462be9ae74a7583e5fc74dcaf4f20
RY(theta₁₉)
705579b5307a471aab741ecf3af58623--875462be9ae74a7583e5fc74dcaf4f20
727076747e584f82aa4afff23c01ba89
RX(theta₂₃)
875462be9ae74a7583e5fc74dcaf4f20--727076747e584f82aa4afff23c01ba89
513ae743a59a452dbf63b7358c41c457
X
727076747e584f82aa4afff23c01ba89--513ae743a59a452dbf63b7358c41c457
513ae743a59a452dbf63b7358c41c457--6218cd6c5a384f0cae2de2587725ae70
6a6ac970341a46ebb449abf2b3815f5c
513ae743a59a452dbf63b7358c41c457--6a6ac970341a46ebb449abf2b3815f5c
6a6ac970341a46ebb449abf2b3815f5c--a492c3c085814bd69717407009da601a
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
cluster_21f32c9f94cd4e0c83e3d9370a523c43
HEA
cluster_f896c0172c904a0eb07d90955f0a3b99
HEA
fca6c0d9175545b8a7b72e269d942014
0
1a8f485ef30c455795676c5a8cbcd4ed
RX(p1₀)
fca6c0d9175545b8a7b72e269d942014--1a8f485ef30c455795676c5a8cbcd4ed
4f97b7b74e3f4dff9f5ad455d999c1cc
1
4635600dc82d4d27a93dcf0569f9695b
RY(p1₄)
1a8f485ef30c455795676c5a8cbcd4ed--4635600dc82d4d27a93dcf0569f9695b
e788832a00a145a7a7203a1c0b14f3e2
RX(p1₈)
4635600dc82d4d27a93dcf0569f9695b--e788832a00a145a7a7203a1c0b14f3e2
86f70e1c2b5f40eda2d41596775b19b1
e788832a00a145a7a7203a1c0b14f3e2--86f70e1c2b5f40eda2d41596775b19b1
42964429c10a43b7b362717d1707b740
86f70e1c2b5f40eda2d41596775b19b1--42964429c10a43b7b362717d1707b740
5fa55a8f981b46d482445257f2a370d6
RX(p1₁₂)
42964429c10a43b7b362717d1707b740--5fa55a8f981b46d482445257f2a370d6
cd783534fb084c048207832da6741f15
RY(p1₁₆)
5fa55a8f981b46d482445257f2a370d6--cd783534fb084c048207832da6741f15
7b45e4d97be64bd49cf65027ab656ef0
RX(p1₂₀)
cd783534fb084c048207832da6741f15--7b45e4d97be64bd49cf65027ab656ef0
c50fdde4ab8b4f7f9b6ad3d8705455f6
7b45e4d97be64bd49cf65027ab656ef0--c50fdde4ab8b4f7f9b6ad3d8705455f6
017701b2d4c04702a898687efe765981
c50fdde4ab8b4f7f9b6ad3d8705455f6--017701b2d4c04702a898687efe765981
1c790891bf7d4e929e18ce0e88187d6e
RX(p2₀)
017701b2d4c04702a898687efe765981--1c790891bf7d4e929e18ce0e88187d6e
eefd91329df24f06987ba45cda280d3e
RY(p2₄)
1c790891bf7d4e929e18ce0e88187d6e--eefd91329df24f06987ba45cda280d3e
6f6fc087d75549e59d12e81008931535
RX(p2₈)
eefd91329df24f06987ba45cda280d3e--6f6fc087d75549e59d12e81008931535
218bdf17aaeb44be99e554160983a20d
6f6fc087d75549e59d12e81008931535--218bdf17aaeb44be99e554160983a20d
e832cebc27d04f9c81311e23cb093443
218bdf17aaeb44be99e554160983a20d--e832cebc27d04f9c81311e23cb093443
022a67790c1241b6bbbdbc6bee3942d1
RX(p2₁₂)
e832cebc27d04f9c81311e23cb093443--022a67790c1241b6bbbdbc6bee3942d1
10e809013f334c8d86c3602d343b3720
RY(p2₁₆)
022a67790c1241b6bbbdbc6bee3942d1--10e809013f334c8d86c3602d343b3720
ddf885b4e7c44c60be71e85c74875e6f
RX(p2₂₀)
10e809013f334c8d86c3602d343b3720--ddf885b4e7c44c60be71e85c74875e6f
fff0d8cf66b444f8b872a1559fb3bdf1
ddf885b4e7c44c60be71e85c74875e6f--fff0d8cf66b444f8b872a1559fb3bdf1
ff2bf515807d4d68807b2fb32273d3cb
fff0d8cf66b444f8b872a1559fb3bdf1--ff2bf515807d4d68807b2fb32273d3cb
ea95d19edb3f48cc9f1602b27a513088
ff2bf515807d4d68807b2fb32273d3cb--ea95d19edb3f48cc9f1602b27a513088
015f68effd414f67a412a9e9efb9a463
8e6743229c57415da9f25bf48ef8dce4
RX(p1₁)
4f97b7b74e3f4dff9f5ad455d999c1cc--8e6743229c57415da9f25bf48ef8dce4
8e6ab565a8324561a645cef738f8246a
2
0a791f3be67f4b7ea8c6456a5466e452
RY(p1₅)
8e6743229c57415da9f25bf48ef8dce4--0a791f3be67f4b7ea8c6456a5466e452
691c62c43b9c489c8c1811827c58adda
RX(p1₉)
0a791f3be67f4b7ea8c6456a5466e452--691c62c43b9c489c8c1811827c58adda
0f9100f2e00946fb89f7a312ecb486b7
X
691c62c43b9c489c8c1811827c58adda--0f9100f2e00946fb89f7a312ecb486b7
0f9100f2e00946fb89f7a312ecb486b7--86f70e1c2b5f40eda2d41596775b19b1
7512ac80c63c44b9acb5f3d98f68b058
0f9100f2e00946fb89f7a312ecb486b7--7512ac80c63c44b9acb5f3d98f68b058
e3dc8be83f404300ae3a48798fcb5958
RX(p1₁₃)
7512ac80c63c44b9acb5f3d98f68b058--e3dc8be83f404300ae3a48798fcb5958
2023b9bdffd94f8493930587be11eed9
RY(p1₁₇)
e3dc8be83f404300ae3a48798fcb5958--2023b9bdffd94f8493930587be11eed9
38dff85ecd9f45b58c06c0d045b1f34f
RX(p1₂₁)
2023b9bdffd94f8493930587be11eed9--38dff85ecd9f45b58c06c0d045b1f34f
9c59477cccf84cdabf107bbc3b5c9a01
X
38dff85ecd9f45b58c06c0d045b1f34f--9c59477cccf84cdabf107bbc3b5c9a01
9c59477cccf84cdabf107bbc3b5c9a01--c50fdde4ab8b4f7f9b6ad3d8705455f6
bc5a48223767419cb1cab791cc31185f
9c59477cccf84cdabf107bbc3b5c9a01--bc5a48223767419cb1cab791cc31185f
491f83e8f89d4e429a62fd07cb43e6df
RX(p2₁)
bc5a48223767419cb1cab791cc31185f--491f83e8f89d4e429a62fd07cb43e6df
1391fd34102d420f93db31000d93b96f
RY(p2₅)
491f83e8f89d4e429a62fd07cb43e6df--1391fd34102d420f93db31000d93b96f
400033b4d1d5451dbd790eaa8c2b34af
RX(p2₉)
1391fd34102d420f93db31000d93b96f--400033b4d1d5451dbd790eaa8c2b34af
70b8b01d4e9c4b9aad6cb8f5920e5ba9
X
400033b4d1d5451dbd790eaa8c2b34af--70b8b01d4e9c4b9aad6cb8f5920e5ba9
70b8b01d4e9c4b9aad6cb8f5920e5ba9--218bdf17aaeb44be99e554160983a20d
cd9a0da40415408c8f3cb7bb4c713467
70b8b01d4e9c4b9aad6cb8f5920e5ba9--cd9a0da40415408c8f3cb7bb4c713467
b0c138736fc5415f9a9a31d7bfbff069
RX(p2₁₃)
cd9a0da40415408c8f3cb7bb4c713467--b0c138736fc5415f9a9a31d7bfbff069
2c34d36ee7a64572889bfc59e7d13af0
RY(p2₁₇)
b0c138736fc5415f9a9a31d7bfbff069--2c34d36ee7a64572889bfc59e7d13af0
0b7772e335f04f41804f7b76bcc9999f
RX(p2₂₁)
2c34d36ee7a64572889bfc59e7d13af0--0b7772e335f04f41804f7b76bcc9999f
d7160f36cd3e466db38dfd23e650ea5f
X
0b7772e335f04f41804f7b76bcc9999f--d7160f36cd3e466db38dfd23e650ea5f
d7160f36cd3e466db38dfd23e650ea5f--fff0d8cf66b444f8b872a1559fb3bdf1
7e025c2a89e54e13a71b751f3320b71f
d7160f36cd3e466db38dfd23e650ea5f--7e025c2a89e54e13a71b751f3320b71f
7e025c2a89e54e13a71b751f3320b71f--015f68effd414f67a412a9e9efb9a463
d44426e9f73f4d8bad68625b89cf646b
12543e895dcd4e29a8b7d525205472b0
RX(p1₂)
8e6ab565a8324561a645cef738f8246a--12543e895dcd4e29a8b7d525205472b0
3cf511aa70ce46b3ad260bfad7623bb1
3
89bc647f37e94dc486420f4b0970720c
RY(p1₆)
12543e895dcd4e29a8b7d525205472b0--89bc647f37e94dc486420f4b0970720c
0d2f331788624d659c2e09c424a003f2
RX(p1₁₀)
89bc647f37e94dc486420f4b0970720c--0d2f331788624d659c2e09c424a003f2
62896e4f289049d394033f30228669d0
0d2f331788624d659c2e09c424a003f2--62896e4f289049d394033f30228669d0
044e3e80400e48998c8ce3c13cf38361
X
62896e4f289049d394033f30228669d0--044e3e80400e48998c8ce3c13cf38361
044e3e80400e48998c8ce3c13cf38361--7512ac80c63c44b9acb5f3d98f68b058
0a4825f8d0f14fb48d569755b327def8
RX(p1₁₄)
044e3e80400e48998c8ce3c13cf38361--0a4825f8d0f14fb48d569755b327def8
c4ebd850d75f446daa6bb8b92acdef3b
RY(p1₁₈)
0a4825f8d0f14fb48d569755b327def8--c4ebd850d75f446daa6bb8b92acdef3b
bb4e66eb86e14a3887ae3930ac97e3cf
RX(p1₂₂)
c4ebd850d75f446daa6bb8b92acdef3b--bb4e66eb86e14a3887ae3930ac97e3cf
28189d5f46b24944953cc1afa9f1d2ff
bb4e66eb86e14a3887ae3930ac97e3cf--28189d5f46b24944953cc1afa9f1d2ff
28e071a2ef41456f8bc5a1ae8a3b6114
X
28189d5f46b24944953cc1afa9f1d2ff--28e071a2ef41456f8bc5a1ae8a3b6114
28e071a2ef41456f8bc5a1ae8a3b6114--bc5a48223767419cb1cab791cc31185f
5b23c17a309844cebe4842ad565dfc51
RX(p2₂)
28e071a2ef41456f8bc5a1ae8a3b6114--5b23c17a309844cebe4842ad565dfc51
10840953724243babc8937da339ce457
RY(p2₆)
5b23c17a309844cebe4842ad565dfc51--10840953724243babc8937da339ce457
4f6e817248e4468692c69df44a5fc1c1
RX(p2₁₀)
10840953724243babc8937da339ce457--4f6e817248e4468692c69df44a5fc1c1
976be0b88f2f46ada0f7b25856b84f5c
4f6e817248e4468692c69df44a5fc1c1--976be0b88f2f46ada0f7b25856b84f5c
8d6a7722904c4a8797fb3f96b0a7ee80
X
976be0b88f2f46ada0f7b25856b84f5c--8d6a7722904c4a8797fb3f96b0a7ee80
8d6a7722904c4a8797fb3f96b0a7ee80--cd9a0da40415408c8f3cb7bb4c713467
bf19b5e89bfc44bc97ed084ac2aff031
RX(p2₁₄)
8d6a7722904c4a8797fb3f96b0a7ee80--bf19b5e89bfc44bc97ed084ac2aff031
edc1950c99424423bba9944182499cc1
RY(p2₁₈)
bf19b5e89bfc44bc97ed084ac2aff031--edc1950c99424423bba9944182499cc1
ae80834ece0841d28880281fa365822d
RX(p2₂₂)
edc1950c99424423bba9944182499cc1--ae80834ece0841d28880281fa365822d
ffbc80f06afd479da2d82013e66fa3cf
ae80834ece0841d28880281fa365822d--ffbc80f06afd479da2d82013e66fa3cf
fcfcd54062dd4f3287636644d5304fea
X
ffbc80f06afd479da2d82013e66fa3cf--fcfcd54062dd4f3287636644d5304fea
fcfcd54062dd4f3287636644d5304fea--7e025c2a89e54e13a71b751f3320b71f
fcfcd54062dd4f3287636644d5304fea--d44426e9f73f4d8bad68625b89cf646b
f5d2958d971045fbac6b9a6b5529d218
da3ff19fecd34581a1fe6db5ce6ef106
RX(p1₃)
3cf511aa70ce46b3ad260bfad7623bb1--da3ff19fecd34581a1fe6db5ce6ef106
86b9699df9c54352a1e17eb634d3267f
RY(p1₇)
da3ff19fecd34581a1fe6db5ce6ef106--86b9699df9c54352a1e17eb634d3267f
827c048020134a40a7744ce73e0ed778
RX(p1₁₁)
86b9699df9c54352a1e17eb634d3267f--827c048020134a40a7744ce73e0ed778
0dd23a04e20b45d68ff123df5e42017c
X
827c048020134a40a7744ce73e0ed778--0dd23a04e20b45d68ff123df5e42017c
0dd23a04e20b45d68ff123df5e42017c--62896e4f289049d394033f30228669d0
653fbcfe7f854848818896df56cf1bfd
0dd23a04e20b45d68ff123df5e42017c--653fbcfe7f854848818896df56cf1bfd
43629b9ab572477b968793501abe3cc4
RX(p1₁₅)
653fbcfe7f854848818896df56cf1bfd--43629b9ab572477b968793501abe3cc4
a485c2d6d32c4467845afcde551ac90b
RY(p1₁₉)
43629b9ab572477b968793501abe3cc4--a485c2d6d32c4467845afcde551ac90b
f79d993645e2407aa003faa153e0efb6
RX(p1₂₃)
a485c2d6d32c4467845afcde551ac90b--f79d993645e2407aa003faa153e0efb6
1e696bbf4a3f498faa308ba186e611d4
X
f79d993645e2407aa003faa153e0efb6--1e696bbf4a3f498faa308ba186e611d4
1e696bbf4a3f498faa308ba186e611d4--28189d5f46b24944953cc1afa9f1d2ff
25949a531ff04202b8fb4e1dd1bb99e0
1e696bbf4a3f498faa308ba186e611d4--25949a531ff04202b8fb4e1dd1bb99e0
5f68208ff4f54003bf2b9766078a11db
RX(p2₃)
25949a531ff04202b8fb4e1dd1bb99e0--5f68208ff4f54003bf2b9766078a11db
790927182e3b4fa1943a766f5a62da50
RY(p2₇)
5f68208ff4f54003bf2b9766078a11db--790927182e3b4fa1943a766f5a62da50
0012a634d899486a815618e8aa00c382
RX(p2₁₁)
790927182e3b4fa1943a766f5a62da50--0012a634d899486a815618e8aa00c382
df2ec0bffd904473ac60f74c313bfe88
X
0012a634d899486a815618e8aa00c382--df2ec0bffd904473ac60f74c313bfe88
df2ec0bffd904473ac60f74c313bfe88--976be0b88f2f46ada0f7b25856b84f5c
316e4d3890bb4bd298183642df7b5e3d
df2ec0bffd904473ac60f74c313bfe88--316e4d3890bb4bd298183642df7b5e3d
0a3e8ca69c534444ae7f92555f656bea
RX(p2₁₅)
316e4d3890bb4bd298183642df7b5e3d--0a3e8ca69c534444ae7f92555f656bea
529bae1b2152417e82af68b0628fd4d3
RY(p2₁₉)
0a3e8ca69c534444ae7f92555f656bea--529bae1b2152417e82af68b0628fd4d3
11a0686e5183499db7c5336573595b52
RX(p2₂₃)
529bae1b2152417e82af68b0628fd4d3--11a0686e5183499db7c5336573595b52
e7b0e11fa0824f7caf86604e2b91bf48
X
11a0686e5183499db7c5336573595b52--e7b0e11fa0824f7caf86604e2b91bf48
e7b0e11fa0824f7caf86604e2b91bf48--ffbc80f06afd479da2d82013e66fa3cf
fab904ab4f564496bb9f3ad672b33000
e7b0e11fa0824f7caf86604e2b91bf48--fab904ab4f564496bb9f3ad672b33000
fab904ab4f564496bb9f3ad672b33000--f5d2958d971045fbac6b9a6b5529d218
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.3895 ] )) , (' t he ta _ 0 ' , tens or( [ 0.4551 ] )) , (' t he ta _ 1 ' , tens or( [ 0.7825 ] )) , (' t he ta _ 10 ' , tens or( [ 0.1377 ] )) , (' t he ta _ 11 ' , tens or( [ 0.7968 ] )) , (' t he ta _ 12 ' , tens or( [ 0.6814 ] )) , (' t he ta _ 13 ' , tens or( [ 0.4033 ] )) , (' t he ta _ 14 ' , tens or( [ 0.0888 ] )) , (' t he ta _ 15 ' , tens or( [ 0.6925 ] )) , (' t he ta _ 16 ' , tens or( [ 0.4299 ] )) , (' t he ta _ 17 ' , tens or( [ 0.5076 ] )) , (' t he ta _ 18 ' , tens or( [ 0.4307 ] )) , (' t he ta _ 19 ' , tens or( [ 0.2949 ] )) , (' t he ta _ 2 ' , tens or( [ 0.3586 ] )) , (' t he ta _ 20 ' , tens or( [ 0.6062 ] )) , (' t he ta _ 21 ' , tens or( [ 0.2323 ] )) , (' t he ta _ 22 ' , tens or( [ 0.2774 ] )) , (' t he ta _ 23 ' , tens or( [ 0.5284 ] )) , (' t he ta _ 3 ' , tens or( [ 0.7807 ] )) , (' t he ta _ 4 ' , tens or( [ 0.7496 ] )) , (' t he ta _ 5 ' , tens or( [ 0.9792 ] )) , (' t he ta _ 6 ' , tens or( [ 0.6042 ] )) , (' t he ta _ 7 ' , tens or( [ 0.6899 ] )) , (' t he ta _ 8 ' , tens or( [ 0.2853 ] )) , (' t he ta _ 9 ' , tens or( [ 0.9198 ] )) ] )
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.3885 ] )) , (' t he ta _ 0 ' , tens or( [ 0.4541 ] )) , (' t he ta _ 1 ' , tens or( [ 0.7835 ] )) , (' t he ta _ 10 ' , tens or( [ 0.1387 ] )) , (' t he ta _ 11 ' , tens or( [ 0.7958 ] )) , (' t he ta _ 12 ' , tens or( [ 0.6804 ] )) , (' t he ta _ 13 ' , tens or( [ 0.4043 ] )) , (' t he ta _ 14 ' , tens or( [ 0.0898 ] )) , (' t he ta _ 15 ' , tens or( [ 0.6915 ] )) , (' t he ta _ 16 ' , tens or( [ 0.4289 ] )) , (' t he ta _ 17 ' , tens or( [ 0.5086 ] )) , (' t he ta _ 18 ' , tens or( [ 0.4297 ] )) , (' t he ta _ 19 ' , tens or( [ 0.2959 ] )) , (' t he ta _ 2 ' , tens or( [ 0.3596 ] )) , (' t he ta _ 20 ' , tens or( [ 0.6052 ] )) , (' t he ta _ 21 ' , tens or( [ 0.2333 ] )) , (' t he ta _ 22 ' , tens or( [ 0.2784 ] )) , (' t he ta _ 23 ' , tens or( [ 0.5274 ] )) , (' t he ta _ 3 ' , tens or( [ 0.7797 ] )) , (' t he ta _ 4 ' , tens or( [ 0.7486 ] )) , (' t he ta _ 5 ' , tens or( [ 0.9782 ] )) , (' t he ta _ 6 ' , tens or( [ 0.6052 ] )) , (' t he ta _ 7 ' , tens or( [ 0.6909 ] )) , (' t he ta _ 8 ' , tens or( [ 0.2843 ] )) , (' t he ta _ 9 ' , tens or( [ 0.9208 ] )) ] )
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 ]] )